27 lines
568 B
Go
27 lines
568 B
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
)
|
|
|
|
// Ready 检查读写库可用且写入队列未因磁盘类失败进入 busy。
|
|
func (d *DB) Ready(ctx context.Context) error {
|
|
if d == nil || d.Write == nil || d.Read == nil {
|
|
return errors.New("store: not open")
|
|
}
|
|
if err := d.Write.PingContext(ctx); err != nil {
|
|
return err
|
|
}
|
|
if err := d.Read.PingContext(ctx); err != nil {
|
|
return err
|
|
}
|
|
if d.Queue != nil && !d.Queue.IsReady() {
|
|
if err := d.Queue.LastWriteError(); err != nil {
|
|
return errors.Join(ErrBusy, err)
|
|
}
|
|
return ErrBusy
|
|
}
|
|
return nil
|
|
}
|