From 776667761dd77cbb9ee79cb2283822b477864804 Mon Sep 17 00:00:00 2001 From: Bahram Chehrazy Date: Tue, 2 Apr 2019 12:11:36 -0700 Subject: [PATCH] rssStub is not thread safe hence should not be accessed directly. --- .../hadoop/hbase/regionserver/HRegionServer.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 96fbb01104..3ebc50d878 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -2438,12 +2438,13 @@ public class HRegionServer extends HasThread implements msg += "\nCause:\n" + Throwables.getStackTraceAsString(cause); } // Report to the master but only if we have already registered with the master. - if (rssStub != null && this.serverName != null) { + RegionServerStatusService.BlockingInterface rss = rssStub; + if (rss != null && this.serverName != null) { ReportRSFatalErrorRequest.Builder builder = ReportRSFatalErrorRequest.newBuilder(); builder.setServer(ProtobufUtil.toServerName(this.serverName)); builder.setErrorMessage(msg); - rssStub.reportRSFatalError(null, builder.build()); + rss.reportRSFatalError(null, builder.build()); } } catch (Throwable t) { LOG.warn("Unable to report fatal error to master", t); @@ -2652,7 +2653,8 @@ public class HRegionServer extends HasThread implements private RegionServerStartupResponse reportForDuty() throws IOException { if (this.masterless) return RegionServerStartupResponse.getDefaultInstance(); ServerName masterServerName = createRegionServerStatusStub(true); - if (masterServerName == null) return null; + RegionServerStatusService.BlockingInterface rss = rssStub; + if (masterServerName == null || rss == null) return null; RegionServerStartupResponse result = null; try { rpcServices.requestCount.reset(); @@ -2671,7 +2673,7 @@ public class HRegionServer extends HasThread implements request.setPort(port); request.setServerStartCode(this.startcode); request.setServerCurrentTime(now); - result = this.rssStub.regionServerStartup(null, request.build()); + result = rss.regionServerStartup(null, request.build()); } catch (ServiceException se) { IOException ioe = ProtobufUtil.getRemoteException(se); if (ioe instanceof ClockOutOfSyncException) { -- 2.20.1.windows.1