From 03681accaf139f2615c100f118eee624c36f4ff3 Mon Sep 17 00:00:00 2001 From: shaozhuguang Date: Mon, 29 Jun 2020 17:52:04 +0800 Subject: [PATCH] add logs --- .../bftsmart/service/BftsmartNodeServer.java | 4 +- .../service/PeerConnectionManager.java | 46 ++++++++++++++----- .../sdk/service/PeerServiceProxy.java | 6 +++ 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/service/BftsmartNodeServer.java b/source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/service/BftsmartNodeServer.java index 5698f2c2..701e6457 100644 --- a/source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/service/BftsmartNodeServer.java +++ b/source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/service/BftsmartNodeServer.java @@ -466,9 +466,9 @@ public class BftsmartNodeServer extends DefaultRecoverable implements NodeServer } resp.setExecutionState(TransactionState.IGNORED_BY_BLOCK_FULL_ROLLBACK); updatedResponses.add(BinaryProtocol.encode(resp, TransactionResponse.class)); + } + return updatedResponses; } - return updatedResponses; -} /** * * Decision has been made at the consensus stage, commit block diff --git a/source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java b/source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java index af4826cd..790283ee 100644 --- a/source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java +++ b/source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java @@ -319,18 +319,34 @@ public class PeerConnectionManager implements PeerService, PeerConnector { } catch (Exception e) { LOGGER.error(String.format("Peer[%s] get ledger[%s]'s latest block height fail !!!", entry.getKey(), ledgerHash.toBase58()), e); - // 此错误是由于对端的节点没有重连导致,需要进行重连操作 - NetworkAddress peerAddress = entry.getKey(); - try { - PeerBlockchainServiceFactory peerServiceFactory = PeerBlockchainServiceFactory.connect( - gateWayKeyPair, peerAddress, peerProviders); - if (peerServiceFactory != null) { - tmpEntries.put(peerAddress, peerServiceFactory); + // 需要判断是否具有当前账本,有的话,进行重连,没有的话就算了 + BlockchainService blockchainService = sf.getBlockchainService(); + if (blockchainService instanceof PeerServiceProxy) { + boolean isNeedReconnect = false; + ledgerHashs = ((PeerServiceProxy) blockchainService).getLedgerHashsDirect(); + if (ledgerHashs != null) { + for (HashDigest h : ledgerHashs) { + if (h.equals(ledgerHash)) { + // 确实存在对应的账本,则重连 + isNeedReconnect = true; + } + } } - } catch (Exception ee) { - LOGGER.error(String.format("Peer[%s] reconnect fail !!!", - entry.getKey()), e); - } + if (isNeedReconnect) { + // 此错误是由于对端的节点没有重连导致,需要进行重连操作 + NetworkAddress peerAddress = entry.getKey(); + try { + PeerBlockchainServiceFactory peerServiceFactory = PeerBlockchainServiceFactory.connect( + gateWayKeyPair, peerAddress, peerProviders); + if (peerServiceFactory != null) { + tmpEntries.put(peerAddress, peerServiceFactory); + } + } catch (Exception ee) { + LOGGER.error(String.format("Peer[%s] reconnect fail !!!", + entry.getKey()), e); + } + } + } } } else { defaultPeerAddress = entry.getKey(); @@ -378,7 +394,10 @@ public class PeerConnectionManager implements PeerService, PeerConnector { ledgerHashs = ((PeerServiceProxy) blockchainService).getLedgerHashsDirect(); if (ledgerHashs != null) { ledgerSize = ledgerHashs.length; - } + for (HashDigest h : ledgerHashs) { + LOGGER.info("Peer[{}] get ledger direct [{}]", mostLedgerPeerServiceFactory.peerAddress, h.toBase58()); + } + } } } catch (Exception e) { // 连接失败的情况下清除该连接 @@ -397,6 +416,9 @@ public class PeerConnectionManager implements PeerService, PeerConnector { try { if (loopBlockchainService instanceof PeerServiceProxy) { ledgerHashs = ((PeerServiceProxy) loopBlockchainService).getLedgerHashsDirect(); + for (HashDigest h : ledgerHashs) { + LOGGER.info("Peer[{}] get ledger direct [{}]", entry.getKey(), h.toBase58()); + } if (ledgerHashs.length > ledgerSize) { tempMostLedgerPeerServiceFactory = new PeerServiceFactory(entry.getKey(),entry.getValue()); } diff --git a/source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/service/PeerServiceProxy.java b/source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/service/PeerServiceProxy.java index 7ac4ecc1..492cfe80 100644 --- a/source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/service/PeerServiceProxy.java +++ b/source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/service/PeerServiceProxy.java @@ -8,6 +8,7 @@ import com.jd.blockchain.sdk.LedgerAccessContext; import com.jd.blockchain.sdk.proxy.BlockchainServiceProxy; import com.jd.blockchain.transaction.BlockchainQueryService; import com.jd.blockchain.transaction.TransactionService; +import org.slf4j.LoggerFactory; import java.util.*; import java.util.concurrent.locks.Lock; @@ -21,6 +22,8 @@ import java.util.concurrent.locks.ReentrantLock; */ public class PeerServiceProxy extends BlockchainServiceProxy implements TransactionService { + private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(PeerServiceProxy.class); + private final Lock accessLock = new ReentrantLock(); /** @@ -90,6 +93,9 @@ public class PeerServiceProxy extends BlockchainServiceProxy implements Transact Collection ctxs = ledgerAccessContexts.values(); for (LedgerAccessContext ctx : ctxs) { HashDigest[] hashs = ctx.getQueryService().getLedgerHashs(); + for (HashDigest h : hashs) { + LOGGER.info("Get ledger[{}] by [{}]'s AccessContext !!!", h.toBase58(), ctx.getLedgerHash().toBase58()); + } ledgerHashs.addAll(Arrays.asList(hashs)); } }