local

package
v2.4.3 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2022 License: AGPL-3.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DBOperationRead = iota
	DBOperationWrite
)

Variables

View Source
var (
	IndexBucketName         = []byte("index")
	ErrUnexistentBoltDB     = errors.New("boltdb file does not exist")
	ErrEmptyIndexBucketName = errors.New("empty index bucket name")
)
View Source
var Fixtures = []testutils.Fixture{
	&fixture{
		name: "boltdb",
	},
}

Fixtures for unit testing GCP storage.

Functions

func NewTableClient

func NewTableClient(directory string) (chunk.TableClient, error)

NewTableClient returns a new TableClient.

func OpenBoltdbFile

func OpenBoltdbFile(path string) (*bbolt.DB, error)

Open the database. Set Timeout to avoid obtaining file lock wait indefinitely.

Types

type BoltDBConfig

type BoltDBConfig struct {
	Directory string `yaml:"directory"`
}

BoltDBConfig for a BoltDB index client.

func (*BoltDBConfig) RegisterFlags

func (cfg *BoltDBConfig) RegisterFlags(f *flag.FlagSet)

RegisterFlags registers flags.

type BoltIndexClient

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

func NewBoltDBIndexClient

func NewBoltDBIndexClient(cfg BoltDBConfig) (*BoltIndexClient, error)

NewBoltDBIndexClient creates a new IndexClient that used BoltDB.

func (*BoltIndexClient) BatchWrite

func (b *BoltIndexClient) BatchWrite(ctx context.Context, batch chunk.WriteBatch) error

func (*BoltIndexClient) GetDB

func (b *BoltIndexClient) GetDB(name string, operation int) (*bbolt.DB, error)

GetDB should always return a db for write operation unless an error occurs while doing so. While for read operation it should throw ErrUnexistentBoltDB error if file does not exist for reading

func (*BoltIndexClient) NewWriteBatch

func (b *BoltIndexClient) NewWriteBatch() chunk.WriteBatch

func (*BoltIndexClient) QueryDB

func (b *BoltIndexClient) QueryDB(ctx context.Context, db *bbolt.DB, bucketName []byte, query chunk.IndexQuery,
	callback func(chunk.IndexQuery, chunk.ReadBatch) (shouldContinue bool)) error

func (*BoltIndexClient) QueryPages

func (b *BoltIndexClient) QueryPages(ctx context.Context, queries []chunk.IndexQuery, callback func(chunk.IndexQuery, chunk.ReadBatch) (shouldContinue bool)) error

func (*BoltIndexClient) QueryWithCursor

func (b *BoltIndexClient) QueryWithCursor(_ context.Context, c *bbolt.Cursor, query chunk.IndexQuery, callback func(chunk.IndexQuery, chunk.ReadBatch) (shouldContinue bool)) error

func (*BoltIndexClient) Stop

func (b *BoltIndexClient) Stop()

func (*BoltIndexClient) WriteToDB

func (b *BoltIndexClient) WriteToDB(_ context.Context, db *bbolt.DB, bucketName []byte, writes TableWrites) error

type BoltWriteBatch

type BoltWriteBatch struct {
	Writes map[string]TableWrites
}

func (*BoltWriteBatch) Add

func (b *BoltWriteBatch) Add(tableName, hashValue string, rangeValue, value []byte)

func (*BoltWriteBatch) Delete

func (b *BoltWriteBatch) Delete(tableName, hashValue string, rangeValue []byte)

type FSConfig

type FSConfig struct {
	Directory string `yaml:"directory"`
}

FSConfig is the config for a FSObjectClient.

func (*FSConfig) RegisterFlags

func (cfg *FSConfig) RegisterFlags(f *flag.FlagSet)

RegisterFlags registers flags.

func (*FSConfig) RegisterFlagsWithPrefix

func (cfg *FSConfig) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet)

RegisterFlags registers flags with prefix.

func (*FSConfig) ToCortexLocalConfig

func (cfg *FSConfig) ToCortexLocalConfig() local.Config

type FSObjectClient

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

FSObjectClient holds config for filesystem as object store

func NewFSObjectClient

func NewFSObjectClient(cfg FSConfig) (*FSObjectClient, error)

NewFSObjectClient makes a chunk.Client which stores chunks as files in the local filesystem.

func (*FSObjectClient) DeleteChunksBefore

func (f *FSObjectClient) DeleteChunksBefore(ctx context.Context, ts time.Time) error

DeleteChunksBefore implements BucketClient

func (*FSObjectClient) DeleteObject

func (f *FSObjectClient) DeleteObject(ctx context.Context, objectKey string) error

func (*FSObjectClient) GetObject

func (f *FSObjectClient) GetObject(_ context.Context, objectKey string) (io.ReadCloser, int64, error)

GetObject from the store

func (*FSObjectClient) IsObjectNotFoundErr

func (f *FSObjectClient) IsObjectNotFoundErr(err error) bool

IsObjectNotFoundErr returns true if error means that object is not found. Relevant to GetObject and DeleteObject operations.

func (*FSObjectClient) List

func (f *FSObjectClient) List(ctx context.Context, prefix, delimiter string) ([]chunk.StorageObject, []chunk.StorageCommonPrefix, error)

List implements chunk.ObjectClient. FSObjectClient assumes that prefix is a directory, and only supports "" and "/" delimiters.

func (*FSObjectClient) PutObject

func (f *FSObjectClient) PutObject(_ context.Context, objectKey string, object io.ReadSeeker) error

PutObject into the store

func (FSObjectClient) Stop

func (FSObjectClient) Stop()

Stop implements ObjectClient

type TableClient

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

func (*TableClient) CreateTable

func (c *TableClient) CreateTable(ctx context.Context, desc chunk.TableDesc) error

func (*TableClient) DeleteTable

func (c *TableClient) DeleteTable(ctx context.Context, name string) error

func (*TableClient) DescribeTable

func (c *TableClient) DescribeTable(ctx context.Context, name string) (desc chunk.TableDesc, isActive bool, err error)

func (*TableClient) ListTables

func (c *TableClient) ListTables(ctx context.Context) ([]string, error)

func (*TableClient) Stop

func (*TableClient) Stop()

func (*TableClient) UpdateTable

func (c *TableClient) UpdateTable(ctx context.Context, current, expected chunk.TableDesc) error

type TableWrites

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

Jump to

Keyboard shortcuts

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