weaviate/weaviate · error

unexpected tomstoned value, unsupported version %d

Error message

unexpected tomstoned value, unsupported version %d

What it means

Data-format guard in errorFromTombstonedValue: the stored tombstone value's version byte is not 1 (the only supported format: 1 version byte + 8-byte little-endian UnixMilli). Firing means the on-disk/memtable value was written by an incompatible or corrupt writer, so a valid sentinel error cannot be derived from it.

Source

Thrown at adapters/repos/db/lsmkv/memtable.go:432

	m.writesSinceLastSync = true

	return nil
}

func tombstonedValue(deletionTime time.Time) []byte {
	var tombstonedVal [1 + 8]byte // version=1 deletionTime
	tombstonedVal[0] = 1
	binary.LittleEndian.PutUint64(tombstonedVal[1:], uint64(deletionTime.UnixMilli()))
	return tombstonedVal[:]
}

func errorFromTombstonedValue(tombstonedVal []byte) error {
	if len(tombstonedVal) == 0 {
		return lsmkv.Deleted
	}

	if tombstonedVal[0] != 1 {
		return fmt.Errorf("unexpected tomstoned value, unsupported version %d", tombstonedVal[0])
	}

	if len(tombstonedVal) != 9 {
		return fmt.Errorf("unexpected tomstoned value, invalid length")
	}

	deletionTimeUnixMilli := int64(binary.LittleEndian.Uint64(tombstonedVal[1:]))

	return lsmkv.NewErrDeleted(time.UnixMilli(deletionTimeUnixMilli))
}

func (m *Memtable) createSecondaryKeys(opts []SecondaryKeyOption) ([][]byte, error) {
	var secondaryKeys [][]byte
	if m.secondaryIndices > 0 {
		secondaryKeys = make([][]byte, m.secondaryIndices)
		for _, opt := range opts {
			if err := opt(secondaryKeys); err != nil {
				return nil, err

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Investigate how the value with an unknown tombstone version was written
  2. Check for corruption or downgraded/patched writers on this shard
  3. Restore the affected shard from backup if corruption is confirmed
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at adapters/repos/db/lsmkv/memtable.go:432 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/49460404c70eb46b. Report an issue: GitHub.