hyperledger/fabric · error

error while upgrading idStore format

Error message

error while upgrading idStore format

What it means

Returned by upgradeFormat when iterating the genesis-block keyspace or writing the format-upgrade batch to the idStore levelDB fails. The idStore format migration (adding per-ledger metadata) aborted mid-way and the error is wrapped with this context.

Source

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

	batch := &leveldb.Batch{}
	batch.Put(formatKey, []byte(dataformat.CurrentFormat))

	// add new metadata key for each ledger (channel)
	metadata, err := protoutil.Marshal(&msgs.LedgerMetadata{Status: msgs.Status_ACTIVE})
	if err != nil {
		logger.Errorf("Error marshalling ledger metadata: %s", err)
		return errors.Wrapf(err, "error marshalling ledger metadata")
	}
	itr := s.db.GetIterator(genesisBlkKeyPrefix, genesisBlkKeyStop)
	defer itr.Release()
	for itr.Error() == nil && itr.Next() {
		id := ledgerIDFromGenesisBlockKey(itr.Key())
		batch.Put(metadataKey(id), metadata)
	}
	if err = itr.Error(); err != nil {
		logger.Errorf("Error while upgrading idStore format: %s", err)
		return errors.Wrapf(err, "error while upgrading idStore format")
	}

	return s.db.WriteBatch(batch, true)
}

func (s *idStore) createLedgerID(ledgerID string, metadata *msgs.LedgerMetadata) error {
	m, err := s.getLedgerMetadata(ledgerID)
	if err != nil {
		return err
	}
	if m != nil {
		return errors.Errorf("ledger [%s] already exists with state [%s]", ledgerID, m.GetStatus())
	}
	metadataBytes, err := protoutil.Marshal(metadata)
	if err != nil {
		return err
	}
	return s.db.Put(metadataKey(ledgerID), metadataBytes, true)

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Check the wrapped error for leveldb I/O or corruption issues
  2. Free disk/permissions and re-run the upgrade; the batch is idempotent
  3. Restore from backup if the store is corrupted
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at core/ledger/kvledger/kv_ledger_provider.go:613 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/2c35d31fcbfaae87. Report an issue: GitHub.