package v3compactor

import "go.etcd.io/etcd/server/v3/etcdserver/api/v3compactor"

Package v3compactor implements automated policies for compacting etcd's mvcc storage.

Index

Constants

const (
	ModePeriodic = "periodic"
	ModeRevision = "revision"
)

Types

type Compactable

type Compactable interface {
	Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error)
}

type Compactor

type Compactor interface {
	// Run starts the main loop of the compactor in background.
	// Use Stop() to halt the loop and release the resource.
	Run()
	// Stop halts the main loop of the compactor.
	Stop()
	// Pause temporally suspend the compactor not to run compaction. Resume() to unpose.
	Pause()
	// Resume restarts the compactor suspended by Pause().
	Resume()
}

Compactor purges old log from the storage periodically.

func New

func New(
	lg *zap.Logger,
	mode string,
	retention time.Duration,
	rg RevGetter,
	c Compactable,
) (Compactor, error)

New returns a new Compactor based on given "mode".

type Periodic

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

Periodic compacts the log by purging revisions older than the configured retention time.

func (*Periodic) Pause

func (pc *Periodic) Pause()

Pause pauses periodic compactor.

func (*Periodic) Resume

func (pc *Periodic) Resume()

Resume resumes periodic compactor.

func (*Periodic) Run

func (pc *Periodic) Run()

Run runs periodic compactor.

func (*Periodic) Stop

func (pc *Periodic) Stop()

Stop stops periodic compactor.

type RevGetter

type RevGetter interface {
	Rev() int64
}

type Revision

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

Revision compacts the log by purging revisions older than the configured reivison number. Compaction happens every 5 minutes.

func (*Revision) Pause

func (rc *Revision) Pause()

Pause pauses revision-based compactor.

func (*Revision) Resume

func (rc *Revision) Resume()

Resume resumes revision-based compactor.

func (*Revision) Run

func (rc *Revision) Run()

Run runs revision-based compactor.

func (*Revision) Stop

func (rc *Revision) Stop()

Stop stops revision-based compactor.

Source Files

compactor.go doc.go periodic.go revision.go

Version
v3.5.18 (latest)
Published
Jan 24, 2025
Platform
linux/amd64
Imports
8 packages
Last checked
5 days ago

Tools for package owners.