From 7436a345be7690a2c811b54e1960a7aac10dd967 Mon Sep 17 00:00:00 2001 From: Xiaolin Ha Date: Wed, 9 Jun 2021 18:11:18 +0800 Subject: [PATCH] HBASE-25981 JVM crash when displaying RegionServer UI (#3364) Signed-off-by: Duo Zhang --- .../main/java/org/apache/hadoop/hbase/ipc/CallRunner.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java index 48ee6646939..56b7ff04f54 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java @@ -159,6 +159,7 @@ public class CallRunner { sucessful = true; } } + this.status.markComplete("To send response"); // return back the RPC request read BB we can do here. It is done by now. call.cleanup(); // Set the response @@ -166,8 +167,6 @@ public class CallRunner { CellScanner cells = resultPair != null ? resultPair.getSecond() : null; call.setResponse(param, cells, errorThrowable, error); call.sendResponseIfReady(); - this.status.markComplete("Sent response"); - this.status.pause("Waiting for a call"); } catch (OutOfMemoryError e) { if (this.rpcServer.getErrorHandler() != null) { if (this.rpcServer.getErrorHandler().checkOOME(e)) { @@ -191,6 +190,11 @@ public class CallRunner { if (!sucessful) { this.rpcServer.addCallSize(call.getSize() * -1); } + + if (this.status.isRPCRunning()) { + this.status.markComplete("Call error"); + } + this.status.pause("Waiting for a call"); cleanup(); } }