HBASE-22150 rssStub in HRegionServer is not thread safe and should not directly be used
Signed-off-by: Sergey Shelukhin <sershe@apache.org>
This commit is contained in:
parent
8ec93ea193
commit
428afa9c5e
|
@ -2431,12 +2431,13 @@ public class HRegionServer extends HasThread implements
|
||||||
msg += "\nCause:\n" + Throwables.getStackTraceAsString(cause);
|
msg += "\nCause:\n" + Throwables.getStackTraceAsString(cause);
|
||||||
}
|
}
|
||||||
// Report to the master but only if we have already registered with the master.
|
// 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.Builder builder =
|
||||||
ReportRSFatalErrorRequest.newBuilder();
|
ReportRSFatalErrorRequest.newBuilder();
|
||||||
builder.setServer(ProtobufUtil.toServerName(this.serverName));
|
builder.setServer(ProtobufUtil.toServerName(this.serverName));
|
||||||
builder.setErrorMessage(msg);
|
builder.setErrorMessage(msg);
|
||||||
rssStub.reportRSFatalError(null, builder.build());
|
rss.reportRSFatalError(null, builder.build());
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
LOG.warn("Unable to report fatal error to master", t);
|
LOG.warn("Unable to report fatal error to master", t);
|
||||||
|
@ -2645,7 +2646,8 @@ public class HRegionServer extends HasThread implements
|
||||||
private RegionServerStartupResponse reportForDuty() throws IOException {
|
private RegionServerStartupResponse reportForDuty() throws IOException {
|
||||||
if (this.masterless) return RegionServerStartupResponse.getDefaultInstance();
|
if (this.masterless) return RegionServerStartupResponse.getDefaultInstance();
|
||||||
ServerName masterServerName = createRegionServerStatusStub(true);
|
ServerName masterServerName = createRegionServerStatusStub(true);
|
||||||
if (masterServerName == null) return null;
|
RegionServerStatusService.BlockingInterface rss = rssStub;
|
||||||
|
if (masterServerName == null || rss == null) return null;
|
||||||
RegionServerStartupResponse result = null;
|
RegionServerStartupResponse result = null;
|
||||||
try {
|
try {
|
||||||
rpcServices.requestCount.reset();
|
rpcServices.requestCount.reset();
|
||||||
|
@ -2664,7 +2666,7 @@ public class HRegionServer extends HasThread implements
|
||||||
request.setPort(port);
|
request.setPort(port);
|
||||||
request.setServerStartCode(this.startcode);
|
request.setServerStartCode(this.startcode);
|
||||||
request.setServerCurrentTime(now);
|
request.setServerCurrentTime(now);
|
||||||
result = this.rssStub.regionServerStartup(null, request.build());
|
result = rss.regionServerStartup(null, request.build());
|
||||||
} catch (ServiceException se) {
|
} catch (ServiceException se) {
|
||||||
IOException ioe = ProtobufUtil.getRemoteException(se);
|
IOException ioe = ProtobufUtil.getRemoteException(se);
|
||||||
if (ioe instanceof ClockOutOfSyncException) {
|
if (ioe instanceof ClockOutOfSyncException) {
|
||||||
|
|
Loading…
Reference in New Issue