Search in sources :

Example 1 with DownloadService

use of io.nuls.protocol.service.DownloadService in project nuls by nuls-io.

the class BlockMonitorProcess method doProcess.

public void doProcess() {
    Block bestBlock = NulsContext.getInstance().getBestBlock();
    if (bestBlock.getHeader().getHeight() == 0) {
        return;
    }
    if (bestBlock.getHeader().getHash().equals(lastBestHash) && bestBlock.getHeader().getTime() < (TimeService.currentTimeMillis() - RESET_TIME_INTERVAL)) {
        lastBestHash = bestBlock.getHeader().getHash();
        NulsContext.getServiceBean(ConsensusPocServiceImpl.class).reset();
        return;
    }
    lastBestHash = bestBlock.getHeader().getHash();
    List<Block> blockList = chainManager.getMasterChain().getChain().getAllBlockList();
    int minCount = 3;
    if (blockList.size() < minCount) {
        return;
    }
    int count = 0;
    Set<String> addressSet = new HashSet<>();
    for (int i = blockList.size() - 1; i >= 0; i--) {
        Block block = blockList.get(i);
        addressSet.add(block.getHeader().getPackingAddressStr());
        count++;
        if (count > minCount) {
            break;
        }
    }
    DownloadService downloadService = NulsContext.getServiceBean(DownloadService.class);
    if (count > minCount && addressSet.size() == 1 && ConsensusConfig.getSeedNodeList().size() > 1) {
        // NulsContext.getServiceBean(ConsensusPocServiceImpl.class).reset();
        return;
    }
    if (downloadService.isDownloadSuccess().isSuccess() && bestBlock.getHeader().getTime() < (TimeService.currentTimeMillis() - RESET_TIME_INTERVAL)) {
    // NulsContext.getServiceBean(ConsensusPocServiceImpl.class).reset();
    }
}
Also used : ConsensusPocServiceImpl(io.nuls.consensus.poc.service.impl.ConsensusPocServiceImpl) Block(io.nuls.kernel.model.Block) DownloadService(io.nuls.protocol.service.DownloadService) HashSet(java.util.HashSet)

Example 2 with DownloadService

use of io.nuls.protocol.service.DownloadService in project nuls by nuls-io.

the class Bootstrap method sysStart.

