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:
parent
36a6ef9cf9
commit
c120260bce
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue