diff --git a/src/main/java/org/tron/core/capsule/TransactionCapsule.java b/src/main/java/org/tron/core/capsule/TransactionCapsule.java index dd61bcbe877..6bb32fb8bff 100755 --- a/src/main/java/org/tron/core/capsule/TransactionCapsule.java +++ b/src/main/java/org/tron/core/capsule/TransactionCapsule.java @@ -925,7 +925,6 @@ public void setResult(Runtime runtime) { return; } this.setResultCode(contractResult.UNKNOWN); - return; } public void setResultCode(contractResult code) { diff --git a/src/main/java/org/tron/core/capsule/TransactionRetCapsule.java b/src/main/java/org/tron/core/capsule/TransactionRetCapsule.java index 8fd483df5fa..f2b41533384 100644 --- a/src/main/java/org/tron/core/capsule/TransactionRetCapsule.java +++ b/src/main/java/org/tron/core/capsule/TransactionRetCapsule.java @@ -40,6 +40,9 @@ public void addTransactionInfo(TransactionInfo result) { @Override public byte[] getData() { + if (Objects.isNull(transactionRet)) { + return null; + } return transactionRet.toByteArray(); } diff --git a/src/main/java/org/tron/core/config/args/Args.java b/src/main/java/org/tron/core/config/args/Args.java index 25c87796bfc..4593036afbc 100644 --- a/src/main/java/org/tron/core/config/args/Args.java +++ b/src/main/java/org/tron/core/config/args/Args.java @@ -135,11 +135,11 @@ public class Args { private String storageDbEngine = ""; @Parameter(names = { - "--storage-db-synchronous"}, description = "Storage db is synchronous or not.(true or flase)") + "--storage-db-synchronous"}, description = "Storage db is synchronous or not.(true or false)") private String storageDbSynchronous = ""; @Parameter(names = { - "--contract-parse-enable"}, description = "enable contract parses in java-tron or not.(true or flase)") + "--contract-parse-enable"}, description = "enable contract parses in java-tron or not.(true or false)") private String contractParseEnable = ""; @Parameter(names = {"--storage-index-directory"}, description = "Storage index directory") diff --git a/src/main/java/org/tron/core/db/Manager.java b/src/main/java/org/tron/core/db/Manager.java index b6e24dfea63..643a5febbae 100644 --- a/src/main/java/org/tron/core/db/Manager.java +++ b/src/main/java/org/tron/core/db/Manager.java @@ -1389,7 +1389,10 @@ public synchronized BlockCapsule generateBlock( tmpSeesion.merge(); // push into block blockCapsule.addTransaction(trx); - transationRetCapsule.addTransactionInfo(result); + + if (Objects.nonNull(result)) { + transationRetCapsule.addTransactionInfo(result); + } if (fromPending) { iterator.remove(); } diff --git a/src/main/java/org/tron/core/db/TransactionRetStore.java b/src/main/java/org/tron/core/db/TransactionRetStore.java index f97c7e030f5..a4230e7a36c 100644 --- a/src/main/java/org/tron/core/db/TransactionRetStore.java +++ b/src/main/java/org/tron/core/db/TransactionRetStore.java @@ -39,10 +39,15 @@ public TransactionInfoCapsule getTransactionInfo(byte[] key) throws BadItemExcep return null; } byte[] value = revokingDB.getUnchecked(ByteArray.fromLong(blockNumber)); + if (Objects.isNull(value)) { + return null; + } + TransactionRetCapsule result = new TransactionRetCapsule(value); if (Objects.isNull(result) || Objects.isNull(result.getInstance())) { return null; } + for (TransactionInfo transactionResultInfo : result.getInstance().getTransactioninfoList()) { if (transactionResultInfo.getId().equals(ByteString.copyFrom(key))) { return new TransactionInfoCapsule(transactionResultInfo); diff --git a/src/test/java/org/tron/core/db/TransactionRetStoreTest.java b/src/test/java/org/tron/core/db/TransactionRetStoreTest.java index 8fdd6d76b59..baf36ddb5b9 100644 --- a/src/test/java/org/tron/core/db/TransactionRetStoreTest.java +++ b/src/test/java/org/tron/core/db/TransactionRetStoreTest.java @@ -73,4 +73,19 @@ public void get() throws BadItemException { TransactionInfoCapsule resultCapsule = transactionRetStore.getTransactionInfo(transactionId); Assert.assertNotNull("get transaction ret store", resultCapsule); } + + @Test + public void put() { + TransactionInfoCapsule transactionInfoCapsule = new TransactionInfoCapsule(); + transactionInfoCapsule.setId(transactionId); + transactionInfoCapsule.setFee(1000L); + transactionInfoCapsule.setBlockNumber(100L); + transactionInfoCapsule.setBlockTimeStamp(200L); + + TransactionRetCapsule transactionRetCapsule = new TransactionRetCapsule(); + transactionRetCapsule.addTransactionInfo(transactionInfoCapsule.getInstance()); + Assert.assertNull("put transaction info error", transactionRetStore.getUnchecked(transactionInfoCapsule.getId())); + transactionRetStore.put(transactionInfoCapsule.getId(), transactionRetCapsule); + Assert.assertNotNull("get transaction info error", transactionRetStore.getUnchecked(transactionInfoCapsule.getId())); + } } \ No newline at end of file