hyperledger / hyperledger/fabric-chaincode-java

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

Abierto
#230 2 comentarios 0 reacciones 1 asignado Reclamado por @jt-nti Ver en GitHub
Lenguaje dominante
Java
Estrellas
323
Forks
210
Merge medio
8 h 1 min
PR fusionados (30 d)
8

Descripción

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`

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.