HBASE-10522 Correct wrong handling and add proper handling for swallowed InterruptedException thrown by Thread.sleep in client (Feng Honghua)

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1570216 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
nkeywal 2014-02-20 15:07:45 +00:00
parent 1d52d528c9
commit 2476afbcb2
2 changed files with 17 additions and 14 deletions

View File

@ -696,7 +696,8 @@ public class HBaseAdmin implements Abortable, Closeable {
try { try {
Thread.sleep(getPauseTime(tries)); Thread.sleep(getPauseTime(tries));
} catch (InterruptedException e) { } catch (InterruptedException e) {
// continue throw new InterruptedIOException("Interrupted when waiting" +
" for table to be deleted");
} }
} }
@ -2708,10 +2709,8 @@ public class HBaseAdmin implements Abortable, Closeable {
LOG.debug("(#" + tries + ") Sleeping: " + sleep + LOG.debug("(#" + tries + ") Sleeping: " + sleep +
"ms while waiting for snapshot completion."); "ms while waiting for snapshot completion.");
Thread.sleep(sleep); Thread.sleep(sleep);
} catch (InterruptedException e) { } catch (InterruptedException e) {
LOG.debug("Interrupted while waiting for snapshot " + snapshot + " to complete"); throw (InterruptedIOException)new InterruptedIOException("Interrupted").initCause(e);
Thread.currentThread().interrupt();
} }
LOG.debug("Getting current status of snapshot from master..."); LOG.debug("Getting current status of snapshot from master...");
done = executeCallable(new MasterCallable<IsSnapshotDoneResponse>(getConnection()) { done = executeCallable(new MasterCallable<IsSnapshotDoneResponse>(getConnection()) {
@ -2720,7 +2719,7 @@ public class HBaseAdmin implements Abortable, Closeable {
return master.isSnapshotDone(null, request); return master.isSnapshotDone(null, request);
} }
}); });
}; }
if (!done.getDone()) { if (!done.getDone()) {
throw new SnapshotCreationException("Snapshot '" + snapshot.getName() throw new SnapshotCreationException("Snapshot '" + snapshot.getName()
+ "' wasn't completed in expectedTime:" + max + " ms", snapshot); + "' wasn't completed in expectedTime:" + max + " ms", snapshot);
@ -3048,10 +3047,8 @@ public class HBaseAdmin implements Abortable, Closeable {
LOG.debug("(#" + tries + ") Sleeping: " + sleep + LOG.debug("(#" + tries + ") Sleeping: " + sleep +
"ms while waiting for procedure completion."); "ms while waiting for procedure completion.");
Thread.sleep(sleep); Thread.sleep(sleep);
} catch (InterruptedException e) { } catch (InterruptedException e) {
LOG.debug("Interrupted while waiting for procedure " + signature + " to complete"); throw (InterruptedIOException)new InterruptedIOException("Interrupted").initCause(e);
Thread.currentThread().interrupt();
} }
LOG.debug("Getting current status of procedure from master..."); LOG.debug("Getting current status of procedure from master...");
done = isProcedureFinished(signature, instance, props); done = isProcedureFinished(signature, instance, props);
@ -3132,8 +3129,7 @@ public class HBaseAdmin implements Abortable, Closeable {
LOG.debug(tries + ") Sleeping: " + sleep + " ms while we wait for snapshot restore to complete."); LOG.debug(tries + ") Sleeping: " + sleep + " ms while we wait for snapshot restore to complete.");
Thread.sleep(sleep); Thread.sleep(sleep);
} catch (InterruptedException e) { } catch (InterruptedException e) {
LOG.debug("Interrupted while waiting for snapshot " + snapshot + " restore to complete"); throw (InterruptedIOException)new InterruptedIOException("Interrupted").initCause(e);
Thread.currentThread().interrupt();
} }
LOG.debug("Getting current status of snapshot restore from master..."); LOG.debug("Getting current status of snapshot restore from master...");
done = executeCallable(new MasterCallable<IsRestoreSnapshotDoneResponse>( done = executeCallable(new MasterCallable<IsRestoreSnapshotDoneResponse>(

View File

@ -472,12 +472,14 @@ public class HTableMultiplexer {
* buffer queue. * buffer queue.
**/ **/
long frequency = conf.getLong(TABLE_MULTIPLEXER_FLUSH_FREQ_MS, 100); long frequency = conf.getLong(TABLE_MULTIPLEXER_FLUSH_FREQ_MS, 100);
// initial delay // initial delay
try { try {
Thread.sleep(frequency); Thread.sleep(frequency);
} catch (InterruptedException e) { } catch (InterruptedException e) {
} // Ignore LOG.warn("Interrupted while sleeping");
Thread.currentThread().interrupt();
}
long start, elapsed; long start, elapsed;
int failedCount = 0; int failedCount = 0;
@ -488,7 +490,7 @@ public class HTableMultiplexer {
// Clear the processingList, putToStatusMap and failedCount // Clear the processingList, putToStatusMap and failedCount
processingList.clear(); processingList.clear();
failedCount = 0; failedCount = 0;
// drain all the queued puts into the tmp list // drain all the queued puts into the tmp list
queue.drainTo(processingList); queue.drainTo(processingList);
currentProcessingPutCount.set(processingList.size()); currentProcessingPutCount.set(processingList.size());
@ -567,7 +569,12 @@ public class HTableMultiplexer {
elapsed = EnvironmentEdgeManager.currentTimeMillis() - start; elapsed = EnvironmentEdgeManager.currentTimeMillis() - start;
} }
if (elapsed < frequency) { if (elapsed < frequency) {
Thread.sleep(frequency - elapsed); try {
Thread.sleep(frequency - elapsed);
} catch (InterruptedException e) {
LOG.warn("Interrupted while sleeping");
Thread.currentThread().interrupt();
}
} }
} catch (Exception e) { } catch (Exception e) {
// Log all the exceptions and move on // Log all the exceptions and move on