Documentation
¶
Overview ¶
Package logdb implements the persistent log storage used by Dragonboat.
This package is internally used by Dragonboat, applications are not expected to import this package.
Index ¶
- Constants
- Variables
- func OpenLogDB(dirs []string, lowLatencyDirs []string) (raftio.ILogDB, error)
- type IKvStore
- type IWriteBatch
- type LogReader
- func (lr *LogReader) Append(entries []pb.Entry) error
- func (lr *LogReader) ApplySnapshot(snapshot pb.Snapshot) error
- func (lr *LogReader) Compact(index uint64) error
- func (lr *LogReader) CreateSnapshot(snapshot pb.Snapshot) error
- func (lr *LogReader) Entries(low uint64, high uint64, maxSize uint64) ([]pb.Entry, error)
- func (lr *LogReader) GetRange() (uint64, uint64)
- func (lr *LogReader) NodeState() (pb.State, pb.Membership)
- func (lr *LogReader) SetRange(firstIndex uint64, length uint64)
- func (lr *LogReader) SetState(s pb.State)
- func (lr *LogReader) Snapshot() pb.Snapshot
- func (lr *LogReader) Term(index uint64) (uint64, error)
- type PooledKey
- func (k *PooledKey) Key() []byte
- func (k *PooledKey) Release()
- func (k *PooledKey) SetEntryBatchKey(clusterID uint64, nodeID uint64, batchID uint64)
- func (k *PooledKey) SetEntryKey(clusterID uint64, nodeID uint64, index uint64)
- func (k *PooledKey) SetMaxIndexKey(clusterID uint64, nodeID uint64)
- func (k *PooledKey) SetStateKey(clusterID uint64, nodeID uint64)
- type RDB
- type ShardedRDB
- func (mw *ShardedRDB) Close()
- func (mw *ShardedRDB) DeleteSnapshot(clusterID uint64, nodeID uint64, snapshotIndex uint64) error
- func (mw *ShardedRDB) GetBootstrapInfo(clusterID uint64, nodeID uint64) (*pb.Bootstrap, error)
- func (mw *ShardedRDB) GetLogDBThreadContext() raftio.IContext
- func (mw *ShardedRDB) IterateEntries(ents []pb.Entry, size uint64, clusterID uint64, nodeID uint64, low uint64, ...) ([]pb.Entry, uint64, error)
- func (mw *ShardedRDB) ListNodeInfo() ([]raftio.NodeInfo, error)
- func (mw *ShardedRDB) ListSnapshots(clusterID uint64, nodeID uint64) ([]pb.Snapshot, error)
- func (mw *ShardedRDB) Name() string
- func (mw *ShardedRDB) ReadRaftState(clusterID uint64, nodeID uint64, lastIndex uint64) (*raftio.RaftState, error)
- func (mw *ShardedRDB) RemoveEntriesTo(clusterID uint64, nodeID uint64, index uint64) error
- func (mw *ShardedRDB) SaveBootstrapInfo(clusterID uint64, nodeID uint64, bootstrap pb.Bootstrap) error
- func (mw *ShardedRDB) SaveRaftState(updates []pb.Update, ctx raftio.IContext) error
- func (mw *ShardedRDB) SaveSnapshots(updates []pb.Update) error
Constants ¶
const (
// LogDBType is the logdb type name
LogDBType = "sharded-rocksdb"
)
const ( // RDBPatched defines Whether rocksdb is dragonboat patched. RDBPatched = false )
Variables ¶
var ( // RDBContextValueSize defines the size of byte array managed in RDB context. RDBContextValueSize uint64 = 1024 * 1024 * 64 )
Functions ¶
Types ¶
type IKvStore ¶
type IKvStore interface {
// Name is the IKvStore name.
Name() string
// Close closes the underlying Key-Value store.
Close() error
// IterateValue iterates the key range specified by the first key fk and
// last key lk. The inc boolean flag indicates whether it is inclusive for
// the last key lk. For each iterated entry, the specified op will be invoked
// on that key-value pair, the specified op func returns a boolean flag to
// indicate whether IterateValue should continue to iterate entries.
IterateValue(fk []byte,
lk []byte, inc bool, op func(key []byte, data []byte) (bool, error))
// GetValue queries the value specified the input key, the returned value
// byte slice is passed to the specified op func.
GetValue(key []byte, op func([]byte) error) error
// Save value saves the specified key value pair to the underlying key-value
// pair.
SaveValue(key []byte, value []byte) error
// DeleteValue deletes the key-value pair specified by the input key.
DeleteValue(key []byte) error
// GetWriteBatch returns an IWriteBatch object to be used by RDB.
GetWriteBatch(ctx raftio.IContext) IWriteBatch
// CommitWriteBatch atomically writes everything included in the write batch
// to the underlying key-value store.
CommitWriteBatch(wb IWriteBatch) error
// RemoveEntries removes entries specified by the range [firstKey, lastKey).
// RemoveEntries is called in the main execution thread of raft, it is
// suppose to immediately return without significant delay.
RemoveEntries(firstKey []byte, lastKey []byte) error
// Compaction is called by the compaction goroutine to compact the key-value
// store for the specified range [firstKey, lastKey). This method is expected
// to complete in the order of seconds.
Compaction(firstKey []byte, lastKey []byte) error
}
IKvStore is the interface used by the RDB struct to access the underlying Key-Value store.
type IWriteBatch ¶
IWriteBatch is the interface representing a write batch capable of atomically writing many key-value pairs to the key-value store.
type LogReader ¶
LogReader is the struct used to manage logs that have already been persisted into LogDB. This implementation is influenced by CockroachDB's replicaRaftStorage.
func NewLogReader ¶
NewLogReader creates and returns a new LogReader instance.
func (*LogReader) Append ¶
Append marks the specified entries as persisted and make them available from logreader.
func (*LogReader) ApplySnapshot ¶
ApplySnapshot applies the specified snapshot.
func (*LogReader) CreateSnapshot ¶
CreateSnapshot keeps the metadata of the specified snapshot.
func (*LogReader) Entries ¶
Entries returns persisted entries between [low, high) with a total limit of up to maxSize bytes.
func (*LogReader) GetRange ¶
GetRange returns the index range of all logs managed by the LogReader instance.
func (*LogReader) NodeState ¶
func (lr *LogReader) NodeState() (pb.State, pb.Membership)
NodeState returns the initial state.
type PooledKey ¶
type PooledKey struct {
// contains filtered or unexported fields
}
PooledKey represents keys that are managed by a sync.Pool to be reused.
func (*PooledKey) SetEntryBatchKey ¶
SetEntryBatchKey sets the key value opf the entry batch.
func (*PooledKey) SetEntryKey ¶
SetEntryKey sets the key value to the specified entry key.
func (*PooledKey) SetMaxIndexKey ¶
SetMaxIndexKey sets the key value to the max index record key.
func (*PooledKey) SetStateKey ¶
SetStateKey sets the key value to the specified State.
type RDB ¶
type RDB struct {
// contains filtered or unexported fields
}
RDB is the struct used to manage rocksdb backed persistent Log stores.
type ShardedRDB ¶
type ShardedRDB struct {
// contains filtered or unexported fields
}
ShardedRDB is a LogDB implementation using sharded rocksdb instances.
func OpenShardedRDB ¶
func OpenShardedRDB(dirs []string, lldirs []string) (*ShardedRDB, error)
OpenShardedRDB creates a ShardedRDB instance.
func (*ShardedRDB) DeleteSnapshot ¶
func (mw *ShardedRDB) DeleteSnapshot(clusterID uint64, nodeID uint64, snapshotIndex uint64) error
DeleteSnapshot removes the specified snapshot metadata from the log db.
func (*ShardedRDB) GetBootstrapInfo ¶
GetBootstrapInfo returns the saved bootstrap info for the given node.
func (*ShardedRDB) GetLogDBThreadContext ¶
func (mw *ShardedRDB) GetLogDBThreadContext() raftio.IContext
GetLogDBThreadContext return a IContext instance.
func (*ShardedRDB) IterateEntries ¶
func (mw *ShardedRDB) IterateEntries(ents []pb.Entry, size uint64, clusterID uint64, nodeID uint64, low uint64, high uint64, maxSize uint64) ([]pb.Entry, uint64, error)
IterateEntries returns a list of saved entries starting with index low up to index high with a max size of maxSize.
func (*ShardedRDB) ListNodeInfo ¶
func (mw *ShardedRDB) ListNodeInfo() ([]raftio.NodeInfo, error)
ListNodeInfo lists all available NodeInfo found in the log db.
func (*ShardedRDB) ListSnapshots ¶
ListSnapshots lists all available snapshots associated with the specified raft node.
func (*ShardedRDB) Name ¶
func (mw *ShardedRDB) Name() string
Name returns the type name of the instance.
func (*ShardedRDB) ReadRaftState ¶
func (mw *ShardedRDB) ReadRaftState(clusterID uint64, nodeID uint64, lastIndex uint64) (*raftio.RaftState, error)
ReadRaftState returns the persistent state of the specified raft node.
func (*ShardedRDB) RemoveEntriesTo ¶
func (mw *ShardedRDB) RemoveEntriesTo(clusterID uint64, nodeID uint64, index uint64) error
RemoveEntriesTo removes entries associated with the specified raft node up to the specified index.
func (*ShardedRDB) SaveBootstrapInfo ¶
func (mw *ShardedRDB) SaveBootstrapInfo(clusterID uint64, nodeID uint64, bootstrap pb.Bootstrap) error
SaveBootstrapInfo saves the specified bootstrap info for the given node.
func (*ShardedRDB) SaveRaftState ¶
SaveRaftState saves the raft state and logs found in the raft.Update list to the log db.
func (*ShardedRDB) SaveSnapshots ¶
func (mw *ShardedRDB) SaveSnapshots(updates []pb.Update) error
SaveSnapshots saves all snapshot metadata found in the raft.Update list.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package gorocksdb provides the ability to create and access RocksDB databases.
|
Package gorocksdb provides the ability to create and access RocksDB databases. |
|
Package levigo provides the ability to create and access LevelDB databases.
|
Package levigo provides the ability to create and access LevelDB databases. |