HBASE-24454 - Read ioErrorStartTime to local temporary variable to avoid issue when it is set to -1 between greater than zero check and calculation of error duration (#1816)

Signed-off-by Anoop Sam John <anoopsamjohn@apache.org>
This commit is contained in:
jacob-leblanc 2020-05-31 00:06:40 -04:00 committed by GitHub
parent 36a6ef9cf9
commit c120260bce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 2 deletions

View File

@ -1175,8 +1175,10 @@ public class BucketCache implements BlockCache, HeapSize {
*/
private void checkIOErrorIsTolerated() {
long now = EnvironmentEdgeManager.currentTime();
if (this.ioErrorStartTime > 0) {
if (cacheEnabled && (now - ioErrorStartTime) > this.ioErrorsTolerationDuration) {
// Do a single read to a local variable to avoid timing issue - HBASE-24454
long ioErrorStartTimeTmp = this.ioErrorStartTime;
if (ioErrorStartTimeTmp > 0) {
if (cacheEnabled && (now - ioErrorStartTimeTmp) > this.ioErrorsTolerationDuration) {
LOG.error("IO errors duration time has exceeded " + ioErrorsTolerationDuration +
"ms, disabling cache, please check your IOEngine");
disableCache();