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 <[email protected]> Authored: Fri Feb 22 10:13:18 2013 -0800 Committer: Maja Kabiljo <[email protected]> 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)); } }
