deletion

package
v3.7.3 Latest Latest
Warning

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

Go to latest
Published: Jun 24, 2026 License: AGPL-3.0 Imports: 58 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DeleteRequestsTableName = "delete_requests"
)
View Source
const ForQuerytimeFilteringQueryParam = "for_querytime_filtering"

Variables

View Source
var ErrDeleteRequestNotFound = errors.New("could not find matching delete requests")
View Source
var ErrNoChunksSelectedForDeletion = fmt.Errorf("no chunks selected for deletion")

Functions

func TenantMiddleware

func TenantMiddleware(limits Limits) middleware.Interface

Types

type ApplyStorageUpdatesFunc added in v3.6.0

type ApplyStorageUpdatesFunc func(ctx context.Context, iterator StorageUpdatesIterator) error

type Chunk added in v3.6.0

type Chunk interface {
	GetFrom() model.Time
	GetThrough() model.Time
	GetFingerprint() uint64
	GetChecksum() uint32
	GetSize() uint32
	GetEntriesCount() uint32
}

type CompactorClient

type CompactorClient interface {
	GetAllDeleteRequestsForUser(ctx context.Context, userID string, forQuerytimeFiltering bool, timeRange *TimeRange) ([]deletionproto.DeleteRequest, error)
	GetCacheGenerationNumber(ctx context.Context, userID string) (string, error)
	Name() string
	Stop()
}

type DeleteRequestClientMetrics

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

func (DeleteRequestClientMetrics) Unregister added in v3.1.0

func (m DeleteRequestClientMetrics) Unregister()

type DeleteRequestHandler

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

DeleteRequestHandler provides handlers for delete requests

func NewDeleteRequestHandler

func NewDeleteRequestHandler(deleteStore DeleteRequestsStore, maxInterval, deleteRequestCancelPeriod time.Duration, registerer prometheus.Registerer) *DeleteRequestHandler

NewDeleteRequestHandler creates a DeleteRequestHandler

func (*DeleteRequestHandler) AddDeleteRequestHandler

func (dm *DeleteRequestHandler) AddDeleteRequestHandler(w http.ResponseWriter, r *http.Request)

AddDeleteRequestHandler handles addition of a new delete request

func (*DeleteRequestHandler) CancelDeleteRequestHandler

func (dm *DeleteRequestHandler) CancelDeleteRequestHandler(w http.ResponseWriter, r *http.Request)

CancelDeleteRequestHandler handles delete request cancellation

func (*DeleteRequestHandler) GetAllDeleteRequestsHandler

func (dm *DeleteRequestHandler) GetAllDeleteRequestsHandler(w http.ResponseWriter, r *http.Request)

GetAllDeleteRequestsHandler handles get all delete requests

func (*DeleteRequestHandler) GetCacheGenerationNumberHandler

func (dm *DeleteRequestHandler) GetCacheGenerationNumberHandler(w http.ResponseWriter, r *http.Request)

GetCacheGenerationNumberHandler handles requests for a user's cache generation number

type DeleteRequestsClient

type DeleteRequestsClient interface {
	GetAllDeleteRequestsForUser(ctx context.Context, userID string, forQuerytimeFiltering bool, timeRange *TimeRange) ([]deletionproto.DeleteRequest, error)
	Stop()
}

func NewDeleteRequestsClient

func NewDeleteRequestsClient(compactorClient CompactorClient, deleteClientMetrics *DeleteRequestClientMetrics, clientType string, opts ...DeleteRequestsStoreOption) (DeleteRequestsClient, error)

func NewNoOpDeleteRequestsClient added in v3.5.0

func NewNoOpDeleteRequestsClient() DeleteRequestsClient

func NewPerTenantDeleteRequestsClient

func NewPerTenantDeleteRequestsClient(c DeleteRequestsClient, l Limits) DeleteRequestsClient

type DeleteRequestsKind added in v3.6.0

type DeleteRequestsKind string
const (
	DeleteRequestsWithLineFilters    DeleteRequestsKind = "DeleteRequestsWithLineFilters"
	DeleteRequestsWithoutLineFilters DeleteRequestsKind = "DeleteRequestsWithoutLineFilters"
	DeleteRequestsAll                DeleteRequestsKind = "DeleteRequestsAll"
)

