hyperledger/fabric · error

txid [%s]: unsuppored transaction. Transaction has already p

Error message

txid [%s]: unsuppored transaction. Transaction has already performed a paginated query. Writes are not allowed

What it means

Returned by checkPaginatedQueryPerformed when a write is attempted after the simulator already executed a paginated query. The pagination state would make the write's view inconsistent, so the simulator forbids writes post-pagination.

Source

Thrown at core/ledger/kvledger/txmgmt/txmgr/tx_simulator.go:260

func (s *txSimulator) checkPvtdataQueryPerformed() error {
	if s.pvtdataQueriesPerformed {
		return errors.Errorf("txid [%s]: unsuppored transaction. Transaction has already performed queries on pvt data. Writes are not allowed", s.txid)
	}
	return nil
}

func (s *txSimulator) checkBeforePaginatedQueries() error {
	if s.writePerformed {
		return errors.Errorf("txid [%s]: unsuppored transaction. Paginated queries are supported only in a read-only transaction", s.txid)
	}
	s.paginatedQueriesPerformed = true
	return nil
}

func (s *txSimulator) checkPaginatedQueryPerformed() error {
	if s.paginatedQueriesPerformed {
		return errors.Errorf("txid [%s]: unsuppored transaction. Transaction has already performed a paginated query. Writes are not allowed", s.txid)
	}
	return nil
}

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Separate paginated queries and writes into different transactions
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/ledger/kvledger/txmgmt/txmgr/tx_simulator.go:260 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/db42a4b6826968a1. Report an issue: GitHub.