[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:
Lei Zhang
2023-11-22 10:46:59 +08:00
committed by GitHub
parent c332811721
commit eaa1ca7143
3 changed files with 11 additions and 5 deletions

View File

@ -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());

View File

@ -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()) {

View File

@ -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);
}