Skip to content

Commit e0db4eb

Browse files
author
ukumawat
committed
HBASE-28690 add initiatingMasterActiveTime as a member of RemoteOperation
1 parent 803ead0 commit e0db4eb

File tree

13 files changed

+59
-42
lines changed

13 files changed

+59
-42
lines changed

hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,14 +222,22 @@ protected final void submitTask(Runnable task, long delay, TimeUnit unit) {
222222
*/
223223
public static abstract class RemoteOperation {
224224
private final RemoteProcedure remoteProcedure;
225+
// active time of the master that sent this request, used for fencing
226+
private final long initiatingMasterActiveTime;
225227

226-
protected RemoteOperation(final RemoteProcedure remoteProcedure) {
228+
protected RemoteOperation(final RemoteProcedure remoteProcedure,
229+
long initiatingMasterActiveTime) {
227230
this.remoteProcedure = remoteProcedure;
231+
this.initiatingMasterActiveTime = initiatingMasterActiveTime;
228232
}
229233

230234
public RemoteProcedure getRemoteProcedure() {
231235
return remoteProcedure;
232236
}
237+
238+
public long getInitiatingMasterActiveTime() {
239+
return initiatingMasterActiveTime;
240+
}
233241
}
234242

235243
/**

hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/CloseRegionProcedure.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ public TableOperationType getTableOperationType() {
6464
}
6565

6666
@Override
67-
public RemoteOperation newRemoteOperation() {
68-
return new RegionCloseOperation(this, region, getProcId(), assignCandidate, evictCache);
67+
public RemoteOperation newRemoteOperation(MasterProcedureEnv env) {
68+
return new RegionCloseOperation(this, region, getProcId(), assignCandidate, evictCache,
69+
env.getMasterServices().getMasterActiveTime());
6970
}
7071

7172
@Override

hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/OpenRegionProcedure.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,9 @@ public TableOperationType getTableOperationType() {
5757
}
5858

5959
@Override
60-
public RemoteOperation newRemoteOperation() {
61-
return new RegionOpenOperation(this, region, getProcId());
60+
public RemoteOperation newRemoteOperation(MasterProcedureEnv env) {
61+
return new RegionOpenOperation(this, region, getProcId(),
62+
env.getMasterServices().getMasterActiveTime());
6263
}
6364

6465
@Override

hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionRemoteProcedureBase.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,11 @@ public Optional<RemoteProcedureDispatcher.RemoteOperation> remoteCallBuild(Maste
9292
if (state == RegionRemoteProcedureBaseState.REGION_REMOTE_PROCEDURE_REPORT_SUCCEED) {
9393
return Optional.empty();
9494
}
95-
return Optional.of(newRemoteOperation());
95+
return Optional.of(newRemoteOperation(env));
9696
}
9797

98-
protected abstract RemoteProcedureDispatcher.RemoteOperation newRemoteOperation();
98+
protected abstract RemoteProcedureDispatcher.RemoteOperation
99+
newRemoteOperation(MasterProcedureEnv env);
99100

100101
@Override
101102
public void remoteOperationCompleted(MasterProcedureEnv env) {

hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/FlushRegionProcedure.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,9 @@ public Optional<RemoteOperation> remoteCallBuild(MasterProcedureEnv env, ServerN
222222
}
223223
}
224224
}
225-
return Optional.of(new RSProcedureDispatcher.ServerOperation(this, getProcId(),
226-
FlushRegionCallable.class, builder.build().toByteArray()));
225+
return Optional
226+
.of(new RSProcedureDispatcher.ServerOperation(this, getProcId(), FlushRegionCallable.class,
227+
builder.build().toByteArray(), env.getMasterServices().getMasterActiveTime()));
227228
}
228229

229230
@Override

hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.java

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -421,15 +421,13 @@ public void dispatchOpenRequests(final MasterProcedureEnv env,
421421
public void dispatchCloseRequests(final MasterProcedureEnv env,
422422
final List<RegionCloseOperation> operations) {
423423
for (RegionCloseOperation op : operations) {
424-
request.addCloseRegion(op.buildCloseRegionRequest(getServerName(),
425-
env.getMasterServices().getMasterActiveTime()));
424+
request.addCloseRegion(op.buildCloseRegionRequest(getServerName()));
426425
}
427426
}
428427

429428
@Override
430429
public void dispatchServerOperations(MasterProcedureEnv env, List<ServerOperation> operations) {
431-
operations.stream().map(o -> o.buildRequest(env.getMasterServices().getMasterActiveTime()))
432-
.forEachOrdered(request::addProc);
430+
operations.stream().map(ServerOperation::buildRequest).forEachOrdered(request::addProc);
433431
}
434432

435433
// will be overridden in test.
@@ -453,7 +451,8 @@ private static OpenRegionRequest buildOpenRegionRequest(final MasterProcedureEnv
453451
final ServerName serverName, final List<RegionOpenOperation> operations) {
454452
final OpenRegionRequest.Builder builder = OpenRegionRequest.newBuilder();
455453
builder.setServerStartCode(serverName.getStartCode());
456-
builder.setInitiatingMasterActiveTime(env.getMasterServices().getMasterActiveTime());
454+
builder.setInitiatingMasterActiveTime(operations.stream()
455+
.map(RemoteOperation::getInitiatingMasterActiveTime).findAny().orElse(-1L));
457456
builder.setMasterSystemTime(EnvironmentEdgeManager.currentTime());
458457
for (RegionOpenOperation op : operations) {
459458
builder.addOpenInfo(op.buildRegionOpenInfoRequest(env));
@@ -476,36 +475,37 @@ public static final class ServerOperation extends RemoteOperation {
476475
private final byte[] rsProcData;
477476

478477
public ServerOperation(RemoteProcedure remoteProcedure, long procId, Class<?> rsProcClass,
479-
byte[] rsProcData) {
480-
super(remoteProcedure);
478+
byte[] rsProcData, long initiatingMasterActiveTime) {
479+
super(remoteProcedure, initiatingMasterActiveTime);
481480
this.procId = procId;
482481
this.rsProcClass = rsProcClass;
483482
this.rsProcData = rsProcData;
484483
}
485484

486-
public RemoteProcedureRequest buildRequest(long initiatingMasterActiveTime) {
485+
public RemoteProcedureRequest buildRequest() {
487486
return RemoteProcedureRequest.newBuilder().setProcId(procId)
488487
.setProcClass(rsProcClass.getName()).setProcData(ByteString.copyFrom(rsProcData))
489-
.setInitiatingMasterActiveTime(initiatingMasterActiveTime).build();
488+
.setInitiatingMasterActiveTime(getInitiatingMasterActiveTime()).build();
490489
}
491490
}
492491

493492
public static abstract class RegionOperation extends RemoteOperation {
494493
protected final RegionInfo regionInfo;
495494
protected final long procId;
496495

497-
protected RegionOperation(RemoteProcedure remoteProcedure, RegionInfo regionInfo, long procId) {
498-
super(remoteProcedure);
496+
protected RegionOperation(RemoteProcedure remoteProcedure, RegionInfo regionInfo, long procId,
497+
long initiatingMasterActiveTime) {
498+
super(remoteProcedure, initiatingMasterActiveTime);
499499
this.regionInfo = regionInfo;
500500
this.procId = procId;
501501
}
502502
}
503503

504504
public static class RegionOpenOperation extends RegionOperation {
505505

506-
public RegionOpenOperation(RemoteProcedure remoteProcedure, RegionInfo regionInfo,
507-
long procId) {
508-
super(remoteProcedure, regionInfo, procId);
506+
public RegionOpenOperation(RemoteProcedure remoteProcedure, RegionInfo regionInfo, long procId,
507+
long initiatingMasterActiveTime) {
508+
super(remoteProcedure, regionInfo, procId, initiatingMasterActiveTime);
509509
}
510510

511511
public OpenRegionRequest.RegionOpenInfo
@@ -520,8 +520,8 @@ public static class RegionCloseOperation extends RegionOperation {
520520
private boolean evictCache;
521521

522522
public RegionCloseOperation(RemoteProcedure remoteProcedure, RegionInfo regionInfo, long procId,
523-
ServerName destinationServer, boolean evictCache) {
524-
super(remoteProcedure, regionInfo, procId);
523+
ServerName destinationServer, boolean evictCache, long initiatingMasterActiveTime) {
524+
super(remoteProcedure, regionInfo, procId, initiatingMasterActiveTime);
525525
this.destinationServer = destinationServer;
526526
this.evictCache = evictCache;
527527
}
@@ -530,11 +530,9 @@ public ServerName getDestinationServer() {
530530
return destinationServer;
531531
}
532532

533-
public CloseRegionRequest buildCloseRegionRequest(final ServerName serverName,
534-
long initiatingMasterActiveTime) {
533+
public CloseRegionRequest buildCloseRegionRequest(final ServerName serverName) {
535534
return ProtobufUtil.buildCloseRegionRequest(serverName, regionInfo.getRegionName(),
536-
getDestinationServer(), procId, evictCache, initiatingMasterActiveTime);
537-
535+
getDestinationServer(), procId, evictCache, getInitiatingMasterActiveTime());
538536
}
539537
}
540538
}

hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SnapshotRegionProcedure.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,11 @@ protected boolean holdLock(MasterProcedureEnv env) {
9595

9696
@Override
9797
public Optional<RemoteOperation> remoteCallBuild(MasterProcedureEnv env, ServerName serverName) {
98-
return Optional.of(new RSProcedureDispatcher.ServerOperation(this, getProcId(),
99-
SnapshotRegionCallable.class, MasterProcedureProtos.SnapshotRegionParameter.newBuilder()
100-
.setRegion(ProtobufUtil.toRegionInfo(region)).setSnapshot(snapshot).build().toByteArray()));
98+
return Optional
99+
.of(new RSProcedureDispatcher.ServerOperation(this, getProcId(), SnapshotRegionCallable.class,
100+
MasterProcedureProtos.SnapshotRegionParameter.newBuilder()
101+
.setRegion(ProtobufUtil.toRegionInfo(region)).setSnapshot(snapshot).build().toByteArray(),
102+
env.getMasterServices().getMasterActiveTime()));
101103
}
102104

103105
@Override

hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SnapshotVerifyProcedure.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,9 @@ protected void toStringClassDetails(StringBuilder builder) {
224224
public Optional<RemoteOperation> remoteCallBuild(MasterProcedureEnv env, ServerName serverName) {
225225
SnapshotVerifyParameter.Builder builder = SnapshotVerifyParameter.newBuilder();
226226
builder.setSnapshot(snapshot).setRegion(ProtobufUtil.toRegionInfo(region));
227-
return Optional.of(new RSProcedureDispatcher.ServerOperation(this, getProcId(),
228-
SnapshotVerifyCallable.class, builder.build().toByteArray()));
227+
return Optional
228+
.of(new RSProcedureDispatcher.ServerOperation(this, getProcId(), SnapshotVerifyCallable.class,
229+
builder.build().toByteArray(), env.getMasterServices().getMasterActiveTime()));
229230
}
230231

231232
@Override

hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SplitWALRemoteProcedure.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,10 @@ protected void deserializeStateData(ProcedureStateSerializer serializer) throws
9797
@Override
9898
public Optional<RemoteProcedureDispatcher.RemoteOperation> remoteCallBuild(MasterProcedureEnv env,
9999
ServerName serverName) {
100-
return Optional.of(new RSProcedureDispatcher.ServerOperation(this, getProcId(),
101-
SplitWALCallable.class, MasterProcedureProtos.SplitWALParameter.newBuilder()
102-
.setWalPath(walPath).build().toByteArray()));
100+
return Optional.of(new RSProcedureDispatcher.ServerOperation(
101+
this, getProcId(), SplitWALCallable.class, MasterProcedureProtos.SplitWALParameter
102+
.newBuilder().setWalPath(walPath).build().toByteArray(),
103+
env.getMasterServices().getMasterActiveTime()));
103104
}
104105

105106
@Override

hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SwitchRpcThrottleRemoteProcedure.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ protected void deserializeStateData(ProcedureStateSerializer serializer) throws
9393
SwitchRpcThrottleRemoteCallable.class,
9494
SwitchRpcThrottleRemoteStateData.newBuilder()
9595
.setTargetServer(ProtobufUtil.toServerName(remote))
96-
.setRpcThrottleEnabled(rpcThrottleEnabled).build().toByteArray()));
96+
.setRpcThrottleEnabled(rpcThrottleEnabled).build().toByteArray(),
97+
masterProcedureEnv.getMasterServices().getMasterActiveTime()));
9798
}
9899

99100
@Override

0 commit comments

Comments
 (0)