You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@giraph.apache.org by ma...@apache.org on 2013/02/22 19:18:15 UTC

git commit: GIRAPH-532: Give an explanation when trying to use unregistered aggregators (majakabiljo)

Updated Branches:
  refs/heads/trunk 92517430e -> 39c9add15


GIRAPH-532: Give an explanation when trying to use unregistered aggregators (majakabiljo)


Project: http://git-wip-us.apache.org/repos/asf/giraph/repo
Commit: http://git-wip-us.apache.org/repos/asf/giraph/commit/39c9add1
Tree: http://git-wip-us.apache.org/repos/asf/giraph/tree/39c9add1
Diff: http://git-wip-us.apache.org/repos/asf/giraph/diff/39c9add1

Branch: refs/heads/trunk
Commit: 39c9add1537c46fe79a10f2456fa5829ccda64d3
Parents: 9251743
Author: Maja Kabiljo <ma...@maja-mbp.thefacebook.com>
Authored: Fri Feb 22 10:13:18 2013 -0800
Committer: Maja Kabiljo <ma...@maja-mbp.thefacebook.com>
Committed: Fri Feb 22 10:14:53 2013 -0800

----------------------------------------------------------------------
 CHANGELOG                                          |    2 +
 .../giraph/comm/aggregators/AggregatorUtils.java   |   26 +++++++++++++++
 .../giraph/master/MasterAggregatorHandler.java     |   11 +++++-
 .../giraph/worker/WorkerAggregatorHandler.java     |   16 +++++++--
 4 files changed, 49 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/giraph/blob/39c9add1/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index 60dcbf1..ec34ba0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,8 @@
 Giraph Change Log
 
 Release 0.2.0 - unreleased
+  GIRAPH-532: Give an explanation when trying to use unregistered aggregators (majakabiljo)
+
   GIRAPH-453: Pure Hive I/O (nitay)
 
   GIRAPH-526: HiveGiraphRunner - bug with setting database name (majakabiljo)

http://git-wip-us.apache.org/repos/asf/giraph/blob/39c9add1/giraph-core/src/main/java/org/apache/giraph/comm/aggregators/AggregatorUtils.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/comm/aggregators/AggregatorUtils.java b/giraph-core/src/main/java/org/apache/giraph/comm/aggregators/AggregatorUtils.java
index 457c94a..0abd7e1 100644
--- a/giraph-core/src/main/java/org/apache/giraph/comm/aggregators/AggregatorUtils.java
+++ b/giraph-core/src/main/java/org/apache/giraph/comm/aggregators/AggregatorUtils.java
@@ -117,4 +117,30 @@ public class AggregatorUtils {
     return conf.getBoolean(USE_THREAD_LOCAL_AGGREGATORS,
         USE_THREAD_LOCAL_AGGREGATORS_DEFAULT);
   }
+
+  /**
+   * Get the warning message about usage of unregistered aggregator to be
+   * printed to user. If user didn't register any aggregators also provide
+   * the explanation on how to do so.
+   *
+   * @param aggregatorName The name of the aggregator which user tried to
+   *                       access
+   * @param hasRegisteredAggregators True iff user registered some aggregators
+   * @param conf Giraph configuration
+   * @return Warning message
+   */
+  public static String getUnregisteredAggregatorMessage(
+      String aggregatorName, boolean hasRegisteredAggregators,
+      ImmutableClassesGiraphConfiguration conf) {
+    String message = "Tried to access aggregator which wasn't registered " +
+        aggregatorName;
+    if (!hasRegisteredAggregators) {
+      message = message + "; Aggregators can be registered in " +
+          "MasterCompute.initialize by calling " +
+          "registerAggregator(aggregatorName, aggregatorClass). " +
+          "Also be sure that you are correctly setting MasterCompute class, " +
+          "currently using " + conf.getMasterComputeClass().getName();
+    }
+    return message;
+  }
 }

