Package wal
Overview ▹
Index ▹
Variables
var (
// SegmentSizeBytes is the preallocated size of each wal segment file.
// The actual size might be larger than this. In general, the default
// value should be used, but this is defined as an exported variable
// so that tests can set a different segment size.
SegmentSizeBytes int64 = 64 * 1000 * 1000 // 64MB
ErrMetadataConflict = errors.New("wal: conflicting metadata found")
ErrFileNotFound = errors.New("wal: file not found")
ErrCRCMismatch = errors.New("wal: crc mismatch")
ErrSnapshotMismatch = errors.New("wal: snapshot mismatch")
ErrSnapshotNotFound = errors.New("wal: snapshot not found")
)
func Exist ¶
func Exist(dirpath string) bool
func Repair ¶
func Repair(dirpath string) bool
Repair tries to repair ErrUnexpectedEOF in the last wal file by truncating.
type WAL ¶
WAL is a logical representation of the stable storage. WAL is either in read mode or append mode but not both. A newly created WAL is in append mode, and ready for appending records. A just opened WAL is in read mode, and ready for reading records. The WAL will be ready for appending after reading out all the previous records.
type WAL struct {
// contains filtered or unexported fields
}
func Create ¶
func Create(dirpath string, metadata []byte) (*WAL, error)
Create creates a WAL ready for appending records. The given metadata is recorded at the head of each WAL file, and can be retrieved with ReadAll.
func Open ¶
func Open(dirpath string, snap walpb.Snapshot) (*WAL, error)
Open opens the WAL at the given snap. The snap SHOULD have been previously saved to the WAL, or the following ReadAll will fail. The returned WAL is ready to read and the first record will be the one after the given snap. The WAL cannot be appended to before reading out all of its previous records.
func OpenForRead ¶
func OpenForRead(dirpath string, snap walpb.Snapshot) (*WAL, error)
OpenForRead only opens the wal files for read. Write on a read only wal panics.
func (*WAL) Close ¶
func (w *WAL) Close() error
func (*WAL) ReadAll ¶
func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb.Entry, err error)
ReadAll reads out records of the current WAL. If opened in write mode, it must read out all records until EOF. Or an error will be returned. If opened in read mode, it will try to read all records if possible. If it cannot read out the expected snap, it will return ErrSnapshotNotFound. If loaded snap doesn't match with the expected one, it will return all the records and error ErrSnapshotMismatch. TODO: detect not-last-snap error. TODO: maybe loose the checking of match. After ReadAll, the WAL will be ready for appending new records.
func (*WAL) ReleaseLockTo ¶
func (w *WAL) ReleaseLockTo(index uint64) error
ReleaseLockTo releases the locks, which has smaller index than the given index except the largest one among them. For example, if WAL is holding lock 1,2,3,4,5,6, ReleaseLockTo(4) will release lock 1,2 but keep 3. ReleaseLockTo(5) will release 1,2,3 but keep 4.
func (*WAL) Save ¶
func (w *WAL) Save(st raftpb.HardState, ents []raftpb.Entry) error
func (*WAL) SaveSnapshot ¶
func (w *WAL) SaveSnapshot(e walpb.Snapshot) error
ActiveGo 1.8