From bad11c48e88778139dab29ceb9bc85c329b8fd7e Mon Sep 17 00:00:00 2001 From: Elliott Clark Date: Mon, 5 Oct 2015 17:20:54 -0700 Subject: [PATCH] HBASE-14555 Fix Deadlock in MVCC branch-1.2 toString() --- .../hbase/regionserver/MultiVersionConcurrencyControl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java index 00f349e..549ef65 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.java @@ -230,12 +230,18 @@ public class MultiVersionConcurrencyControl { sb.append(this.readPoint.get()); sb.append(", writePoint="); sb.append(this.writePoint); - synchronized (this.writeQueue) { - for (WriteEntry we: this.writeQueue) { + try { + for (WriteEntry we : this.writeQueue) { sb.append(", ["); sb.append(we); sb.append("]"); } + } catch (Exception e) { + // IGNORED. + // + // It's possible that the write queue gets changed while we are iterating. + // That will cause this to error out. + // However if we hold the lock then it causes a deadlock. } return sb.toString(); } -- 2.6.0