http://git-wip-us.apache.org/repos/asf/giraph/blob/39c9add1/giraph-core/src/main/java/org/apache/giraph/master/MasterAggregatorHandler.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/master/MasterAggregatorHandler.java b/giraph-core/src/main/java/org/apache/giraph/master/MasterAggregatorHandler.java
index aab1183..f5400d2 100644
--- a/giraph-core/src/main/java/org/apache/giraph/master/MasterAggregatorHandler.java
+++ b/giraph-core/src/main/java/org/apache/giraph/master/MasterAggregatorHandler.java
@@ -57,6 +57,8 @@ public class MasterAggregatorHandler implements MasterAggregatorUsage,
   private final AggregatorWriter aggregatorWriter;
   /** Progressable used to report progress */
   private final Progressable progressable;
+  /** Giraph configuration */
+  private final ImmutableClassesGiraphConfiguration<?, ?, ?, ?> conf;
 
   /**
    * Constructor
@@ -67,6 +69,7 @@ public class MasterAggregatorHandler implements MasterAggregatorUsage,
   public MasterAggregatorHandler(
       ImmutableClassesGiraphConfiguration<?, ?, ?, ?> conf,
       Progressable progressable) {
+    this.conf = conf;
     this.progressable = progressable;
     aggregatorWriter = conf.createAggregatorWriter();
   }
@@ -75,6 +78,9 @@ public class MasterAggregatorHandler implements MasterAggregatorUsage,
   public <A extends Writable> A getAggregatedValue(String name) {
     AggregatorWrapper<? extends Writable> aggregator = aggregatorMap.get(name);
     if (aggregator == null) {
+      LOG.warn("getAggregatedValue: " +
+          AggregatorUtils.getUnregisteredAggregatorMessage(name,
+              aggregatorMap.size() != 0, conf));
       return null;
     } else {
       return (A) aggregator.getPreviousAggregatedValue();
@@ -86,8 +92,9 @@ public class MasterAggregatorHandler implements MasterAggregatorUsage,
     AggregatorWrapper<? extends Writable> aggregator = aggregatorMap.get(name);
     if (aggregator == null) {
       throw new IllegalStateException(
-          "setAggregatedValue: Tried to set value of aggregator which wasn't" +
-              " registered " + name);
+          "setAggregatedValue: " +
+              AggregatorUtils.getUnregisteredAggregatorMessage(name,
+                  aggregatorMap.size() != 0, conf));
     }
     ((AggregatorWrapper<A>) aggregator).setCurrentAggregatedValue(value);
   }

http://git-wip-us.apache.org/repos/asf/giraph/blob/39c9add1/giraph-core/src/main/java/org/apache/giraph/worker/WorkerAggregatorHandler.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/worker/WorkerAggregatorHandler.java b/giraph-core/src/main/java/org/apache/giraph/worker/WorkerAggregatorHandler.java
index cafd17b..861add0 100644
--- a/giraph-core/src/main/java/org/apache/giraph/worker/WorkerAggregatorHandler.java
+++ b/giraph-core/src/main/java/org/apache/giraph/worker/WorkerAggregatorHandler.java
@@ -97,14 +97,21 @@ public class WorkerAggregatorHandler implements WorkerThreadAggregatorUsage {
         aggregator.aggregate(value);
       }
     } else {
-      throw new IllegalStateException("aggregate: Tried to aggregate value " +
-          "to unregistered aggregator " + name);
+      throw new IllegalStateException("aggregate: " +
+          AggregatorUtils.getUnregisteredAggregatorMessage(name,
+              currentAggregatorMap.size() != 0, conf));
     }
   }
 
   @Override
   public <A extends Writable> A getAggregatedValue(String name) {
-    return (A) previousAggregatedValueMap.get(name);
+    A value = (A) previousAggregatedValueMap.get(name);
+    if (value == null) {
+      LOG.warn("getAggregatedValue: " +
+          AggregatorUtils.getUnregisteredAggregatorMessage(name,
+              previousAggregatedValueMap.size() != 0, conf));
+    }
+    return value;
   }
 
   /**
@@ -272,7 +279,8 @@ public class WorkerAggregatorHandler implements WorkerThreadAggregatorUsage {
         aggregator.aggregate(value);
       } else {
         throw new IllegalStateException("aggregate: " +
-            "Tried to aggregate value to unregistered aggregator " + name);
+            AggregatorUtils.getUnregisteredAggregatorMessage(name,
+                threadAggregatorMap.size() != 0, conf));
       }
     }