From 0597ed7f1fc5f3b05d6be943a910aeb63236cbb4 Mon Sep 17 00:00:00 2001 From: vikingzzu Date: Mon, 30 Aug 2021 14:56:52 +0800 Subject: [PATCH] add logback shutdown hock --- .../common/application/ApplicationImpl.java | 2 + .../tron/core/config/TronLogShutdownHook.java | 42 +++++++++++++++++++ .../main/java/org/tron/program/FullNode.java | 2 + framework/src/main/resources/logback.xml | 2 +- 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 framework/src/main/java/org/tron/core/config/TronLogShutdownHook.java diff --git a/framework/src/main/java/org/tron/common/application/ApplicationImpl.java b/framework/src/main/java/org/tron/common/application/ApplicationImpl.java index edeadb4432b..8e80a568a96 100644 --- a/framework/src/main/java/org/tron/common/application/ApplicationImpl.java +++ b/framework/src/main/java/org/tron/common/application/ApplicationImpl.java @@ -11,6 +11,7 @@ import org.tron.core.db.Manager; import org.tron.core.metrics.MetricsUtil; import org.tron.core.net.TronNetService; +import org.tron.program.FullNode; @Slf4j(topic = "app") @Component @@ -73,6 +74,7 @@ public void shutdown() { dbManager.stopRePushTriggerThread(); EventPluginLoader.getInstance().stopPlugin(); logger.info("******** end to shutdown ********"); + FullNode.shutDownSign = true; } @Override diff --git a/framework/src/main/java/org/tron/core/config/TronLogShutdownHook.java b/framework/src/main/java/org/tron/core/config/TronLogShutdownHook.java new file mode 100644 index 00000000000..512ecf3ab62 --- /dev/null +++ b/framework/src/main/java/org/tron/core/config/TronLogShutdownHook.java @@ -0,0 +1,42 @@ +package org.tron.core.config; + +import ch.qos.logback.core.hook.ShutdownHookBase; +import ch.qos.logback.core.util.Duration; +import org.tron.program.FullNode; + +/** + * @author kiven + * tron log shutdown hock + */ +public class TronLogShutdownHook extends ShutdownHookBase { + + /** + * The default shutdown delay check unit. + */ + private static final Duration CHECK_SHUTDOWN_DELAY = Duration.buildByMilliseconds(100); + + /** + * The check times before shutdown. default is 50 + */ + private Integer check_times = 50; + + public TronLogShutdownHook() { + } + + @Override + public void run() { + try { + for (int i = 0; i < check_times; i++) { + if (FullNode.shutDownSign) { + break; + } + addInfo("Sleeping for " + CHECK_SHUTDOWN_DELAY); + Thread.sleep(CHECK_SHUTDOWN_DELAY.getMilliseconds()); + } + } catch (InterruptedException e) { + addInfo("TronLogShutdownHook run error :" + e.getMessage()); + } + super.stop(); + } + +} diff --git a/framework/src/main/java/org/tron/program/FullNode.java b/framework/src/main/java/org/tron/program/FullNode.java index 3d3d0f9bd8e..3bd9410168a 100644 --- a/framework/src/main/java/org/tron/program/FullNode.java +++ b/framework/src/main/java/org/tron/program/FullNode.java @@ -25,6 +25,8 @@ public class FullNode { public static final int dbVersion = 2; + public static volatile boolean shutDownSign = false; + public static void load(String path) { try { File file = new File(path); diff --git a/framework/src/main/resources/logback.xml b/framework/src/main/resources/logback.xml index ec2d2b3c1c9..fcdb7ffd16e 100644 --- a/framework/src/main/resources/logback.xml +++ b/framework/src/main/resources/logback.xml @@ -3,7 +3,7 @@ - +