|
19 | 19 |
|
20 | 20 | import java.io.IOException;
|
21 | 21 | import java.io.InterruptedIOException;
|
22 |
| -import java.net.SocketTimeoutException; |
23 | 22 | import java.util.ArrayList;
|
24 | 23 | import java.util.Collection;
|
25 | 24 | import java.util.Collections;
|
@@ -208,12 +207,13 @@ public void run() {
|
208 | 207 | // Cancelled
|
209 | 208 | return;
|
210 | 209 | }
|
211 |
| - } catch (OperationTimeoutExceededException e) { |
| 210 | + } catch (OperationTimeoutExceededException |
| 211 | + | InterruptedOperationTimeoutExceededException e) { |
212 | 212 | // The operation has timed out before executing the actual callable. This may be due to
|
213 | 213 | // slow/hotspotted meta or the operation timeout set too low for the number of requests.
|
214 | 214 | // Circumventing the usual failure flow ensure the meta cache is not cleared and will not
|
215 | 215 | // result in a doomed feedback loop in which the meta continues to be hotspotted.
|
216 |
| - // See HBASE-27487 |
| 216 | + // See HBASE-27487 + HBASE-29265 |
217 | 217 | failAll(multiAction, server, numAttempt, e);
|
218 | 218 | return;
|
219 | 219 | } catch (IOException e) {
|
@@ -1254,7 +1254,8 @@ public void waitUntilDone() throws InterruptedIOException {
|
1254 | 1254 | // stuck here forever
|
1255 | 1255 | long cutoff = (EnvironmentEdgeManager.currentTime() + this.operationTimeout) * 1000L;
|
1256 | 1256 | if (!waitUntilDone(cutoff)) {
|
1257 |
| - throw new SocketTimeoutException("time out before the actionsInProgress changed to zero"); |
| 1257 | + throw new InterruptedOperationTimeoutExceededException( |
| 1258 | + "time out before the actionsInProgress changed to zero"); |
1258 | 1259 | }
|
1259 | 1260 | } else {
|
1260 | 1261 | waitUntilDone(Long.MAX_VALUE);
|
|
0 commit comments