From b65f9111d26963bcfa33fda42a37a782684346cd Mon Sep 17 00:00:00 2001 From: zhaoguangwei Date: Wed, 27 May 2020 19:13:38 +0800 Subject: [PATCH] =?UTF-8?q?delete=20the=20ledger-model=20in=20runtime-cont?= =?UTF-8?q?ext;=20use=20ACCOUNT=5FREGISTER=5FCONFLICT=20STATE=EF=BC=9B=20t?= =?UTF-8?q?hrow=20UndeclaredThrowableException=20in=20the=20JavaContractCo?= =?UTF-8?q?de.java;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contract/jvm/JavaContractCode.java | 10 ++++++++-- .../ledger/core/MerkleAccountSet.java | 2 +- .../blockchain/ledger/TransactionState.java | 10 +++++----- source/runtime/runtime-context/pom.xml | 6 ------ .../jd/blockchain/runtime/AbstractModule.java | 19 ++++++++++++++----- .../web/LedgerInitializeWebController.java | 4 ++-- 6 files changed, 30 insertions(+), 21 deletions(-) diff --git a/source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java b/source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java index fa4d8260..42c8711a 100644 --- a/source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java +++ b/source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java @@ -1,7 +1,9 @@ package com.jd.blockchain.contract.jvm; +import java.lang.reflect.UndeclaredThrowableException; import java.util.concurrent.Callable; +import com.jd.blockchain.ledger.ContractExecuteException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -100,8 +102,12 @@ public class JavaContractCode extends AbstractContractCode { } @Override - public BytesValue call() throws Exception { - return JavaContractCode.super.processEvent(eventContext); + public BytesValue call() { + try { + return JavaContractCode.super.processEvent(eventContext); + } catch (Exception e) { + throw new UndeclaredThrowableException(new ContractExecuteException()); + } } } diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleAccountSet.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleAccountSet.java index 9ee496cc..2f6f216c 100644 --- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleAccountSet.java +++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleAccountSet.java @@ -250,7 +250,7 @@ public class MerkleAccountSet implements Transactional, MerkleProvable, AccountQ } long version = merkleDataset.getVersion(address); if (version >= 0) { - throw new LedgerException("The registering account already exist!", TransactionState.DATA_ACCOUNT_EXIST); + throw new LedgerException("The registering account already exist!", TransactionState.ACCOUNT_REGISTER_CONFLICT); } if (!accessPolicy.checkRegistering(address, pubKey)) { diff --git a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/TransactionState.java b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/TransactionState.java index 10b34ebc..562ec830 100644 --- a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/TransactionState.java +++ b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/TransactionState.java @@ -29,11 +29,6 @@ public enum TransactionState { */ DATA_ACCOUNT_DOES_NOT_EXIST((byte) 0x02), - /** - * 数据账户存在; - */ - DATA_ACCOUNT_EXIST((byte) 0x12), - /** * 用户不存在; */ @@ -64,6 +59,11 @@ public enum TransactionState { */ REJECTED_BY_SECURITY_POLICY((byte) 0x10), + /** + * 账户注册冲突; + */ + ACCOUNT_REGISTER_CONFLICT((byte) 0x12), + /** * 由于在错误的账本上执行交易而被丢弃; */ diff --git a/source/runtime/runtime-context/pom.xml b/source/runtime/runtime-context/pom.xml index d73390c6..be55a091 100644 --- a/source/runtime/runtime-context/pom.xml +++ b/source/runtime/runtime-context/pom.xml @@ -15,11 +15,5 @@ utils-common ${project.version} - - - com.jd.blockchain - ledger-model - ${project.version} - \ No newline at end of file diff --git a/source/runtime/runtime-context/src/main/java/com/jd/blockchain/runtime/AbstractModule.java b/source/runtime/runtime-context/src/main/java/com/jd/blockchain/runtime/AbstractModule.java index e3faa296..90c69b20 100644 --- a/source/runtime/runtime-context/src/main/java/com/jd/blockchain/runtime/AbstractModule.java +++ b/source/runtime/runtime-context/src/main/java/com/jd/blockchain/runtime/AbstractModule.java @@ -1,12 +1,12 @@ package com.jd.blockchain.runtime; -import java.io.InputStream; -import java.util.concurrent.Callable; - -import com.jd.blockchain.ledger.ContractExecuteException; import com.jd.blockchain.utils.concurrent.AsyncFuture; import com.jd.blockchain.utils.concurrent.CompletableAsyncFuture; +import java.io.InputStream; +import java.lang.reflect.UndeclaredThrowableException; +import java.util.concurrent.Callable; + public abstract class AbstractModule implements Module { @@ -93,8 +93,17 @@ public abstract class AbstractModule implements Module { } try { return callable.call(); + } catch (UndeclaredThrowableException e) { + if(e.getCause() == null){ + throw e; + } + if(e.getCause() instanceof RuntimeException){ + throw (RuntimeException)e.getCause(); + } + + throw new IllegalStateException(e.getCause().getMessage(), e.getCause()); } catch (Exception e) { - throw new ContractExecuteException(e.getMessage(), e); + throw new IllegalStateException(e.getMessage(), e); } finally { if (origClassLoader != Thread.currentThread().getContextClassLoader()) { Thread.currentThread().setContextClassLoader(origClassLoader); diff --git a/source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitializeWebController.java b/source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitializeWebController.java index 272aa85c..125dc8ee 100644 --- a/source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitializeWebController.java +++ b/source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitializeWebController.java @@ -272,9 +272,9 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI do { allPermitted = startRequestPermissions(currentId, privKey); if (!allPermitted) { - if (retry < 181) { + if (retry < 601) { try { - Thread.sleep(10000); + Thread.sleep(3000); } catch (InterruptedException e) { // ignore interrupted exception; }