hyperledger/fabric · error
error marshalling json data
Error message
error marshalling json data
What it means
Returned by the CouchDB client when json.Marshal fails while encoding the bulk-get request body (the keymap of document IDs/revisions). Request serialization for batch document retrieval failed before any HTTP call was made.
Source
Thrown at core/ledger/kvledger/txmgmt/statedb/statecouchdb/couchdb.go:1339
}
queryParms := batchRetrieveURL.Query()
// While BatchRetrieveDocumentMetadata() does not return the entire document,
// for reads/writes, we do need to get document so that we can get the ledger version of the key.
// TODO For blind writes we do not need to get the version, therefore when we bulk get
// the revision numbers for the write keys that were not represented in read set
// (the second time BatchRetrieveDocumentMetadata is called during block processing),
// we could set include_docs to false to optimize the response.
queryParms.Add("include_docs", "true")
keymap := make(map[string]any)
keymap["keys"] = keys
jsonKeys, err := json.Marshal(keymap)
if err != nil {
return nil, errors.Wrap(err, "error marshalling json data")
}
// get the number of retries
maxRetries := dbclient.couchInstance.conf.MaxRetries
resp, _, err := dbclient.handleRequest(http.MethodPost, "BatchRetrieveDocumentMetadata", batchRetrieveURL, jsonKeys, "", "", maxRetries, true, &queryParms, "_all_docs")
if err != nil {
return nil, err
}
defer closeResponseBody(resp)
if couchdbLogger.IsEnabledFor(zapcore.DebugLevel) {
dump, _ := httputil.DumpResponse(resp, false)
// compact debug log by replacing carriage return / line feed with dashes to separate http headers
couchdbLogger.Debugf("[%s] HTTP Response: %s", dbclient.dbName, bytes.Replace(dump, []byte{0x0d, 0x0a}, []byte{0x20, 0x7c, 0x20}, -1))
}
// handle as JSON documentView on GitHub (pinned to 2736b63f8f)
Solutions
- Inspect the wrapped marshal error for unsupported key types
- Report/fix the internal data structure passed to the marshaller
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at core/ledger/kvledger/txmgmt/statedb/statecouchdb/couchdb.go:1339 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/905ed502e49f698a.
Report an issue: GitHub.