wal

package
v0.0.0-...-e70b4cf Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2022 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrCorrupt is returns when the log is corrupt.
	ErrCorrupt = errors.New("log corrupt")

	// ErrClosed is returned when an operation cannot be completed because
	// the log is closed.
	ErrClosed = errors.New("log closed")

	// ErrNotFound is returned when an entry is not found.
	ErrNotFound = errors.New("not found")

	// ErrOutOfOrder is returned from Write() when the index is not equal to
	// LastIndex()+1. It's required that log monotonically grows by one and has
	// no gaps. Thus, the series 10,11,12,13,14 is valid, but 10,11,13,14 is
	// not because there's a gap between 11 and 13. Also, 10,12,11,13 is not
	// valid because 12 and 11 are out of order.
	ErrOutOfOrder = errors.New("out of order")

	// ErrOutOfRange is returned from TruncateFront() and TruncateBack() when
	// the index not in the range of the log's first and last index. Or, this
	// may be returned when the caller is attempting to remove *all* entries;
	// The log requires that at least one entry exists following a truncate.
	ErrOutOfRange = errors.New("out of range")
)
View Source
var DefaultOptions = &Options{
	NoSync:           false,
	SegmentSize:      20971520,
	LogFormat:        Binary,
	SegmentCacheSize: 2,
	NoCopy:           false,
}

DefaultOptions for Open().

Functions

This section is empty.

Types

type Batch

type Batch struct {
	// contains filtered or unexported fields
}

Batch of entries. Used to write multiple entries at once using WriteBatch().

func (*Batch) Clear

func (b *Batch) Clear()

Clear the batch for reuse.

func (*Batch) Write

func (b *Batch) Write(index uint64, data []byte)

Write an entry to the batch

type CRC

type CRC uint32

CRC is a CRC-32 checksum computed using Castagnoli's polynomial.

func NewCRC

func NewCRC(b []byte) CRC

NewCRC creates a new crc based on the given bytes.

func (CRC) Update

func (c CRC) Update(b []byte) CRC

Update updates the crc with the given bytes.

func (CRC) Value

func (c CRC) Value() uint32

Value returns a masked crc.

type Log

type Log struct {
	// contains filtered or unexported fields
}

Log represents a write ahead log

func Open

func Open(path string, opts *Options) (*Log, error)

Open a new write ahead log

func (*Log) ClearCache

func (l *Log) ClearCache() error

ClearCache clears the segment cache

func (*Log) Close

func (l *Log) Close() error

Close the log.

func (*Log) FirstIndex

func (l *Log) FirstIndex() (index uint64, err error)

FirstIndex returns the index of the first entry in the log. Returns zero when log has no entries.

func (*Log) LastIndex

func (l *Log) LastIndex() (index uint64, err error)

LastIndex returns the index of the last entry in the log. Returns zero when log has no entries.

func (*Log) Read

func (l *Log) Read(index uint64) (data []byte, err error)

Read an entry from the log. Returns a byte slice containing the data entry.

func (*Log) Sync

func (l *Log) Sync() error

Sync performs an fsync on the log. This is not necessary when the NoSync option is set to false.

func (*Log) TruncateBack

func (l *Log) TruncateBack(index uint64) error

TruncateBack truncates the back of the log by removing all entries that are after the provided `index`. In other words the entry at `index` becomes the last entry in the log.

func (*Log) TruncateFront

func (l *Log) TruncateFront(index uint64) error

TruncateFront truncates the front of the log by removing all entries that are before the provided `index`. In other words the entry at `index` becomes the first entry in the log.

func (*Log) Write

func (l *Log) Write(index uint64, data []byte) error

Write an entry to the log.

func (*Log) WriteBatch

func (l *Log) WriteBatch(b *Batch) error

WriteBatch writes the entries in the batch to the log in the order that they were added to the batch. The batch is cleared upon a successful return.

type LogFormat

type LogFormat byte

LogFormat is the format of the log files.

const (
	// Binary format writes entries in binary. This is the default and, unless
	// a good reason otherwise, should be used in production.
	Binary LogFormat = 0
	// JSON format writes entries as JSON lines. This causes larger, human
	// readable files.
	JSON LogFormat = 1
)

type Options

type Options struct {
	// NoSync disables fsync after writes. This is less durable and puts the
	// log at risk of data loss when there's a server crash.
	NoSync bool
	// SegmentSize of each segment. This is just a target value, actual size
	// may differ. Default is 20 MB.
	SegmentSize int
	// LogFormat is the format of the log files. Default is Binary.
	LogFormat LogFormat
	// SegmentCacheSize is the maximum number of segments that will be held in
	// memory for caching. Increasing this value may enhance performance for
	// concurrent read operations. Default is 1
	SegmentCacheSize int
	// NoCopy allows for the Read() operation to return the raw underlying data
	// slice. This is an optimization to help minimize allocations. When this
	// option is set, do not modify the returned data because it may affect
	// other Read calls. Default false
	NoCopy bool
}

Options for Log

Jump to

Keyboard shortcuts

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