NullPointerException trying to handle an unannotated return type via contract-api
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- java
- Lĩnh vực
- api, blockchain
Hướng nghiên cứu
Bắt đầu bằng cách đọc JSONTransactionSerializer.java tại dòng 84 và lần theo đường đi của giá trị trả về qua ContractExecutionService.convertReturn. Tái hiện lời gọi paginatedRichQuery với kiểu trả về QueryResponse được nêu và kiểm tra cách giá trị trả về không có chú thích được xử lý. Hoàn tất khi giao dịch không còn thất bại với NullPointerException trong quá trình tuần tự hóa giá trị trả về.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Using 2.2.3LTS using the contract-api I have this method
@Transaction(submit=false)
public QueryResponse<String> paginatedRichQuery(Context ctx, String queryString, String pagesize, String passedBookmark) {
logger.debug("Entering paginatedRichQuery with pagesize [" + pagesize + "] and query string: " + queryString);
int pageSize = Integer.parseInt(pagesize);
final QueryResultsIteratorWithMetadata<KeyValue> iterator = ctx.getStub().getQueryResultWithPagination(queryString, pageSize, passedBookmark);
QueryResponseMetadata metadata = iterator.getMetadata();
ArrayList<String> results = this.getAllResults(iterator);
QueryResponse<String> response = new QueryResponse<String>(results.toArray(new String[results.size()]), new ResponseMetadata(metadata));
logger.debug("Exiting paginatedRichQuery with response: " + response.toString());
return response;
}
QueryResponse is defined as follows
public class QueryResponse<T> {
private T[] results;
private ResponseMetadata responseMetadata;
public QueryResponse(T[] results, ResponseMetadata responseMetadata) {
this.results = results;
this.responseMetadata = responseMetadata;
}
public T[] getResults() {
return results;
}
public void setResults(T[] results) {
this.results = results;
}
public ResponseMetadata getResponseMetadata() {
return responseMetadata;
}
public void setResponseMetadata(ResponseMetadata responseMetadata) {
this.responseMetadata = responseMetadata;
}
}
When I invoke the transaction it fails due to trying because of the return value with
Thread[fabric-txinvoke:5,5,main] 12:04:38:330 INFO org.hyperledger.fabric.contract.ContractRouter processRequest Got routing:paginatedRichQuery:org.example.FixedAssetContract
Thread[fabric-txinvoke:5,5,main] 12:04:38:345 SEVERE org.hyperledger.fabric.Logger error nulljava.lang.NullPointerException
at org.hyperledger.fabric.contract.execution.JSONTransactionSerializer.toBuffer(JSONTransactionSerializer.java:84)
at org.hyperledger.fabric.contract.execution.impl.ContractExecutionService.convertReturn(ContractExecutionService.java:89)
at org.hyperledger.fabric.contract.execution.impl.ContractExecutionService.executeRequest(ContractExecutionService.java:67)
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)
- Ngôn ngữ chính
- Java
- Star
- 322
- Fork
- 210
- Merge trung bình
- 15 giờ 16 phút
- Pull request đã merge (30 ngày)
- 29
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của hyperledger/fabric-chaincode-java
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
hyperledger/fabric-chaincode-java#628 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Optimize ClassGraph ScanningĐang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
hyperledger/fabric-chaincode-java#627 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
DataType nested classĐang mởbug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 75/100
hyperledger/fabric-chaincode-java#626 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
External Chaincode Mutual TLSĐang mởbug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
hyperledger/fabric-chaincode-java#625 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Read/write batchingCó thể làm lại được @jadebluestar đã nhận 117 ngày trước và không có pull request nào đang mở. Đang mởenhancement help wanted
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
hyperledger/fabric-chaincode-java#378 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của hyperledger/fabric-chaincode-java
Issue tương tự
-
human-required sync-failed
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Azure/osdu-spi-file#63 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
frontend quick win
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
CodeForPhilly/benefit-decision-toolkit#571 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
approved
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
checkstyle/checkstyle#22129 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Add Hardcharger JDBC driverCó thể đã có người làm @prmoore77 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày