私の Java チェーンコード (Fabric 1.4.4 で実行されている) が、作成される新しいアセットが既に存在することを示すために例外をスローしたいとします。トランザクションを実行しているピア ノードに記録される問題またはエラー (この場合は、「コントラクト LL00001 は既に登録されています」) で RunTimeException をスローしています。
2019-11-29 20:15:37.807 UTC [peer.chaincode.nid1-blockchain-hapeer1-mrrc-0.1.4] func2 -> INFO 16a8ec Contract LL00001 already registered
2019-11-29 20:15:37.807 UTC [peer.chaincode.nid1-blockchain-hapeer1-mrrc-0.1.4] func2 -> INFO 16a8ed java.lang.RuntimeException: Contract LL00001 already registered
しかし、スタック トレースの後、エラーの説明や Java のエラー Exception への参照を含めずに、ピア ノードが 500 エラーとしてそれを返していることがわかります (そのエラーは言語に依存しないため、これは理にかなっています)。
2019-11-29 20:15:37.807 UTC [peer.chaincode.nid1-blockchain-hapeer1-mrrc-0.1.4] func2 -> INFO 16a8ff 20:15:37:804 SEVERE org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask call [1f56a053] Invoke failed with error code 500. Sending ERROR
クライアント Java アプリケーション (fabrik-java-sdk を使用) に記録されているもの:
org.hyperledger.fabric.sdk.exception.InvalidArgumentException: Proposal response is invalid.
at org.hyperledger.fabric.sdk.ProposalResponse.getChaincodeActionResponsePayload(ProposalResponse.java:272)
at ...
したがって、チェーンコードに問題があったことはわかっていますが、何が問題なのかはわかりません。ユーザーに問題を表示できるように、エラーの種類と説明を取得するにはどうすればよいですか? ここで、ピア ノードに移動してログをチェックし、問題を確認する必要があります。
注: チェーンコード クラスで新しい org.hyperledger.fabric.contract.ContractInterface を拡張しています。
更新: ピア ノードはエラー例外 (org.hyperledger.fabric.shim.ChaincodeException) をログに記録し、ログに示されているように 500 応答でエラー メッセージ (「ドキュメントが見つかりませんでした」) を正しく返すようですが、このメッセージは表示されません。 Java SDK にアクセスする
2019-12-23 22:11:09.178 UTC [peer.chaincode.nid1-blockchain-hapeer1-mrrc-0.9.7] func2 -> INFO 5aa7 22:11:09:176 SEVERE org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask call [12cc4ad0] Invoke failed with error code 500. Sending ERROR
2019-12-23 22:11:09.179 UTC [peer.chaincode.nid1-blockchain-hapeer1-mrrc-0.9.7] func2 -> INFO 5aa8 22:11:09:177 FINE org.hyperledger.fabric.shim.impl.ChaincodeSupportClient$2 accept > sendToPeer 12cc4ad09a1feb7fc1246ac04bf69509204ca74368be2c7e4bbf0a503e90417f
2019-12-23 22:11:09.181 UTC [endorser] callChaincode -> INFO 5aa9 [mrrc][12cc4ad0] Exit chaincode: name:"mrrc" (36ms)
2019-12-23 22:11:09.181 UTC [endorser] SimulateProposal -> ERRO 5aaa [mrrc][12cc4ad0] failed to invoke chaincode name:"mrrc" , error: transaction returned with failure: The document was not found
編集:Java SDKのエラーのようです。Fabric の JIRA で JIRA の問題を作成しました: https://jira.hyperledger.org/browse/FABJ-508