From eaa1ca7143a239f93f8308597707a6e677aa4714 Mon Sep 17 00:00:00 2001 From: Lei Zhang <27994433+SWJTU-ZhangLei@users.noreply.github.com> Date: Wed, 22 Nov 2023 10:46:59 +0800 Subject: [PATCH] [fix](fe) Fix show frontends npt in some situations (#27295) ``` java.lang.NullPointerException: null at com.sleepycat.je.rep.util.ReplicationGroupAdmin.getMasterSocket(ReplicationGroupAdmin.java:191) at com.sleepycat.je.rep.util.ReplicationGroupAdmin.doMessageExchange(ReplicationGroupAdmin.java:607) at com.sleepycat.je.rep.util.ReplicationGroupAdmin.getGroup(ReplicationGroupAdmin.java:406) at org.apache.doris.ha.BDBHA.getElectableNodes(BDBHA.java:132) at org.apache.doris.common.proc.FrontendsProcNode.getFrontendsInfo(FrontendsProcNode.java:84) at org.apache.doris.qe.ShowExecutor.handleShowFrontends(ShowExecutor.java:1923) at org.apache.doris.qe.ShowExecutor.execute(ShowExecutor.java:355) at org.apache.doris.qe.StmtExecutor.handleShow(StmtExecutor.java:2113) ... ``` --- .../apache/doris/common/proc/FrontendsProcNode.java | 1 - .../src/main/java/org/apache/doris/ha/BDBHA.java | 10 ++++++---- .../org/apache/doris/journal/bdbje/BDBEnvironment.java | 5 +++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java b/fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java index b49874b6e9..be126e9bc5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/proc/FrontendsProcNode.java @@ -127,7 +127,6 @@ public class FrontendsProcNode implements ProcNodeInterface { } for (Frontend fe : env.getFrontends(null /* all */)) { - List info = new ArrayList(); info.add(fe.getNodeName()); info.add(fe.getHost()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/ha/BDBHA.java b/fe/fe-core/src/main/java/org/apache/doris/ha/BDBHA.java index 40de732922..046bca5bac 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/ha/BDBHA.java +++ b/fe/fe-core/src/main/java/org/apache/doris/ha/BDBHA.java @@ -104,11 +104,12 @@ public class BDBHA implements HAProtocol { @Override public List getObserverNodes() { + List ret = new ArrayList(); ReplicationGroupAdmin replicationGroupAdmin = environment.getReplicationGroupAdmin(); if (replicationGroupAdmin == null) { - return null; + return ret; } - List ret = new ArrayList(); + try { ReplicationGroup replicationGroup = replicationGroupAdmin.getGroup(); for (ReplicationNode replicationNode : replicationGroup.getSecondaryNodes()) { @@ -123,11 +124,12 @@ public class BDBHA implements HAProtocol { @Override public List getElectableNodes(boolean leaderIncluded) { + List ret = new ArrayList(); ReplicationGroupAdmin replicationGroupAdmin = environment.getReplicationGroupAdmin(); if (replicationGroupAdmin == null) { - return null; + return ret; } - List ret = new ArrayList(); + try { ReplicationGroup replicationGroup = replicationGroupAdmin.getGroup(); for (ReplicationNode replicationNode : replicationGroup.getElectableNodes()) { 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 5dec4a4c57..1b608751c7 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 @@ -209,6 +209,11 @@ public class BDBEnvironment { .filter(Frontend::isAlive) .map(fe -> new InetSocketAddress(fe.getHost(), fe.getEditLogPort())) .collect(Collectors.toSet()); + + if (addresses.isEmpty()) { + LOG.info("addresses is empty"); + return null; + } return new ReplicationGroupAdmin(PALO_JOURNAL_GROUP, addresses); }