From f38d97b8903a7a99bc8d8fe475a476f9f5567973 Mon Sep 17 00:00:00 2001 From: khemani Date: Mon, 26 Mar 2012 14:42:26 -0700 Subject: [PATCH] [HBASE-5618] SplitLogManager - prevent unnecessary attempts to resubmits --- .../hadoop/hbase/master/SplitLogManager.java | 19 +++++++++++++++++-- 1 files changed, 17 insertions(+), 2 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 5d94ea9..98c85af 100644 --- a/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java +++ b/src/main/java/org/apache/hadoop/hbase/master/SplitLogManager.java @@ -531,6 +531,7 @@ public class SplitLogManager extends ZooKeeperListener { version) == false) { LOG.debug("failed to resubmit task " + path + " version changed"); + task.heartbeatNoDetails(EnvironmentEdgeManager.currentTimeMillis()); return false; } } catch (NoNodeException e) { @@ -538,6 +539,11 @@ public class SplitLogManager extends ZooKeeperListener { " task done (or forced done by removing the znode)"); getDataSetWatchSuccess(path, null, Integer.MIN_VALUE); return false; + } catch (KeeperException.BadVersionException e) { + LOG.debug("failed to resubmit task " + path + + " version changed"); + task.heartbeatNoDetails(EnvironmentEdgeManager.currentTimeMillis()); + return false; } catch (KeeperException e) { tot_mgr_resubmit_failed.incrementAndGet(); LOG.warn("failed to resubmit " + path, e); @@ -708,7 +714,12 @@ public class SplitLogManager extends ZooKeeperListener { @Override public void nodeDataChanged(String path) { - if (tasks.get(path) != null || ZKSplitLog.isRescanNode(watcher, path)) { + Task task; + task = tasks.get(path); + if (task != null || ZKSplitLog.isRescanNode(watcher, path)) { + if (task != null) { + task.heartbeatNoDetails(EnvironmentEdgeManager.currentTimeMillis()); + } getDataSetWatch(path, zkretries); } } @@ -804,7 +815,11 @@ public class SplitLogManager extends ZooKeeperListener { } public boolean isUnassigned() { - return (last_update == -1); + return (cur_worker_name == null); + } + + public void heartbeatNoDetails(long time) { + last_update = time; } public void heartbeat(long time, int version, String worker) { -- 1.7.7.2