Author: hyunsik
Date: Wed Jul 11 00:38:49 2012
New Revision: 1359965
URL: http://svn.apache.org/viewvc?rev=1359965&view=rev
Log:
GIRAPH-242: HashMapVertex stores neighbor ids twice. Contributed by Alessandro
Presta.
Modified:
giraph/trunk/CHANGELOG
giraph/trunk/src/main/java/org/apache/giraph/graph/HashMapVertex.java
Modified: giraph/trunk/CHANGELOG
URL:
http://svn.apache.org/viewvc/giraph/trunk/CHANGELOG?rev=1359965&r1=1359964&r2=1359965&view=diff
==============================================================================
--- giraph/trunk/CHANGELOG (original)
+++ giraph/trunk/CHANGELOG Wed Jul 11 00:38:49 2012
@@ -2,6 +2,9 @@ Giraph Change Log
Release 0.2.0 - unreleased
+ GIRAPH-242: HashMapVertex stores neighbor ids twice.
+ (Alessandro Presta via hyunsik)
+
GIRAPH-241: Small typos in var names in NettyWorkerClient.java
(Eli Reisman via hyunsik)
Modified: giraph/trunk/src/main/java/org/apache/giraph/graph/HashMapVertex.java
URL:
http://svn.apache.org/viewvc/giraph/trunk/src/main/java/org/apache/giraph/graph/HashMapVertex.java?rev=1359965&r1=1359964&r2=1359965&view=diff
==============================================================================
--- giraph/trunk/src/main/java/org/apache/giraph/graph/HashMapVertex.java
(original)
+++ giraph/trunk/src/main/java/org/apache/giraph/graph/HashMapVertex.java Wed
Jul 11 00:38:49 2012
@@ -54,8 +54,8 @@ public abstract class HashMapVertex<I ex
/** Class logger */
private static final Logger LOG = Logger.getLogger(HashMapVertex.class);
/** Map of destination vertices and their edge values */
- protected final Map<I, Edge<I, E>> destEdgeMap =
- new HashMap<I, Edge<I, E>>();
+ protected final Map<I, E> destEdgeMap =
+ new HashMap<I, E>();
/** Vertex id */
private I vertexId = null;
/** Vertex value */
@@ -72,12 +72,8 @@ public abstract class HashMapVertex<I ex
if (vertexValue != null) {
setVertexValue(vertexValue);
}
- if (edges != null && !edges.isEmpty()) {
- for (Map.Entry<I, E> entry : edges.entrySet()) {
- destEdgeMap.put(
- entry.getKey(),
- new Edge<I, E>(entry.getKey(), entry.getValue()));
- }
+ if (edges != null) {
+ destEdgeMap.putAll(edges);
}
if (messages != null) {
Iterables.<M>addAll(msgList, messages);
@@ -86,9 +82,7 @@ public abstract class HashMapVertex<I ex
@Override
public final boolean addEdge(I targetVertexId, E edgeValue) {
- if (destEdgeMap.put(
- targetVertexId,
- new Edge<I, E>(targetVertexId, edgeValue)) != null) {
+ if (destEdgeMap.put(targetVertexId, edgeValue) != null) {
if (LOG.isDebugEnabled()) {
LOG.debug("addEdge: Vertex=" + vertexId +
": already added an edge value for dest vertex id " +
@@ -127,8 +121,7 @@ public abstract class HashMapVertex<I ex
@Override
public E getEdgeValue(I targetVertexId) {
- Edge<I, E> edge = destEdgeMap.get(targetVertexId);
- return edge != null ? edge.getEdgeValue() : null;
+ return destEdgeMap.get(targetVertexId);
}
@Override
@@ -154,12 +147,7 @@ public abstract class HashMapVertex<I ex
@Override
public E removeEdge(I targetVertexId) {
- Edge<I, E> edge = destEdgeMap.remove(targetVertexId);
- if (edge != null) {
- return edge.getEdgeValue();
- } else {
- return null;
- }
+ return destEdgeMap.remove(targetVertexId);
}
@Override
@@ -168,8 +156,8 @@ public abstract class HashMapVertex<I ex
throw new IllegalArgumentException(
"sendMsgToAllEdges: Cannot send null message to all edges");
}
- for (Edge<I, E> edge : destEdgeMap.values()) {
- sendMsg(edge.getDestVertexId(), msg);
+ for (I targetVertexId : destEdgeMap.keySet()) {
+ sendMsg(targetVertexId, msg);
}
}
@@ -184,10 +172,11 @@ public abstract class HashMapVertex<I ex
}
long edgeMapSize = in.readLong();
for (long i = 0; i < edgeMapSize; ++i) {
- Edge<I, E> edge = new Edge<I, E>();
- edge.setConf(getConf());
- edge.readFields(in);
- addEdge(edge.getDestVertexId(), edge.getEdgeValue());
+ I targetVertexId = BspUtils.<I>createVertexIndex(getConf());
+ targetVertexId.readFields(in);
+ E edgeValue = BspUtils.<E>createEdgeValue(getConf());
+ edgeValue.readFields(in);
+ addEdge(targetVertexId, edgeValue);
}
long msgListSize = in.readLong();
for (long i = 0; i < msgListSize; ++i) {
@@ -206,8 +195,9 @@ public abstract class HashMapVertex<I ex
vertexValue.write(out);
}
out.writeLong(destEdgeMap.size());
- for (Edge<I, E> edge : destEdgeMap.values()) {
- edge.write(out);
+ for (Map.Entry<I, E> edge : destEdgeMap.entrySet()) {
+ edge.getKey().write(out);
+ edge.getValue().write(out);
}
out.writeLong(msgList.size());
for (M msg : msgList) {