hyperledger/fabric · error

error unmarshalling ledger metadata

Error message

error unmarshalling ledger metadata

What it means

Returned by idStore.getLedgerMetadata when the stored metadata bytes for a ledger fail proto-unmarshaling into LedgerMetadata. The value was found in levelDB but is corrupt or in an unreadable format version.

Source

Thrown at core/ledger/kvledger/kv_ledger_provider.go:670

	metadataBytes, err := proto.Marshal(metadata)
	if err != nil {
		logger.Errorf("Error marshalling ledger metadata: %s", err)
		return errors.Wrapf(err, "error marshalling ledger metadata")
	}
	logger.Infof("Updating ledger [%s] status to [%s]", ledgerID, newStatus)
	key := metadataKey(ledgerID)
	return s.db.Put(key, metadataBytes, true)
}

func (s *idStore) getLedgerMetadata(ledgerID string) (*msgs.LedgerMetadata, error) {
	val, err := s.db.Get(metadataKey(ledgerID))
	if val == nil || err != nil {
		return nil, err
	}
	metadata := &msgs.LedgerMetadata{}
	if err := proto.Unmarshal(val, metadata); err != nil {
		logger.Errorf("Error unmarshalling ledger metadata: %s", err)
		return nil, errors.Wrapf(err, "error unmarshalling ledger metadata")
	}
	return metadata, nil
}

func (s *idStore) ledgerIDExists(ledgerID string) (bool, error) {
	key := metadataKey(ledgerID)
	val, err := s.db.Get(key)
	if err != nil {
		return false, err
	}
	return val != nil, nil
}

func (s *idStore) getActiveAndInactiveLedgerIDs() ([]string, error) {
	return s.getLedgerIDs(
		map[msgs.Status]struct{}{
			msgs.Status_ACTIVE:   {},
			msgs.Status_INACTIVE: {},

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Inspect the idStore leveldb for corruption
  2. Re-run the format upgrade to rewrite metadata in the current encoding
  3. Restore the idStore from backup
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at core/ledger/kvledger/kv_ledger_provider.go:670 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04). Data as JSON: /api/errors/07db99ec4dc1cbab. Report an issue: GitHub.