#2192·badger

Allow users to explicitly mark keys as not eligible for Garbage Collection

Author: andrewnguyen22Created Apr 16, 2025Updated Jun 21, 2026
LabelsStale

Is your feature request related to a problem? Please describe

In managed mode, a user may want to mark keys as not eligible for garbage collection.

With the following conditions:

  • KeepNumVersions=MaxInt64
  • DiscardTs > KeyTs
  • deleted or expired key at a higher Ts

A key will be eligible for garbage collection.

Describe the solution you'd like

Expose a method in Entry that allows users in Managed Mode to set a Never Discard bit.

go
// WithNeverDiscard sets merge bit in entry's metadata. This
// prevents the compactor from marking the key eligible for GC.
func (e *Entry) WithNeverDiscard() *Entry {
	e.meta = bitMergeEntry // this works -- but could use another bit
	return e
}

Describe alternatives you've considered

Allow users to explicitly mark keys eligible for garbage collection when DiscardTs is unset.

Additional context

This is useful when users want to leverage the Multi-Version system of BadgerDB in Managed Mode to maintain multiple versions of keys.