private static void sysStart() throws Exception {
    do {
        MicroKernelBootstrap mk = MicroKernelBootstrap.getInstance();
        mk.init();
        mk.start();
        WalletVersionManager.start();
        initModules();
        String ip = NulsConfig.MODULES_CONFIG.getCfgValue(RpcConstant.CFG_RPC_SECTION, RpcConstant.CFG_RPC_SERVER_IP, RpcConstant.DEFAULT_IP);
        int port = NulsConfig.MODULES_CONFIG.getCfgValue(RpcConstant.CFG_RPC_SECTION, RpcConstant.CFG_RPC_SERVER_PORT, RpcConstant.DEFAULT_PORT);
        copyWebFiles();
        if (NULSParams.BOOTSTRAP.getRpcIp() != null) {
            ip = NULSParams.BOOTSTRAP.getRpcIp();
        }
        if (NULSParams.BOOTSTRAP.getRpcPort() != null) {
            port = NULSParams.BOOTSTRAP.getRpcPort();
        }
        RpcServerManager.getInstance().startServer(ip, port);
        LanguageService languageService = NulsContext.getServiceBean(LanguageService.class);
        String languageDB = (String) languageService.getLanguage().getData();
        String language = null == languageDB ? I18nUtils.getLanguage() : languageDB;
        I18nUtils.setLanguage(language);
        if (null == languageDB) {
            languageService.saveLanguage(language);
        }
    } while (false);
    // if isDaemon flag is true, don't launch the WebView
    boolean isDaemon = NulsConfig.MODULES_CONFIG.getCfgValue(RpcConstant.CFG_RPC_SECTION, RpcConstant.CFG_RPC_DAEMON, false);
    if (!isDaemon) {
        TaskManager.asynExecuteRunnable(new WebViewBootstrap());
    }
    int i = 0;
    Map<NulsDigestData, List<Node>> map = new HashMap<>();
    NulsContext context = NulsContext.getInstance();
    DownloadService downloadService = NulsContext.getServiceBean(DownloadService.class);
    while (true) {
        if (context.getStop() > 0) {
            if (context.getStop() == 2) {
                Runtime.getRuntime().addShutdownHook(new ShutdownHook());
            }
            System.exit(0);
        }
        if (NulsContext.mastUpGrade) {
            // 如果强制升级标志开启,停止网络连接
            ModuleManager.getInstance().stopModule(NetworkConstant.NETWORK_MODULE_ID);
            Log.error(">>>>>> The new protocol version has taken effect, the network connection has been disconnected,please upgrade immediately **********");
        }
        try {
            Thread.sleep(1000L);
        } catch (InterruptedException e) {
            Log.error(e);
        }
        if (i > 10) {
            i = 0;
            if (!downloadService.isDownloadSuccess().isSuccess() && CollectThread.getInstance().getStartHeight() > 0) {
                Log.info("collect-start:{},request-start:{},BlockQueueSize:{}", CollectThread.getInstance().getStartHeight(), CollectThread.getInstance().getRequestStartHeight(), BlockQueueProvider.getInstance().size());
            }
            Block bestBlock = NulsContext.getInstance().getBestBlock();
            Collection<Node> nodes = NulsContext.getServiceBean(NetworkService.class).getAvailableNodes();
            Log.info("bestHeight:" + bestBlock.getHeader().getHeight() + " , txCount : " + bestBlock.getHeader().getTxCount() + " , tx memory pool count : " + TxMemoryPool.getInstance().size() + " - " + TxMemoryPool.getInstance().getOrphanPoolSize() + " , hash : " + bestBlock.getHeader().getHash() + ",nodeCount:" + nodes.size());
            map.clear();
            for (Node node : nodes) {
                List<Node> ips = map.get(node.getBestBlockHash());
                if (null == ips) {
                    ips = new ArrayList<>();
                    map.put(node.getBestBlockHash(), ips);
                }
                ips.add(node);
            }
            for (NulsDigestData key : map.keySet()) {
                if (key == null)
                    continue;
                List<Node> nodeList = map.get(key);
                long height = nodeList.get(0).getBestBlockHeight();
                StringBuilder ids = new StringBuilder();
                for (Node node : nodeList) {
                    ids.append("," + node.getId());
                }
                Log.info("height:" + height + ",count:" + nodeList.size() + ", hash:" + key.getDigestHex() + ids);
            }
        } else {
            i++;
        }
    }
}
Also used : ShutdownHook(io.nuls.client.rpc.resources.thread.ShutdownHook) Node(io.nuls.network.model.Node) DownloadService(io.nuls.protocol.service.DownloadService) MicroKernelBootstrap(io.nuls.kernel.MicroKernelBootstrap) WebViewBootstrap(io.nuls.client.web.view.WebViewBootstrap) LanguageService(io.nuls.client.storage.LanguageService) NulsContext(io.nuls.kernel.context.NulsContext) NulsDigestData(io.nuls.kernel.model.NulsDigestData) Block(io.nuls.kernel.model.Block) NetworkService(io.nuls.network.service.NetworkService)

Aggregations

Block (io.nuls.kernel.model.Block)2 DownloadService (io.nuls.protocol.service.DownloadService)2 ShutdownHook (io.nuls.client.rpc.resources.thread.ShutdownHook)1 LanguageService (io.nuls.client.storage.LanguageService)1 WebViewBootstrap (io.nuls.client.web.view.WebViewBootstrap)1 ConsensusPocServiceImpl (io.nuls.consensus.poc.service.impl.ConsensusPocServiceImpl)1 MicroKernelBootstrap (io.nuls.kernel.MicroKernelBootstrap)1 NulsContext (io.nuls.kernel.context.NulsContext)1 NulsDigestData (io.nuls.kernel.model.NulsDigestData)1 Node (io.nuls.network.model.Node)1 NetworkService (io.nuls.network.service.NetworkService)1 HashSet (java.util.HashSet)1