From 6d38ef516fe67573450392f405b2accaf7c538ac Mon Sep 17 00:00:00 2001 From: khemani Date: Fri, 9 Dec 2011 12:03:07 -0800 Subject: [PATCH] HBASE-4997 [jira] SplitLogManager can have a race on batch.installed Summary: HBASE-4997 SplitLogManager can have a race on batch.installed This is a continuation of HBASE-4987. Will put up a patch shortly. Test Plan: EMPTY Reviewers: JIRA --- .../hadoop/hbase/master/SplitLogManager.java | 14 ++++++-------- 1 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java b/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java index 575c1c9..667a8b1 100644 --- a/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java +++ b/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java @@ -351,9 +351,7 @@ public class SplitLogManager extends ZooKeeperListener { } else { task.batch.error++; } - if ((task.batch.done + task.batch.error) == task.batch.installed) { - task.batch.notify(); - } + task.batch.notify(); } } } @@ -607,9 +605,9 @@ public class SplitLogManager extends ZooKeeperListener { // a single thread touches batch.installed. oldtask = tasks.putIfAbsent(path, new Task(batch)); if (oldtask != null) { + // new task was not used. + batch.installed--; synchronized (oldtask) { - // new task was not used. - batch.installed--; if (oldtask.isOrphan()) { if (oldtask.deleted) { // The task is already done. Do not install the batch for this @@ -618,12 +616,12 @@ public class SplitLogManager extends ZooKeeperListener { // this task to complete. return (null); } - LOG.info("Previously orphan task " + path + - " is now being waited upon"); oldtask.setBatch(batch); - return (null); } } + LOG.info("Previously orphan task " + path + + " is now being waited upon"); + return (null); } return oldtask; } -- 1.7.7.2