[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)
...
```
This commit is contained in:
@ -127,7 +127,6 @@ public class FrontendsProcNode implements ProcNodeInterface {
|
||||
}
|
||||
|
||||
for (Frontend fe : env.getFrontends(null /* all */)) {
|
||||
|
||||
List<String> info = new ArrayList<String>();
|
||||
info.add(fe.getNodeName());
|
||||
info.add(fe.getHost());
|
||||
|
||||
@ -104,11 +104,12 @@ public class BDBHA implements HAProtocol {
|
||||
|
||||
@Override
|
||||
public List<InetSocketAddress> getObserverNodes() {
|
||||
List<InetSocketAddress> ret = new ArrayList<InetSocketAddress>();
|
||||
ReplicationGroupAdmin replicationGroupAdmin = environment.getReplicationGroupAdmin();
|
||||
if (replicationGroupAdmin == null) {
|
||||
return null;
|
||||
return ret;
|
||||
}
|
||||
List<InetSocketAddress> ret = new ArrayList<InetSocketAddress>();
|
||||
|
||||
try {
|
||||
ReplicationGroup replicationGroup = replicationGroupAdmin.getGroup();
|
||||
for (ReplicationNode replicationNode : replicationGroup.getSecondaryNodes()) {
|
||||
@ -123,11 +124,12 @@ public class BDBHA implements HAProtocol {
|
||||
|
||||
@Override
|
||||
public List<InetSocketAddress> getElectableNodes(boolean leaderIncluded) {
|
||||
List<InetSocketAddress> ret = new ArrayList<InetSocketAddress>();
|
||||
ReplicationGroupAdmin replicationGroupAdmin = environment.getReplicationGroupAdmin();
|
||||
if (replicationGroupAdmin == null) {
|
||||
return null;
|
||||
return ret;
|
||||
}
|
||||
List<InetSocketAddress> ret = new ArrayList<InetSocketAddress>();
|
||||
|
||||
try {
|
||||
ReplicationGroup replicationGroup = replicationGroupAdmin.getGroup();
|
||||
for (ReplicationNode replicationNode : replicationGroup.getElectableNodes()) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user