hyperledger / hyperledger/fabric-chaincode-java

Unhelpful error if you don't specify enough parameters for a contract-api managed transaction

Đang mở
#230 2 bình luận 0 reaction 1 người được giao Được @jt-nti nhận Xem trên GitHub
Ngôn ngữ chính
Java
Star
323
Fork
210
Merge trung bình
8 giờ 1 phút
Pull request đã merge (30 ngày)
8

Mô tả

Using 2.2.3LTS
I have the following method
```
@Transaction(submit=false)
public QueryResponse paginatedRichQuery(Context ctx, String queryString, String pagesize, String passedBookmark) {
```

I invoke paginatedRichQuery with inly 2 parameters rather than 3. The following is output in the chaincode container

```
Thread[fabric-txinvoke:1,5,main] 11:51:07:448 SEVERE org.hyperledger.fabric.shim.impl.ChaincodeInvocationTask call [2eaadd5f] Invoke failed with error code 500. Sending ERROR
Thread[fabric-txinvoke:5,5,main] 11:51:07:448 SEVERE org.hyperledger.fabric.Logger error Index 3 out of bounds for length 3java.lang.IndexOutOfBoundsException: Index 3 out of bounds for length 3
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:458)
at org.hyperledger.fabric.contract.execution.impl.ContractExecutionService.convertArgs(ContractExecutionService.java:99)
at org.hyperledger.fabric.contract.execution.impl.ContractExecutionService.executeRequest(ContractExecutionService.java:57)
at org.hyperledger.fabric.contract.ContractRouter.processRequest(ContractRouter.java:119)
at org.hyperledger.fabric.contract.ContractRouter.invoke(ContractRouter.java:130)
at org.hyperledger.fabric.shim.impl.ChaincodeInvocationTask.call(ChaincodeInvocationTask.java:100)
at org.hyperledger.fabric.shim.impl.InvocationTaskManager.lambda$newTask$17(InvocationTaskManager.java:265)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1736)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
```

It looks like the contract api doesn't handle this well and throws an `IndexOutOfBoundsException`

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.