Skip to content

Commit

Permalink
[BugFix] Fix observer node recovery bug (#40815)
Browse files Browse the repository at this point in the history
## Why I'm doing:
When cluster is recovered from observer node, the `show frontends` will throw exception
```
2024-02-05 17:39:14,562 WARN (starrocks-mysql-nio-pool-2|206) [StmtExecutor.execute():681] execute Exception, sql show proc '/frontends'
java.lang.NullPointerException: null
        at com.sleepycat.je.rep.util.ReplicationGroupAdmin.getMasterSocket(ReplicationGroupAdmin.java:191) ~[starrocks-bdb-je-18.3.16.jar:?]
        at com.sleepycat.je.rep.util.ReplicationGroupAdmin.doMessageExchange(ReplicationGroupAdmin.java:607) ~[starrocks-bdb-je-18.3.16.jar:?]
        at com.sleepycat.je.rep.util.ReplicationGroupAdmin.getGroup(ReplicationGroupAdmin.java:406) ~[starrocks-bdb-je-18.3.16.jar:?]
        at com.starrocks.ha.BDBHA.getElectableNodes(BDBHA.java:178) ~[starrocks-fe.jar:?]
        at com.starrocks.common.proc.FrontendsProcNode.getFrontendsInfo(FrontendsProcNode.java:96) ~[starrocks-fe.jar:?]
        at com.starrocks.common.proc.FrontendsProcNode.fetchResult(FrontendsProcNode.java:80) ~[starrocks-fe.jar:?]
        at com.starrocks.sql.ast.ShowProcStmt.getMetaData(ShowProcStmt.java:73) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ShowExecutor.handleShowProc(ShowExecutor.java:840) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ShowExecutor.execute(ShowExecutor.java:291) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.StmtExecutor.handleShow(StmtExecutor.java:1517) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.StmtExecutor.execute(StmtExecutor.java:621) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:403) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ConnectProcessor.dispatch(ConnectProcessor.java:598) ~[starrocks-fe.jar:?]
        at com.starrocks.qe.ConnectProcessor.processOnce(ConnectProcessor.java:883) ~[starrocks-fe.jar:?]
        at com.starrocks.mysql.nio.ReadListener.lambda$handleEvent$0(ReadListener.java:69) ~[starrocks-fe.jar:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
        at java.lang.Thread.run(Thread.java:834) ~[?:?]

```

## What I'm doing:
Add all type of nodes to ReplicationGroupAdmin.

Signed-off-by: gengjun-git <[email protected]>
(cherry picked from commit 1661842)

# Conflicts:
#	fe/fe-core/src/main/java/com/starrocks/journal/bdbje/BDBEnvironment.java
  • Loading branch information
gengjun-git authored and mergify[bot] committed Mar 13, 2024
1 parent b19c16a commit 2c3ba77
Showing 1 changed file with 5 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -398,8 +398,13 @@ public void refreshLog(InsufficientLogException insufficientLogEx) {
}

public ReplicationGroupAdmin getReplicationGroupAdmin() {
<<<<<<< HEAD
Set<InetSocketAddress> addrs = GlobalStateMgr.getCurrentState()
.getFrontends(FrontendNodeType.FOLLOWER)
=======
Set<InetSocketAddress> addrs = GlobalStateMgr.getCurrentState().getNodeMgr()
.getFrontends(null)
>>>>>>> 16618427d6 ([BugFix] Fix observer node recovery bug (#40815))
.stream()
.filter(Frontend::isAlive)
.map(fe -> new InetSocketAddress(fe.getHost(), fe.getEditLogPort()))
Expand Down

0 comments on commit 2c3ba77

Please sign in to comment.