hyperledger/fabric · error

ledger [%s] already exists with state [%s]

Error message

ledger [%s] already exists with state [%s]

What it means

Returned by idStore.createLedgerID when metadata already exists for the ledgerID — the channel was already created (or is under construction). It prevents double-creation, reporting the existing ledger's current status (active/pending).

Source

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

	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)
}

func (s *idStore) deleteLedgerID(ledgerID string) error {
	return s.db.Delete(metadataKey(ledgerID), true)
}

func (s *idStore) updateLedgerStatus(ledgerID string, newStatus msgs.Status) error {
	metadata, err := s.getLedgerMetadata(ledgerID)
	if err != nil {
		return err
	}
	if metadata == nil {

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Drop or archive the existing ledger before recreating it
  2. If the existing ledger is desired, skip creation and open it instead
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/ledger/kvledger/kv_ledger_provider.go:625 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/4c0dda8a2e39c4ab. Report an issue: GitHub.