Documentation
¶
Index ¶
- type Checkpoint
- type JournalIterator
- type JournalMeta
- type JournalProvider
- type JournalRecord
- func (z *JournalRecord) DecodeMsg(dc *msgp.Reader) (err error)
- func (z *JournalRecord) EncodeMsg(en *msgp.Writer) (err error)
- func (z *JournalRecord) MarshalMsg(b []byte) (o []byte, err error)
- func (z *JournalRecord) Msgsize() (s int)
- func (z *JournalRecord) UnmarshalMsg(bts []byte) (o []byte, err error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Checkpoint ¶
type Checkpoint uint64
type JournalIterator ¶
type JournalIterator interface {
Next() bool
Value() (*JournalRecord, Checkpoint, bte.BTE)
}
type JournalMeta ¶
type JournalMeta struct {
// contains filtered or unexported fields
}
type JournalProvider ¶
type JournalProvider interface {
//Used by a node that is inserting
Insert(ctx context.Context, rng *configprovider.MashRange, jr *JournalRecord) (checkpoint Checkpoint, err bte.BTE)
WaitForCheckpoint(ctx context.Context, checkpoint Checkpoint) bte.BTE
//Used by a node taking control of a range
//The context MUST be cancelled when done with the iterator
//The iterator MUST return records in order
ObtainNodeJournals(ctx context.Context, nodename string) (JournalIterator, bte.BTE)
//Used by both the recovering nodes and the generating nodes
//Given that the same journal can be processed by two different nodes
//across different ranges, it is important that the provider only frees resources
//associated with old checkpoints if they have been released across the entire range
//of the journal. The checkpoint is INCLUSIVE.
ReleaseJournalEntries(ctx context.Context, nodename string, upto Checkpoint, rng *configprovider.MashRange) bte.BTE
//This is a niche operation and generally is only useful for tests. It ensures that any
//new records are stored in a separate place from the old ones. A release journal entries
//is only guaranteed to release space up to a barrier, the content after the barrier may
//not be freed because it shares a file or object with other records after the upto
//parameter
Barrier(ctx context.Context, upto Checkpoint) bte.BTE
//from is inclusive, upto is exclusive. The range is considered "this node" so the caller must ensure
//that only appropriate checkpoints are released
ReleaseDisjointCheckpoint(ctx context.Context, cp Checkpoint) bte.BTE
//Get the current checkpoint for determining what an "old" checkpoint number is
GetLatestCheckpoint() Checkpoint
//If there is any information (such as journals) stored for this node name, forget it
//It is not an error if it does not exist
ForgetAboutNode(ctx context.Context, nodename string) bte.BTE
//A bit like forget about node, but keep the node name tombstone
ReleaseAllOurJournals(ctx context.Context) bte.BTE
}
type JournalRecord ¶
type JournalRecord struct {
//The stream UUID
UUID []byte `msgpack:"u"`
//The version of the stream that this would appear in
MajorVersion uint64 `msgpack:"f"`
//The microversion that this represents
MicroVersion uint32 `msgpack:"m"`
//Data point times
Times []int64 `msgpack:"t"`
//Data point valuez
Values []float64 `msgpack:"v"`
}
func (*JournalRecord) DecodeMsg ¶
func (z *JournalRecord) DecodeMsg(dc *msgp.Reader) (err error)
DecodeMsg implements msgp.Decodable
func (*JournalRecord) EncodeMsg ¶
func (z *JournalRecord) EncodeMsg(en *msgp.Writer) (err error)
EncodeMsg implements msgp.Encodable
func (*JournalRecord) MarshalMsg ¶
func (z *JournalRecord) MarshalMsg(b []byte) (o []byte, err error)
MarshalMsg implements msgp.Marshaler
func (*JournalRecord) Msgsize ¶
func (z *JournalRecord) Msgsize() (s int)
Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (*JournalRecord) UnmarshalMsg ¶
func (z *JournalRecord) UnmarshalMsg(bts []byte) (o []byte, err error)
UnmarshalMsg implements msgp.Unmarshaler
Click to show internal directories.
Click to hide internal directories.