Skip to content

Commit 7023542

Browse files
committed
HubSpot Backport: HBASE-27078 Allow configuring a separate timeout for meta scans (apache#4585)
Signed-off-by: Duo Zhang <[email protected]> Signed-off-by: Andrew Purtell <[email protected]>
1 parent 9d85d62 commit 7023542

16 files changed

+634
-67
lines changed

hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncConnectionConfiguration.java

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
import static org.apache.hadoop.hbase.HConstants.HBASE_META_SCANNER_CACHING;
2424
import static org.apache.hadoop.hbase.HConstants.HBASE_RPC_READ_TIMEOUT_KEY;
2525
import static org.apache.hadoop.hbase.HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY;
26+
import static org.apache.hadoop.hbase.client.ConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY;
27+
import static org.apache.hadoop.hbase.client.ConnectionConfiguration.HBASE_CLIENT_META_SCANNER_TIMEOUT;
28+
2629
import java.util.concurrent.TimeUnit;
2730
import org.apache.hadoop.conf.Configuration;
2831
import org.apache.yetus.audience.InterfaceAudience;
@@ -56,6 +59,9 @@ class AsyncConnectionConfiguration {
5659
// timeout for each read rpc request
5760
private final long readRpcTimeoutNs;
5861

62+
// timeout for each read rpc request against system tables
63+
private final long metaReadRpcTimeoutNs;
64+
5965
// timeout for each write rpc request
6066
private final long writeRpcTimeoutNs;
6167

@@ -73,6 +79,7 @@ class AsyncConnectionConfiguration {
7379
// client that it is still alive. The scan timeout is used as operation timeout for every
7480
// operations in a scan, such as openScanner or next.
7581
private final long scanTimeoutNs;
82+
private final long metaScanTimeoutNs;
7683

7784
private final int scannerCaching;
7885

@@ -110,12 +117,13 @@ class AsyncConnectionConfiguration {
110117
connectionConf.getMetaOperationTimeout());
111118
this.operationTimeoutNs = TimeUnit.MILLISECONDS.toNanos(connectionConf.getOperationTimeout());
112119
this.rpcTimeoutNs = TimeUnit.MILLISECONDS.toNanos(connectionConf.getRpcTimeout());
113-
this.readRpcTimeoutNs =
114-
TimeUnit.MILLISECONDS.toNanos(conf.getLong(HBASE_RPC_READ_TIMEOUT_KEY,
115-
connectionConf.getReadRpcTimeout()));
116-
this.writeRpcTimeoutNs =
117-
TimeUnit.MILLISECONDS.toNanos(conf.getLong(HBASE_RPC_WRITE_TIMEOUT_KEY,
118-
connectionConf.getWriteRpcTimeout()));
120+
long readRpcTimeoutMillis =
121+
conf.getLong(HBASE_RPC_READ_TIMEOUT_KEY, connectionConf.getRpcTimeout());
122+
this.readRpcTimeoutNs = TimeUnit.MILLISECONDS.toNanos(readRpcTimeoutMillis);
123+
this.metaReadRpcTimeoutNs = TimeUnit.MILLISECONDS
124+
.toNanos(conf.getLong(HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, readRpcTimeoutMillis));
125+
this.writeRpcTimeoutNs = TimeUnit.MILLISECONDS
126+
.toNanos(conf.getLong(HBASE_RPC_WRITE_TIMEOUT_KEY, connectionConf.getWriteRpcTimeout()));
119127
this.pauseNs = TimeUnit.MILLISECONDS.toNanos(connectionConf.getPauseMillis());
120128
this.pauseNsForServerOverloaded = TimeUnit.MILLISECONDS.toNanos(
121129
connectionConf.getPauseMillisForServerOverloaded());
@@ -125,9 +133,11 @@ class AsyncConnectionConfiguration {
125133
connectionConf.getReplicaCallTimeoutMicroSecondScan());
126134
this.primaryMetaScanTimeoutNs =
127135
TimeUnit.MICROSECONDS.toNanos(connectionConf.getMetaReplicaCallTimeoutMicroSecondScan());
128-
this.scanTimeoutNs = TimeUnit.MILLISECONDS.toNanos(
129-
conf.getInt(HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD,
130-
DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD));
136+
long scannerTimeoutMillis = conf.getLong(HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD,
137+
DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD);
138+
this.scanTimeoutNs = TimeUnit.MILLISECONDS.toNanos(scannerTimeoutMillis);
139+
this.metaScanTimeoutNs = TimeUnit.MILLISECONDS
140+
.toNanos(conf.getLong(HBASE_CLIENT_META_SCANNER_TIMEOUT, scannerTimeoutMillis));
131141

132142
// fields not in connection configuration
133143
this.startLogErrorsCnt =
@@ -152,6 +162,10 @@ long getReadRpcTimeoutNs() {
152162
return readRpcTimeoutNs;
153163
}
154164

165+
long getMetaReadRpcTimeoutNs() {
166+
return metaReadRpcTimeoutNs;
167+
}
168+
155169
long getWriteRpcTimeoutNs() {
156170
return writeRpcTimeoutNs;
157171
}
@@ -176,6 +190,10 @@ long getScanTimeoutNs() {
176190
return scanTimeoutNs;
177191
}
178192

193+
long getMetaScanTimeoutNs() {
194+
return metaScanTimeoutNs;
195+
}
196+
179197
int getScannerCaching() {
180198
return scannerCaching;
181199
}

hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncTableBuilderBase.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,12 @@ abstract class AsyncTableBuilderBase<C extends ScanResultConsumerBase>
5555
this.tableName = tableName;
5656
this.operationTimeoutNs = tableName.isSystemTable() ? connConf.getMetaOperationTimeoutNs()
5757
: connConf.getOperationTimeoutNs();
58-
this.scanTimeoutNs = connConf.getScanTimeoutNs();
58+
this.scanTimeoutNs =
59+
tableName.isSystemTable() ? connConf.getMetaScanTimeoutNs() : connConf.getScanTimeoutNs();
5960
this.rpcTimeoutNs = connConf.getRpcTimeoutNs();
60-
this.readRpcTimeoutNs = connConf.getReadRpcTimeoutNs();
61+
this.readRpcTimeoutNs = tableName.isSystemTable()
62+
? connConf.getMetaReadRpcTimeoutNs()
63+
: connConf.getReadRpcTimeoutNs();
6164
this.writeRpcTimeoutNs = connConf.getWriteRpcTimeoutNs();
6265
this.pauseNs = connConf.getPauseNs();
6366
this.pauseNsForServerOverloaded = connConf.getPauseNsForServerOverloaded();

hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientAsyncPrefetchScanner.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,11 @@ public class ClientAsyncPrefetchScanner extends ClientSimpleScanner {
6060
private final Condition notFull = lock.newCondition();
6161

6262
public ClientAsyncPrefetchScanner(Configuration configuration, Scan scan, TableName name,
63-
ClusterConnection connection, RpcRetryingCallerFactory rpcCallerFactory,
64-
RpcControllerFactory rpcControllerFactory, ExecutorService pool,
65-
int replicaCallTimeoutMicroSecondScan) throws IOException {
63+
ClusterConnection connection, RpcRetryingCallerFactory rpcCallerFactory,
64+
RpcControllerFactory rpcControllerFactory, ExecutorService pool, int scanReadRpcTimeout,
65+
int scannerTimeout, int replicaCallTimeoutMicroSecondScan) throws IOException {
6666
super(configuration, scan, name, connection, rpcCallerFactory, rpcControllerFactory, pool,
67-
replicaCallTimeoutMicroSecondScan);
67+
scanReadRpcTimeout, scannerTimeout, replicaCallTimeoutMicroSecondScan);
6868
exceptionsQueue = new ConcurrentLinkedQueue<>();
6969
Threads.setDaemonThreadRunning(new Thread(new PrefetchRunnable()), name + ".asyncPrefetcher");
7070
}

hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public abstract class ClientScanner extends AbstractClientScanner {
7070
protected final long maxScannerResultSize;
7171
private final ClusterConnection connection;
7272
protected final TableName tableName;
73+
protected final int readRpcTimeout;
7374
protected final int scannerTimeout;
7475
protected boolean scanMetricsPublished = false;
7576
protected RpcRetryingCaller<Result[]> caller;
@@ -94,9 +95,9 @@ public abstract class ClientScanner extends AbstractClientScanner {
9495
* @throws IOException
9596
*/
9697
public ClientScanner(final Configuration conf, final Scan scan, final TableName tableName,
97-
ClusterConnection connection, RpcRetryingCallerFactory rpcFactory,
98-
RpcControllerFactory controllerFactory, ExecutorService pool, int primaryOperationTimeout)
99-
throws IOException {
98+
ClusterConnection connection, RpcRetryingCallerFactory rpcFactory,
99+
RpcControllerFactory controllerFactory, ExecutorService pool, int scanReadRpcTimeout,
100+
int scannerTimeout, int primaryOperationTimeout) throws IOException {
100101
if (LOG.isTraceEnabled()) {
101102
LOG.trace(
102103
"Scan table=" + tableName + ", startRow=" + Bytes.toStringBinary(scan.getStartRow()));
@@ -115,8 +116,8 @@ public ClientScanner(final Configuration conf, final Scan scan, final TableName
115116
this.maxScannerResultSize = conf.getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY,
116117
HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE);
117118
}
118-
this.scannerTimeout = conf.getInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD,
119-
HConstants.DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD);
119+
this.readRpcTimeout = scanReadRpcTimeout;
120+
this.scannerTimeout = scannerTimeout;
120121

121122
// check if application wants to collect scan metrics
122123
initScanMetrics(scan);
@@ -243,9 +244,9 @@ protected boolean moveToNextRegion() {
243244
// clear the current region, we will set a new value to it after the first call of the new
244245
// callable.
245246
this.currentRegion = null;
246-
this.callable =
247-
new ScannerCallableWithReplicas(getTable(), getConnection(), createScannerCallable(), pool,
248-
primaryOperationTimeout, scan, getRetries(), scannerTimeout, caching, conf, caller);
247+
this.callable = new ScannerCallableWithReplicas(getTable(), getConnection(),
248+
createScannerCallable(), pool, primaryOperationTimeout, scan, getRetries(), readRpcTimeout,
249+
scannerTimeout, caching, conf, caller);
249250
this.callable.setCaching(this.caching);
250251
incRegionCountMetrics(scanMetrics);
251252
return true;

hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientSimpleScanner.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@
3737
@InterfaceAudience.Private
3838
public class ClientSimpleScanner extends ClientScanner {
3939
public ClientSimpleScanner(Configuration configuration, Scan scan, TableName name,
40-
ClusterConnection connection, RpcRetryingCallerFactory rpcCallerFactory,
41-
RpcControllerFactory rpcControllerFactory, ExecutorService pool,
42-
int replicaCallTimeoutMicroSecondScan) throws IOException {
40+
ClusterConnection connection, RpcRetryingCallerFactory rpcCallerFactory,
41+
RpcControllerFactory rpcControllerFactory, ExecutorService pool, int scanReadRpcTimeout,
42+
int scannerTimeout, int replicaCallTimeoutMicroSecondScan) throws IOException {
4343
super(configuration, scan, name, connection, rpcCallerFactory, rpcControllerFactory, pool,
44-
replicaCallTimeoutMicroSecondScan);
44+
scanReadRpcTimeout, scannerTimeout, replicaCallTimeoutMicroSecondScan);
4545
}
4646

4747
@Override

hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionConfiguration.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ public class ConnectionConfiguration {
6666
HConstants.HBASE_CLIENT_PAUSE_FOR_CQTBE, HBASE_CLIENT_PAUSE_FOR_SERVER_OVERLOADED);
6767
}
6868

69+
public static final String HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY =
70+
"hbase.client.meta.read.rpc.timeout";
71+
public static final String HBASE_CLIENT_META_SCANNER_TIMEOUT =
72+
"hbase.client.meta.scanner.timeout.period";
73+
6974
private final long writeBufferSize;
7075
private final long writeBufferPeriodicFlushTimeoutMs;
7176
private final long writeBufferPeriodicFlushTimerTickMs;
@@ -80,7 +85,11 @@ public class ConnectionConfiguration {
8085
private final int maxKeyValueSize;
8186
private final int rpcTimeout;
8287
private final int readRpcTimeout;
88+
private final int metaReadRpcTimeout;
8389
private final int writeRpcTimeout;
90+
private final int scanTimeout;
91+
private final int metaScanTimeout;
92+
8493
// toggle for async/sync prefetch
8594
private final boolean clientScannerAsyncPrefetch;
8695
private final long pauseMs;
@@ -138,10 +147,17 @@ public class ConnectionConfiguration {
138147
this.readRpcTimeout = conf.getInt(HConstants.HBASE_RPC_READ_TIMEOUT_KEY,
139148
conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT));
140149

150+
this.metaReadRpcTimeout = conf.getInt(HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEY, readRpcTimeout);
151+
141152
this.writeRpcTimeout = conf.getInt(HConstants.HBASE_RPC_WRITE_TIMEOUT_KEY,
142153
conf.getInt(HConstants.HBASE_RPC_TIMEOUT_KEY, HConstants.DEFAULT_HBASE_RPC_TIMEOUT));
143154

144155

156+
this.scanTimeout = conf.getInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD,
157+
HConstants.DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD);
158+
159+
this.metaScanTimeout = conf.getInt(HBASE_CLIENT_META_SCANNER_TIMEOUT, scanTimeout);
160+
145161
long pauseMs = conf.getLong(HBASE_CLIENT_PAUSE, DEFAULT_HBASE_CLIENT_PAUSE);
146162
long pauseMsForServerOverloaded = conf.getLong(HBASE_CLIENT_PAUSE_FOR_SERVER_OVERLOADED,
147163
conf.getLong(HConstants.HBASE_CLIENT_PAUSE_FOR_CQTBE, pauseMs));
@@ -178,8 +194,11 @@ protected ConnectionConfiguration() {
178194
this.clientScannerAsyncPrefetch = Scan.DEFAULT_HBASE_CLIENT_SCANNER_ASYNC_PREFETCH;
179195
this.maxKeyValueSize = MAX_KEYVALUE_SIZE_DEFAULT;
180196
this.readRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;
197+
this.metaReadRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;
181198
this.writeRpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;
182199
this.rpcTimeout = HConstants.DEFAULT_HBASE_RPC_TIMEOUT;
200+
this.scanTimeout = HConstants.DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD;
201+
this.metaScanTimeout = scanTimeout;
183202
this.pauseMs = DEFAULT_HBASE_CLIENT_PAUSE;
184203
this.pauseMsForServerOverloaded = DEFAULT_HBASE_CLIENT_PAUSE;
185204
}
@@ -188,6 +207,10 @@ public int getReadRpcTimeout() {
188207
return readRpcTimeout;
189208
}
190209

210+
public int getMetaReadRpcTimeout() {
211+
return metaReadRpcTimeout;
212+
}
213+
191214
public int getWriteRpcTimeout() {
192215
return writeRpcTimeout;
193216
}
@@ -248,6 +271,14 @@ public int getRpcTimeout() {
248271
return rpcTimeout;
249272
}
250273

274+
public int getScanTimeout() {
275+
return scanTimeout;
276+
}
277+
278+
public int getMetaScanTimeout() {
279+
return metaScanTimeout;
280+
}
281+
251282
public long getPauseMillis() {
252283
return pauseMs;
253284
}

hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,8 @@ private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, bool
934934
s.resetMvccReadPoint();
935935
try (ReversedClientScanner rcs =
936936
new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,
937-
rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {
937+
rpcControllerFactory, getMetaLookupPool(), connectionConfig.getMetaReadRpcTimeout(),
938+
connectionConfig.getMetaScanTimeout(), metaReplicaCallTimeoutScanInMicroSecond)) {
938939
boolean tableNotFound = true;
939940
for (;;) {
940941
Result regionInfoRow = rcs.next();

hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ public class HTable implements Table {
114114
private final int rpcTimeoutMs; // FIXME we should use this for rpc like batch and checkAndXXX
115115
private int readRpcTimeoutMs; // timeout for each read rpc request
116116
private int writeRpcTimeoutMs; // timeout for each write rpc request
117+
118+
private final int scanReadRpcTimeout;
119+
private final int scanTimeout;
117120
private final boolean cleanupPoolOnClose; // shutdown the pool in close()
118121
private final HRegionLocator locator;
119122

@@ -187,6 +190,8 @@ protected HTable(final ConnectionImplementation connection,
187190
this.rpcTimeoutMs = builder.rpcTimeout;
188191
this.readRpcTimeoutMs = builder.readRpcTimeout;
189192
this.writeRpcTimeoutMs = builder.writeRpcTimeout;
193+
this.scanReadRpcTimeout = builder.scanReadRpcTimeout;
194+
this.scanTimeout = builder.scanTimeout;
190195
this.scannerCaching = connConfiguration.getScannerCaching();
191196
this.scannerMaxResultSize = connConfiguration.getScannerMaxResultSize();
192197

@@ -306,24 +311,24 @@ public ResultScanner getScanner(Scan scan) throws IOException {
306311
// it is not supposed to be set by user, clear
307312
scan.resetMvccReadPoint();
308313
}
309-
Boolean async = scan.isAsyncPrefetch();
310-
if (async == null) {
311-
async = connConfiguration.isClientScannerAsyncPrefetch();
312-
}
314+
final boolean async = scan.isAsyncPrefetch() != null
315+
? scan.isAsyncPrefetch()
316+
: connConfiguration.isClientScannerAsyncPrefetch();
317+
final int replicaTimeout = connConfiguration.getReplicaCallTimeoutMicroSecondScan();
313318

314319
if (scan.isReversed()) {
315-
return new ReversedClientScanner(getConfiguration(), scan, getName(),
316-
this.connection, this.rpcCallerFactory, this.rpcControllerFactory,
317-
pool, connConfiguration.getReplicaCallTimeoutMicroSecondScan());
320+
return new ReversedClientScanner(getConfiguration(), scan, getName(), connection,
321+
rpcCallerFactory, rpcControllerFactory, pool, scanReadRpcTimeout, scanTimeout,
322+
replicaTimeout);
318323
} else {
319324
if (async) {
320-
return new ClientAsyncPrefetchScanner(getConfiguration(), scan, getName(), this.connection,
321-
this.rpcCallerFactory, this.rpcControllerFactory,
322-
pool, connConfiguration.getReplicaCallTimeoutMicroSecondScan());
325+
return new ClientAsyncPrefetchScanner(getConfiguration(), scan, getName(), connection,
326+
rpcCallerFactory, rpcControllerFactory, pool, scanReadRpcTimeout, scanTimeout,
327+
replicaTimeout);
323328
} else {
324-
return new ClientSimpleScanner(getConfiguration(), scan, getName(), this.connection,
325-
this.rpcCallerFactory, this.rpcControllerFactory,
326-
pool, connConfiguration.getReplicaCallTimeoutMicroSecondScan());
329+
return new ClientSimpleScanner(getConfiguration(), scan, getName(), connection,
330+
rpcCallerFactory, rpcControllerFactory, pool, scanReadRpcTimeout, scanTimeout,
331+
replicaTimeout);
327332
}
328333
}
329334
}

hbase-client/src/main/java/org/apache/hadoop/hbase/client/ResultBoundedCompletionService.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/**
1+
/**
22
*
33
* Licensed to the Apache Software Foundation (ASF) under one
44
* or more contributor license agreements. See the NOTICE file
@@ -59,16 +59,17 @@ class QueueingFuture<T> implements RunnableFuture<T> {
5959
private T result = null;
6060
private ExecutionException exeEx = null;
6161
private volatile boolean cancelled = false;
62-
private final int callTimeout;
62+
private final int operationTimeout;
6363
private final RpcRetryingCaller<T> retryingCaller;
6464
private boolean resultObtained = false;
6565
private final int replicaId; // replica id
6666

6767

68-
public QueueingFuture(RetryingCallable<T> future, int callTimeout, int id) {
68+
public QueueingFuture(RetryingCallable<T> future, int rpcTimeout, int operationTimeout,
69+
int id) {
6970
this.future = future;
70-
this.callTimeout = callTimeout;
71-
this.retryingCaller = retryingCallerFactory.<T>newCaller();
71+
this.operationTimeout = operationTimeout;
72+
this.retryingCaller = retryingCallerFactory.<T> newCaller(rpcTimeout);
7273
this.replicaId = id;
7374
}
7475

@@ -77,7 +78,7 @@ public QueueingFuture(RetryingCallable<T> future, int callTimeout, int id) {
7778
public void run() {
7879
try {
7980
if (!cancelled) {
80-
result = this.retryingCaller.callWithRetries(future, callTimeout);
81+
result = this.retryingCaller.callWithRetries(future, operationTimeout);
8182
resultObtained = true;
8283
}
8384
} catch (Throwable t) {
@@ -165,10 +166,10 @@ public ResultBoundedCompletionService(
165166
this.completedTasks = new ArrayList<>(maxTasks);
166167
}
167168

168-
169-
public void submit(RetryingCallable<V> task, int callTimeout, int id) {
170-
QueueingFuture<V> newFuture = new QueueingFuture<>(task, callTimeout, id);
171-
executor.execute(TraceUtil.wrap(newFuture, "ResultBoundedCompletionService.submit"));
169+
public void submit(RetryingCallable<V> task, int rpcTimeout, int operationTimeout, int id) {
170+
QueueingFuture<V> newFuture = new QueueingFuture<>(task, rpcTimeout, operationTimeout, id);
171+
// remove trace for runnable because HBASE-25373 and OpenTelemetry do not cover TraceRunnable
172+
executor.execute(newFuture);
172173
tasks[id] = newFuture;
173174
}
174175

hbase-client/src/main/java/org/apache/hadoop/hbase/client/ReversedClientScanner.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ public class ReversedClientScanner extends ClientScanner {
3939
* {@link Scan}'s start row maybe changed.
4040
*/
4141
public ReversedClientScanner(Configuration conf, Scan scan, TableName tableName,
42-
ClusterConnection connection, RpcRetryingCallerFactory rpcFactory,
43-
RpcControllerFactory controllerFactory, ExecutorService pool, int primaryOperationTimeout)
44-
throws IOException {
42+
ClusterConnection connection, RpcRetryingCallerFactory rpcFactory,
43+
RpcControllerFactory controllerFactory, ExecutorService pool, int scanReadRpcTimeout,
44+
int scannerTimeout, int primaryOperationTimeout) throws IOException {
4545
super(conf, scan, tableName, connection, rpcFactory, controllerFactory, pool,
46-
primaryOperationTimeout);
46+
scanReadRpcTimeout, scannerTimeout, primaryOperationTimeout);
4747
}
4848

4949
@Override

0 commit comments

Comments
 (0)