type DeleteRequestsManager

type DeleteRequestsManager struct {
	HSModeEnabled bool
	// contains filtered or unexported fields
}

func NewDeleteRequestsManager

func NewDeleteRequestsManager(
	workingDir string,
	store DeleteRequestsStore,
	deleteRequestCancelPeriod time.Duration,
	batchSize int,
	limits Limits,
	HSModeEnabled bool,
	deletionManifestStoreClient client.ObjectClient,
	registerer prometheus.Registerer,
) (*DeleteRequestsManager, error)

func (*DeleteRequestsManager) CanSkipSeries added in v3.5.0

func (d *DeleteRequestsManager) CanSkipSeries(userID []byte, lbls labels.Labels, seriesID []byte, _ model.Time, tableName string, _ model.Time) bool

func (*DeleteRequestsManager) DropFromIndex

func (d *DeleteRequestsManager) DropFromIndex(_ []byte, _ retention.Chunk, _ labels.Labels, _ model.Time, _ model.Time) bool

func (*DeleteRequestsManager) Expired

func (d *DeleteRequestsManager) Expired(userID []byte, chk retention.Chunk, lbls labels.Labels, seriesID []byte, tableName string, _ model.Time) (bool, filter.Func)

func (*DeleteRequestsManager) Init added in v3.6.0

func (d *DeleteRequestsManager) Init(tablesManager TablesManager, registerer prometheus.Registerer) error

func (*DeleteRequestsManager) IntervalMayHaveExpiredChunks

func (d *DeleteRequestsManager) IntervalMayHaveExpiredChunks(_ model.Interval, userID string) bool

func (*DeleteRequestsManager) JobBuilder added in v3.6.0

func (d *DeleteRequestsManager) JobBuilder() *JobBuilder

func (*DeleteRequestsManager) MarkPhaseFailed

func (d *DeleteRequestsManager) MarkPhaseFailed()

func (*DeleteRequestsManager) MarkPhaseFinished

func (d *DeleteRequestsManager) MarkPhaseFinished()

func (*DeleteRequestsManager) MarkPhaseStarted

func (d *DeleteRequestsManager) MarkPhaseStarted()

func (*DeleteRequestsManager) MarkPhaseTimedOut

func (d *DeleteRequestsManager) MarkPhaseTimedOut()

func (*DeleteRequestsManager) MarkSeriesAsProcessed added in v3.5.0

func (d *DeleteRequestsManager) MarkSeriesAsProcessed(userID, seriesID []byte, lbls labels.Labels, tableName string) error

MarkSeriesAsProcessed marks a series as processed. It ignores the operation if the series progress file reference is nil.

func (*DeleteRequestsManager) Start added in v3.6.0

func (d *DeleteRequestsManager) Start(ctx context.Context)

Start starts the DeleteRequestsManager's background operations. It is a blocking call. To stop the background operations, cancel the passed context.

type DeleteRequestsStore

type DeleteRequestsStore interface {
	AddDeleteRequest(ctx context.Context, userID, query string, startTime, endTime model.Time, shardByInterval time.Duration) (string, error)

	GetAllRequests(ctx context.Context) ([]deletionproto.DeleteRequest, error)
	GetAllDeleteRequestsForUser(ctx context.Context, userID string, forQuerytimeFiltering bool, timeRange *TimeRange) ([]deletionproto.DeleteRequest, error)
	RemoveDeleteRequest(ctx context.Context, userID string, requestID string) error
	GetDeleteRequest(ctx context.Context, userID, requestID string) (deletionproto.DeleteRequest, error)
	GetCacheGenerationNumber(ctx context.Context, userID string) (string, error)
	MergeShardedRequests(ctx context.Context) error

	// ToDo(Sandeep): To keep changeset smaller, below 2 methods treat a single shard as individual request. This can be refactored later in a separate PR.
	MarkShardAsProcessed(ctx context.Context, req deletionproto.DeleteRequest) error
	GetUnprocessedShards(ctx context.Context) ([]deletionproto.DeleteRequest, error)

	Stop()
	// contains filtered or unexported methods
}

