tmindex

package
v0.1.48 Latest Latest
Warning

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

Go to latest
Published: Feb 5, 2021 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrTmIndexCorrupted = fmt.Errorf("time index corrupted or does not exist.")
	ErrOutOfRange       = fmt.Errorf("the position is out of range of known values")
)

Functions

This section is empty.

Types

type IdxRecord

type IdxRecord struct {
	Ts  int64
	Val uint32
}

IdxRecord a record in the time index

type Item

type Item struct {
	// IndexId contains the index file identifier. 0 means not assigned yet
	IndexId uint64
	// Pos identifies the root block number
	Pos int
}

Item struct identifies an element in the timestamp tree. It points to root block where data is stored.

func (Item) String

func (itm Item) String() string

type RecordsInfo

type RecordsInfo struct {
	Id    chunk.Id
	MinTs int64
	MaxTs int64
}

RecordsInfo is used to describe a records range information

func (*RecordsInfo) ApplyTs

func (ri *RecordsInfo) ApplyTs(ts int64)

func (RecordsInfo) String

func (ri RecordsInfo) String() string

type TsIndexer

type TsIndexer interface {
	// OnWrite notifies the indexer about new data added. It will create the new time
	// index for the chunk, if it doesn't exist yet. The function returns error if the
	// operation is unsuccessful. It must return ErrTmIndexCorrupted if the index should
	// be rebuilt. This case caller can RebuildIndex() to fix the index.
	OnWrite(src string, firstRec, lastRec uint32, rInfo RecordsInfo) error

	// LastChunkRecordsInfo returns information about last chunk, or an error
	// if it is not found (errors2.NotFound)
	LastChunkRecordsInfo(src string) (res RecordsInfo, err error)

	// GetRecordsInfo returns records info by chunk Id, or an error if the chunk is
	// not found (errors2.NotFound)
	GetRecordsInfo(src string, cid chunk.Id) (res RecordsInfo, err error)

	// Count returns number of records in the time index or it returns error if
	// the index is corrupted (ErrTmIndexCorrupted), or it doesn't exist (errors2.NotFound)
	Count(src string, cid chunk.Id) (int, error)

	// ReadData allows to read all points and return them. The function returns
	// err == errors2.NotFound if either src or the cid is not found. It returns
	// ErrTmIndexCorrupted if the index exists, but it is corrupted
	ReadData(src string, cid chunk.Id) ([]IdxRecord, error)

	// GetPosForGreaterOrEqualTime returns the position in the chunk which records'
	// timestamps are greater or equal to ts starting from the position. Could return
	// the following errors:
	// NotFound - there is no such partition or the chunk Id
	// ErrTmIndexCorrupted - there is a timestamp in the index, but it is corrupted, must be rebuilt, but
	// 				starting from 0, most probably will get some records
	// ErrOutOfRange - all known timestamps are less than ts e.g. maxTime < ts
	GetPosForGreaterOrEqualTime(src string, cid chunk.Id, ts int64) (uint32, error)

	// GetPosForLessTime returns the position in the chunk which records' timestamps are
	// less than ts starting from the position. Could return the following errors:
	// NotFound - there is no such partition or the chunk Id
	// ErrTmIndexCorrupted - there is a timestamp in the index, but it is corrupted, must be rebuilt, but
	// 				starting from tail, most probably will get some records
	// ErrOutOfRange - all known timestamps are greater than ts e.g. minTime > ts
	GetPosForLessTime(src string, cid chunk.Id, ts int64) (uint32, error)

	// SyncChunks expects the list of known chunks in cks. It updates internal chunks information and
	// returns the updated info as a slice of RecordsInfo. The function will remove all
	// chunks and its indexes that are not in the cks. It will remove the source information
	// completely if len(cks) == 0.
	SyncChunks(ctx context.Context, src string, cks chunk.Chunks) []RecordsInfo

	// Rebuild Index allows to re-build time index for the chunk provided. It
	// runs the procedure for building the time index if it is marked as corrupted.
	RebuildIndex(ctx context.Context, src string, ck chunk.Chunk, force bool)

	// VisitSources allows to iterate over the collection of known sources and pass them to the vistior.
	// if the visitor returns false, the function will stop the iteration and get complete the iteration
	VisitSources(visitor func(src string) bool)
}

TsIndexer interface defines the public interface for the chunk's time indexes

func NewTsIndexer

func NewTsIndexer() TsIndexer

type TsIndexerConfig

type TsIndexerConfig struct {
	// Dir is where the data will be persisted
	Dir string
}

TsIndexerConfig struct contains settings for the component

Jump to

Keyboard shortcuts

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