Skip to content

Commit

Permalink
HBASE-27756 Make request guardrail configs in RSRpcServices live upda…
Browse files Browse the repository at this point in the history
…table (apache#5141)

Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
  • Loading branch information
bbeaudreault authored Mar 29, 2023
1 parent c52f4b2 commit e5620e2
Showing 1 changed file with 19 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ public class RSRpcServices extends HBaseRpcServicesBase<HRegionServer>
// Request counter for rpc mutate
final LongAdder rpcMutateRequestCount = new LongAdder();

private final long maxScannerResultSize;
private volatile long maxScannerResultSize;

private ScannerIdGenerator scannerIdGenerator;
private final ConcurrentMap<String, RegionScannerHolder> scanners = new ConcurrentHashMap<>();
Expand All @@ -323,12 +323,12 @@ public class RSRpcServices extends HBaseRpcServicesBase<HRegionServer>
/**
* Row size threshold for multi requests above which a warning is logged
*/
private final int rowSizeWarnThreshold;
private volatile int rowSizeWarnThreshold;
/*
* Whether we should reject requests with very high no of rows i.e. beyond threshold defined by
* rowSizeWarnThreshold
*/
private final boolean rejectRowsWithSizeOverThreshold;
private volatile boolean rejectRowsWithSizeOverThreshold;

final AtomicBoolean clearCompactionQueues = new AtomicBoolean(false);

Expand Down Expand Up @@ -1162,14 +1162,9 @@ private void closeAllScanners() {
public RSRpcServices(final HRegionServer rs) throws IOException {
super(rs, rs.getProcessName());
final Configuration conf = rs.getConfiguration();
rowSizeWarnThreshold =
conf.getInt(HConstants.BATCH_ROWS_THRESHOLD_NAME, HConstants.BATCH_ROWS_THRESHOLD_DEFAULT);
rejectRowsWithSizeOverThreshold =
conf.getBoolean(REJECT_BATCH_ROWS_OVER_THRESHOLD, DEFAULT_REJECT_BATCH_ROWS_OVER_THRESHOLD);
setReloadableGuardrails(conf);
scannerLeaseTimeoutPeriod = conf.getInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD,
HConstants.DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD);
maxScannerResultSize = conf.getLong(HConstants.HBASE_SERVER_SCANNER_MAX_RESULT_SIZE_KEY,
HConstants.DEFAULT_HBASE_SERVER_SCANNER_MAX_RESULT_SIZE);
rpcTimeout =
conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT);
minimumScanTimeLimitDelta = conf.getLong(REGION_SERVER_RPC_MINIMUM_SCAN_TIME_LIMIT_DELTA,
Expand Down Expand Up @@ -3923,4 +3918,19 @@ public GetAllBootstrapNodesResponse getAllBootstrapNodes(RpcController controlle
.forEachRemaining(server -> builder.addNode(ProtobufUtil.toServerName(server)));
return builder.build();
}

private void setReloadableGuardrails(Configuration conf) {
rowSizeWarnThreshold =
conf.getInt(HConstants.BATCH_ROWS_THRESHOLD_NAME, HConstants.BATCH_ROWS_THRESHOLD_DEFAULT);
rejectRowsWithSizeOverThreshold =
conf.getBoolean(REJECT_BATCH_ROWS_OVER_THRESHOLD, DEFAULT_REJECT_BATCH_ROWS_OVER_THRESHOLD);
maxScannerResultSize = conf.getLong(HConstants.HBASE_SERVER_SCANNER_MAX_RESULT_SIZE_KEY,
HConstants.DEFAULT_HBASE_SERVER_SCANNER_MAX_RESULT_SIZE);
}

@Override
public void onConfigurationChange(Configuration conf) {
super.onConfigurationChange(conf);
setReloadableGuardrails(conf);
}
}

0 comments on commit e5620e2

Please sign in to comment.