func NewDeleteRequestsStore added in v3.5.0

func NewDeleteRequestsStore(
	deleteRequestsStoreDBType DeleteRequestsStoreDBType,
	workingDirectory string,
	indexStorageClient storage.Client,
	backupDeleteRequestStoreDBType DeleteRequestsStoreDBType,
	indexUpdatePropagationMaxDelay time.Duration,
) (DeleteRequestsStore, error)

type DeleteRequestsStoreDBType added in v3.5.0

type DeleteRequestsStoreDBType string
const (
	DeleteRequestsStoreDBTypeBoltDB DeleteRequestsStoreDBType = "boltdb"
	DeleteRequestsStoreDBTypeSQLite DeleteRequestsStoreDBType = "sqlite"
)

type DeleteRequestsStoreOption

type DeleteRequestsStoreOption func(c *deleteRequestsClient)

func WithRequestClientCacheDuration

func WithRequestClientCacheDuration(d time.Duration) DeleteRequestsStoreOption

type GRPCRequestHandler

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

func NewGRPCRequestHandler

func NewGRPCRequestHandler(deleteRequestsStore DeleteRequestsStore, limits Limits) *GRPCRequestHandler

func (*GRPCRequestHandler) GetCacheGenNumbers

func (*GRPCRequestHandler) GetDeleteRequests

type GetChunkClientForTableFunc added in v3.6.0

type GetChunkClientForTableFunc func(table string) (client.Client, error)

type JobBuilder added in v3.6.0

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

func NewJobBuilder added in v3.6.0

func NewJobBuilder(
	deletionManifestStoreClient client.ObjectClient,
	applyStorageUpdatesFunc ApplyStorageUpdatesFunc,
	markRequestsAsProcessedFunc markRequestsAsProcessedFunc,
	r prometheus.Registerer,
) *JobBuilder

func (*JobBuilder) BuildJobs added in v3.6.0

func (b *JobBuilder) BuildJobs(ctx context.Context, jobsChan chan<- *grpc.Job)

BuildJobs implements jobqueue.Builder interface

func (*JobBuilder) JobsLeft added in v3.6.0

func (b *JobBuilder) JobsLeft() int

func (*JobBuilder) OnJobResponse added in v3.6.0

func (b *JobBuilder) OnJobResponse(response *grpc.JobResult) error

OnJobResponse implements jobqueue.Builder interface

type JobRunner added in v3.6.0

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

func NewJobRunner added in v3.6.0

func NewJobRunner(chunkProcessingConcurrency int, getStorageClientForTableFunc GetChunkClientForTableFunc, r prometheus.Registerer) *JobRunner

func (*JobRunner) Run added in v3.6.0

func (jr *JobRunner) Run(ctx context.Context, job *grpc.Job) ([]byte, error)

type Limits

type Limits interface {
	DeletionMode(userID string) string
	RetentionPeriod(userID string) time.Duration
	StreamRetention(userID string) []validation.StreamRetention
}

type StorageUpdatesIterator added in v3.6.0

type StorageUpdatesIterator interface {
	Next() bool
	UserID() string
	TableName() string
	Err() error
	ForEachSeries(callback func(labels string, rebuiltChunks map[string]Chunk, chunksToDeIndex []string) error) error
}

type Table added in v3.6.0

type Table interface {
	GetUserIndex(userID string) (retention.SeriesIterator, error)
}

type TableIteratorFunc added in v3.6.0

type TableIteratorFunc func(ctx context.Context, callback func(string, Table) error) (err error)

type TablesManager added in v3.6.0

type TablesManager interface {
	ApplyStorageUpdates(ctx context.Context, iterator StorageUpdatesIterator) error
	IterateTables(ctx context.Context, callback func(string, Table) error) (err error)
}

type TimeRange added in v3.7.0

type TimeRange struct {
	Start, End model.Time
}

TimeRange represents an optional time range for filtering delete requests. If provided, both Start and End must be set.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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