logs

package
v1.9.4 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2024 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrLogOutOfOrder happens when you try to add a log to the DB,
	// but it does not actually fit onto the latest data (by being too old or new).
	ErrLogOutOfOrder = errors.New("log out of order")
	// ErrDataCorruption happens when the underlying DB has some I/O issue
	ErrDataCorruption = errors.New("data corruption")
	// ErrSkipped happens when we try to retrieve data that is not available (pruned)
	// It may also happen if we erroneously skip data, that was not considered a conflict, if the DB is corrupted.
	ErrSkipped = errors.New("skipped data")
	// ErrFuture happens when data is just not yet available
	ErrFuture = errors.New("future data")
	// ErrConflict happens when we know for sure that there is different canonical data
	ErrConflict = errors.New("conflicting data")
)

Functions

This section is empty.

Types

type DB

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

DB implements an append only database for log data and cross-chain dependencies.

To keep the append-only format, reduce data size, and support reorg detection and registering of executing-messages:

Use a fixed 24 bytes per entry.

Data is an append-only log, that can be binary searched for any necessary event data.

func NewFromEntryStore

func NewFromEntryStore(logger log.Logger, m Metrics, store EntryStore, trimToLastSealed bool) (*DB, error)

func NewFromFile

func NewFromFile(logger log.Logger, m Metrics, path string, trimToLastSealed bool) (*DB, error)

func (*DB) AddLog

func (db *DB) AddLog(logHash common.Hash, parentBlock eth.BlockID, logIdx uint32, execMsg *types.ExecutingMessage) error

func (*DB) Close

func (db *DB) Close() error

func (*DB) Contains

func (db *DB) Contains(blockNum uint64, logIdx uint32, logHash common.Hash) (entrydb.EntryIdx, error)

Contains returns no error iff the specified logHash is recorded in the specified blockNum and logIdx. If the log is out of reach, then ErrFuture is returned. If the log is determined to conflict with the canonical chain, then ErrConflict is returned. logIdx is the index of the log in the array of all logs in the block. This can be used to check the validity of cross-chain interop events.

func (*DB) FindSealedBlock added in v1.9.3

func (db *DB) FindSealedBlock(block eth.BlockID) (nextEntry entrydb.EntryIdx, err error)

FindSealedBlock finds the requested block, to check if it exists, returning the next index after it where things continue from. returns ErrFuture if the block is too new to be able to tell returns ErrDifferent if the known block does not match

func (*DB) Get added in v1.9.1

func (db *DB) Get(blockNum uint64, logIdx uint32) (common.Hash, error)

Get returns the hash of the log at the specified blockNum (of the sealed block) and logIdx (of the log after the block), or an error if the log is not found.

func (*DB) IteratorStartingAt added in v1.9.3

func (db *DB) IteratorStartingAt(sealedNum uint64, logsSince uint32) (Iterator, error)

func (*DB) LatestSealedBlockNum added in v1.9.3

func (db *DB) LatestSealedBlockNum() (n uint64, ok bool)

LatestSealedBlockNum returns the block number of the block that was last sealed, or ok=false if there is no sealed block (i.e. empty DB)

func (*DB) Rewind

func (db *DB) Rewind(newHeadBlockNum uint64) error

Rewind the database to remove any blocks after headBlockNum The block at headBlockNum itself is not removed.

func (*DB) SealBlock added in v1.9.3

func (db *DB) SealBlock(parentHash common.Hash, block eth.BlockID, timestamp uint64) error

type EntryObj added in v1.9.3

type EntryObj interface {
	// contains filtered or unexported methods
}

type EntryStore

type EntryStore interface {
	Size() int64
	LastEntryIdx() entrydb.EntryIdx
	Read(idx entrydb.EntryIdx) (entrydb.Entry, error)
	Append(entries ...entrydb.Entry) error
	Truncate(idx entrydb.EntryIdx) error
	Close() error
}

type Iterator added in v1.9.1

type Iterator interface {
	End() error
	NextInitMsg() error
	NextExecMsg() error
	NextBlock() error
	TraverseConditional(traverseConditionalFn) error
	IteratorState
}

type IteratorState added in v1.9.3

type IteratorState interface {
	NextIndex() entrydb.EntryIdx
	HeadPointer() (heads.HeadPointer, error)
	SealedBlock() (hash common.Hash, num uint64, ok bool)
	InitMessage() (hash common.Hash, logIndex uint32, ok bool)
	ExecMessage() *types.ExecutingMessage
}

type Metrics

type Metrics interface {
	RecordDBEntryCount(count int64)
	RecordDBSearchEntriesRead(count int64)
}

Jump to

Keyboard shortcuts

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