commitlog

package module
v1.2.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2021 License: MPL-2.0 Imports: 17 Imported by: 2

Documentation

Index

Constants

View Source
const (
	EntryHeaderSize int = 8 + 8 + 8 + checksumSize
)

Variables

View Source
var (
	ErrInvalidBufferSize        = errors.New("invalid buffer size")
	ErrEntryTooBig              = errors.New("entry is too big")
	MaxEntrySize         uint64 = 20000000
)
View Source
var (
	ErrIndexAlreadyExists    = errors.New("index already exists")
	ErrIndexDoesNotExist     = errors.New("index does not exist")
	ErrInvalidIndexValue     = errors.New("value to index does not respect size limit")
	ErrInvalidOffsetTooShort = errors.New("invalid offset: offset is too short")
	ErrInvalidOffsetTooBig   = errors.New("invalid offset: offset is too big")
	ErrMMapFailed            = errors.New("mmap failed")
	ErrFSyncFailed           = errors.New("file sync failed")
	ErrMSyncFailed           = errors.New("mmap sync failed")
	ErrIndexCorrupt          = errors.New("index corrupt")
	ErrIndexClosed           = errors.New("index closed")
)
View Source
var (
	ErrSegmentAlreadyExists = errors.New("segment already exists")
	ErrSegmentDoesNotExist  = errors.New("segment does not exist")
	ErrSegmentFull          = errors.New("segment is full")
	ErrSegmentCorrupt       = errors.New("segment corrupted")
	ErrCorruptedEntry       = errors.New("entry corrupted")
)
View Source
var (
	ErrCorruptedLog = errors.New("corrupted commitlog")
)

Functions

func WithMaxSegmentCount

func WithMaxSegmentCount(i int) createOpt

Types

type CommitLog

type CommitLog interface {
	io.Closer
	// WriteEntry appends a binary payload to the commitlog.
	WriteEntry(ts uint64, value []byte) (uint64, error)
	// Delete closes then deletes the commitlog from disk.
	Delete() error
	// Reader returns a seekable reader
	Reader() Cursor
	// Offset returns the offset of the next record the be written.
	Offset() uint64
	Datadir() string
	//LookupTimestamp returns the seekable offset of the first record writen after the provided timestamp.
	LookupTimestamp(ts uint64) uint64
	//Latest returns the timestamp of the most recent record
	Latest() uint64
	GetStatistics() Statistics
	TruncateAfter(offset uint64) error
	// TruncateBefore delete segments before the one containing the provided offset
	TruncateBefore(offset uint64) error
}

func Open

func Open(datadir string, segmentMaxRecordCount uint64, opts ...createOpt) (CommitLog, error)

type Cursor

type Cursor interface {
	io.ReadSeeker
}

type Decoder

type Decoder interface {
	Decode() (Entry, error)
}

func NewDecoder

func NewDecoder(r io.Reader) Decoder

type Entry

type Entry interface {
	Size() uint64
	Offset() uint64
	Timestamp() uint64
	Checksum() []byte
	Payload() []byte
	IsValid() bool
}

type Index

type Index interface {
	Sync() error
	FilePath() string
	Name() string
	io.Closer
	// contains filtered or unexported methods
}

type Segment

type Segment interface {
	Name() string
	BaseOffset() uint64
	CurrentOffset() uint64
	Size() uint64
	Delete() error
	WriteEntry(ts uint64, buf []byte) (uint64, error)
	Earliest() uint64
	Latest() uint64
	LookupTimestamp(ts uint64) uint64
	LookupPosition(offset uint64) (int64, error)
	TruncateAfter(offset uint64) error
	io.ReaderAt
	io.Closer
}

type Statistics

type Statistics struct {
	SegmentCount  uint64
	CurrentOffset uint64
	StoredBytes   uint64
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL