From 47a865b602c26a5f26e115cf1d3a6ce51035f81f Mon Sep 17 00:00:00 2001 From: Lei Zhang <27994433+SWJTU-ZhangLei@users.noreply.github.com> Date: Thu, 11 Jul 2024 09:40:38 +0800 Subject: [PATCH] [chore](fe) Add some important information in fe log for debug (#34352) (#37627) * Add git commit info in fe.log/fe.out when fe start * Add `metadata recovery mode` log in fe.log/fe.out * Add bdb journal info in fe.log when size over `1M` ## Proposed changes Issue Number: close #xxx --- .../main/java/org/apache/doris/DorisFE.java | 42 +++++++++++++------ .../doris/journal/bdbje/BDBEnvironment.java | 5 ++- .../doris/journal/bdbje/BDBJEJournal.java | 4 +- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java b/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java index d757ec1711d293..0ca080f6fd44ef 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java @@ -102,24 +102,13 @@ public static void start(String dorisHomeDir, String pidDir, String[] args, Star CommandLineOptions cmdLineOpts = parseArgs(args); try { - // pid file - if (!createAndLockPidFile(pidDir + "/fe.pid")) { - throw new IOException("pid file is already locked."); - } - // init config Config config = new Config(); config.init(dorisHomeDir + "/conf/fe.conf"); // Must init custom config after init config, separately. // Because the path of custom config file is defined in fe.conf config.initCustom(Config.custom_config_dir + "/fe_custom.conf"); - LOCK_FILE_PATH = Config.meta_dir + "/" + LOCK_FILE_NAME; - try { - tryLockProcess(); - } catch (Exception e) { - LOG.error("start doris failed.", e); - System.exit(-1); - } + LdapConfig ldapConfig = new LdapConfig(); if (new File(dorisHomeDir + "/conf/ldap.conf").exists()) { ldapConfig.init(dorisHomeDir + "/conf/ldap.conf"); @@ -136,9 +125,21 @@ public static void start(String dorisHomeDir, String pidDir, String[] args, Star // set dns cache ttl java.security.Security.setProperty("networkaddress.cache.ttl", "60"); + // pid file + if (!cmdLineOpts.isVersion() && !createAndLockPidFile(pidDir + "/fe.pid")) { + throw new IOException("pid file is already locked."); + } + // check command line options checkCommandLineOptions(cmdLineOpts); + try { + tryLockProcess(); + } catch (Exception e) { + LOG.error("start doris failed.", e); + System.exit(-1); + } + LOG.info("Doris FE starting..."); FrontendOptions.init(); @@ -368,6 +369,20 @@ private static CommandLineOptions parseArgs(String[] args) { return new CommandLineOptions(false, null, null, ""); } + private static void printVersion() { + System.out.println("Build version: " + Version.DORIS_BUILD_VERSION); + System.out.println("Build time: " + Version.DORIS_BUILD_TIME); + System.out.println("Build info: " + Version.DORIS_BUILD_INFO); + System.out.println("Build hash: " + Version.DORIS_BUILD_HASH); + System.out.println("Java compile version: " + Version.DORIS_JAVA_COMPILE_VERSION); + + LOG.info("Build version: {}", Version.DORIS_BUILD_VERSION); + LOG.info("Build time: {}", Version.DORIS_BUILD_TIME); + LOG.info("Build info: {}", Version.DORIS_BUILD_INFO); + LOG.info("Build hash: {}", Version.DORIS_BUILD_HASH); + LOG.info("Java compile version: {}", Version.DORIS_JAVA_COMPILE_VERSION); + } + private static void checkCommandLineOptions(CommandLineOptions cmdLineOpts) { if (cmdLineOpts.isVersion()) { System.out.println("Build version: " + Version.DORIS_BUILD_VERSION); @@ -402,7 +417,7 @@ private static void checkCommandLineOptions(CommandLineOptions cmdLineOpts) { } } } - + printVersion(); // go on } @@ -438,6 +453,7 @@ private static boolean createAndLockPidFile(String pidFilePath) throws IOExcepti */ private static void tryLockProcess() { try { + LOCK_FILE_PATH = Config.meta_dir + "/" + LOCK_FILE_NAME; processLockFileChannel = FileChannel.open(new File(LOCK_FILE_PATH).toPath(), StandardOpenOption.WRITE, StandardOpenOption.CREATE); processFileLock = processLockFileChannel.tryLock(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/journal/bdbje/BDBEnvironment.java b/fe/fe-core/src/main/java/org/apache/doris/journal/bdbje/BDBEnvironment.java index 09eb03b1577fd5..11a57a61050b2b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/journal/bdbje/BDBEnvironment.java +++ b/fe/fe-core/src/main/java/org/apache/doris/journal/bdbje/BDBEnvironment.java @@ -100,11 +100,12 @@ public void setup(File envHome, String selfNodeName, String selfNodeHostPort, LOG.error("Current node is not in the electable_nodes list. will exit"); System.exit(-1); } - LOG.info("start group reset"); + LOG.warn("start group reset"); DbResetRepGroup resetUtility = new DbResetRepGroup( envHome, PALO_JOURNAL_GROUP, selfNodeName, selfNodeHostPort); resetUtility.reset(); - LOG.info("group has been reset."); + LOG.warn("WARNING: metadata recovery mode, group has been reset."); + System.out.println("WARNING: metadata recovery mode, group has been reset."); } // set replication config diff --git a/fe/fe-core/src/main/java/org/apache/doris/journal/bdbje/BDBJEJournal.java b/fe/fe-core/src/main/java/org/apache/doris/journal/bdbje/BDBJEJournal.java index 3746e769f341b4..85e577058be89f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/journal/bdbje/BDBJEJournal.java +++ b/fe/fe-core/src/main/java/org/apache/doris/journal/bdbje/BDBJEJournal.java @@ -145,8 +145,8 @@ public synchronized long write(short op, Writable writable) throws IOException { MetricRepo.COUNTER_EDIT_LOG_SIZE_BYTES.increase((long) theData.getSize()); MetricRepo.COUNTER_CURRENT_EDIT_LOG_SIZE_BYTES.increase((long) theData.getSize()); } - if (LOG.isDebugEnabled()) { - LOG.debug("opCode = {}, journal size = {}", op, theData.getSize()); + if (LOG.isDebugEnabled() || theData.getSize() > (1 << 20)) { + LOG.info("opCode = {}, journal size = {}", op, theData.getSize()); } // Write the key value pair to bdb.