You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2020/05/31 04:08:48 UTC
[hbase] branch branch-2.3 updated: 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)
This is an automated email from the ASF dual-hosted git repository.
stack pushed a commit to branch branch-2.3
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.3 by this push:
new 88a694c 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)
88a694c is described below
commit 88a694cd6cd5b98ed232f3ae40f14bbf82e9ed68
Author: jacob-leblanc <56...@users.noreply.github.com>
AuthorDate: Sun May 31 00:06:40 2020 -0400
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 <an...@apache.org>
---
.../java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java
index 52f0e8a..fca1ffa 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java
@@ -1164,8 +1164,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();