{"record":{"id":"248bab7fe2d8cd29","repo":"hyperledger/fabric","slug":"not-supported","errorCode":null,"errorMessage":"not supported","messagePattern":"not supported","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/ledger/kvledger/txmgmt/txmgr/tx_simulator.go","lineNumber":218,"sourceCode":"\tdefer func() { s.simulationResultsComputed = true }()\n\tlogger.Debugf(\"Simulation completed, getting simulation results\")\n\tif s.queryExecutor.err != nil {\n\t\treturn nil, s.queryExecutor.err\n\t}\n\ts.queryExecutor.addRangeQueryInfo()\n\tsimResults, err := s.rwsetBuilder.GetTxSimulationResults()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// The txSimulator structures need to be cloned so that subsequent RW set additions don't modify these TX simulation results\n\tsimResults.PrivateReads = s.privateReads.Clone()\n\tsimResults.WritesetMetadata = s.writesetMetadata.Clone()\n\treturn simResults, nil\n}\n\n// ExecuteUpdate implements method in interface `ledger.TxSimulator`\nfunc (s *txSimulator) ExecuteUpdate(query string) error {\n\treturn errors.New(\"not supported\")\n}\n\nfunc (s *txSimulator) checkWritePrecondition(key string, value []byte) error {\n\tif err := s.checkDone(); err != nil {\n\t\treturn err\n\t}\n\tif err := s.checkPvtdataQueryPerformed(); err != nil {\n\t\treturn err\n\t}\n\tif err := s.checkPaginatedQueryPerformed(); err != nil {\n\t\treturn err\n\t}\n\ts.writePerformed = true\n\treturn s.queryExecutor.txmgr.db.ValidateKeyValue(key, value)\n}\n\nfunc (s *txSimulator) checkBeforePvtdataQueries() error {\n\tif s.writePerformed {","sourceCodeStart":200,"sourceCodeEnd":236,"githubUrl":"https://github.com/hyperledger/fabric/blob/2736b63f8fd5932511d56fe68b7039d15977f7f6/core/ledger/kvledger/txmgmt/txmgr/tx_simulator.go#L200-L236","documentation":"Returned by txSimulator.ExecuteUpdate, which is a deliberately unsupported operation on a transaction simulator. Simulators are read/write-scoped to simulation, not to ad-hoc state updates, so the method returns this sentinel.","triggerScenarios":"Thrown at core/ledger/kvledger/txmgmt/txmgr/tx_simulator.go:218 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use the appropriate ledger API for direct state updates instead of a simulator","Refactor the caller to not call ExecuteUpdate on simulators"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2736b63f8fd5932511d56fe68b7039d15977f7f6","analyzedAt":"2026-09-04T08:52:36.465Z","contentChangedAt":"2026-09-04T08:52:36.465Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}