fsbinlog

package
v1.0.0-beta1 Latest Latest
Warning

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

Go to latest
Published: Nov 24, 2022 License: MPL-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddPadding

func AddPadding(readBytes int) int

AddPadding высчитывает размер событий бинлога с учетом alignment (по умолчанию все события выровнены по 4 байта) Типичное использование:

read := 0
for {
	...
	lev, n, err := deserializeLev(payload)
	n = binlog2.AddPadding(n)
	payload = payload(n:)
	read += n
	...
}
return read, err

TODO: get rid of

func CreateEmptyFsBinlog

func CreateEmptyFsBinlog(options Options) (string, error)

CreateEmptyFsBinlog создает новый бинлог. Обычная схема такая: движок запускается с флагом --create-binlog и завершает работу, после его запускают на уже существующих файлах

func NewFsBinlog

func NewFsBinlog(logger Logger, options Options) (binlog.Binlog, error)

NewFsBinlog создает объект бинлога с правильными дефолтами

func NewFsBinlogMasterChange

func NewFsBinlogMasterChange(logger Logger, options Options) (binlog.Binlog, *chan struct{}, error)

NewFsBinlogMasterChange используется в сценарии replace pid мастера (при апдейте движка). В этом сценарии может получится, что бинлоги дойдут до EOF, но потом что-то ещё запишется потому-что предыдущий мастер ещё жив. Для корректной обработки сценария есть эта функция.

В этом режиме бинлог при получении ошибки EOF вызывает Binlog.ChangeRole с параметром Ready == false. После этого он блокируется на канале, который возвращается из этой функции. Обязанность клиента - дернуть канал, когда станет известно, что предыдущий мастер завершил работу (см. vkd.Options.ReadyHandler). После этого бинлог возвращается к обычной работе и при получении EOF будет вызван Binlog.ChangeRole с Ready == true

Types

type Logger

type Logger interface {
	Tracef(format string, args ...interface{})
	Debugf(format string, args ...interface{})
	Infof(format string, args ...interface{})
	Warnf(format string, args ...interface{})
	Errorf(format string, args ...interface{})
}

type Options

type Options struct {
	PrefixPath      string // путь до бинлога, включающий префикс для файлов финлога (например `some/path/gopusher_binlog`)
	Magic           uint32 // Ожидаемый magic (scheme) движка (0 - если можно открывать любой тип)
	ReadOnly        bool
	ReplicaMode     bool   // Бинлог открывается в режиме читающей реплики (постоянно читаем файл, если EOF, ждем новой записи)
	WriteCrcEveryKB int32  // Как часто нужно писать в бинлог LEV_CRC32 события (по умолчанию defaultWriteCrcEveryKB)
	MaxChunkSize    uint32 // Примерный порог (в байтах) для срабатывания ротации бинлога
	BuffSizeLimit   int    // Лимит буффера, при котором он будет передаваться воркеру на запись, если он свободен (по умолчанию равен WriteCrcEveryKB * 1024)
	HardMemLimit    int    // Лимит буффера, при котором включается механизм back pressure: Append начнет блокироваться, пока буффер не передастся на запись (по умолчанию defaultHardMemoryLimitKB)

	EngineIDInCluster uint // Номер данного шарда в кластере, для статы
	ClusterSize       uint // Размер кластера для данного шарда, для статы
	FlushInterval     time.Duration
}

type ReadBuffer

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

func NewReadBuffer

func NewReadBuffer(size int) *ReadBuffer

func (*ReadBuffer) Bytes

func (b *ReadBuffer) Bytes() []byte

func (*ReadBuffer) IsLowFilled

func (b *ReadBuffer) IsLowFilled() bool

func (*ReadBuffer) RemoveProcessed

func (b *ReadBuffer) RemoveProcessed(readBytes int)

func (*ReadBuffer) TryReadFrom

func (b *ReadBuffer) TryReadFrom(r io.Reader) (int, error)

Directories

Path Synopsis
internal
gen
Code generated by vktl/cmd/tlgen2; DO NOT EDIT.
Code generated by vktl/cmd/tlgen2; DO NOT EDIT.
gen/constants
Code generated by vktl/cmd/tlgen2; DO NOT EDIT.
Code generated by vktl/cmd/tlgen2; DO NOT EDIT.
gen/internal
Code generated by vktl/cmd/tlgen2; DO NOT EDIT.
Code generated by vktl/cmd/tlgen2; DO NOT EDIT.
gen/tlfsbinlog
Code generated by vktl/cmd/tlgen2; DO NOT EDIT.
Code generated by vktl/cmd/tlgen2; DO NOT EDIT.

Jump to

Keyboard shortcuts

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