Hi all, I'm doing some tests on using Apache DM for HAMA-732 [1][2] where 4 local processes running locally in parallel should use a separate instance of a CacheService. When using Kryo I get this ConcurrentModificationException:
ERROR bsp.BSPTask: Error running bsp setup and bsp function. com.esotericsoftware.kryo.KryoException: java.util.ConcurrentModificationException Serialization trace: classes (sun.misc.Launcher$AppClassLoader) classLoader (org.apache.hama.HamaConfiguration) conf (org.apache.hama.graph.AggregationRunner) aggregationRunner (org.apache.hama.graph.GraphJobRunner) runner (org.apache.hama.graph.example.PageRank$PageRankVertex) at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:585) at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213) at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:501) at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564) at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213) at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:501) at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564) at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213) at com.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:549) at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:570) at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213) at com.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:549) at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:570) at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213) at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:486) at org.apache.directmemory.serialization.kryo.KryoSerializer.serialize(KryoSerializer.java:68) at org.apache.directmemory.cache.CacheServiceImpl.put(CacheServiceImpl.java:117) at org.apache.directmemory.cache.CacheServiceImpl.put(CacheServiceImpl.java:109) at org.apache.hama.graph.OffHeapVerticesInfo.addVertex(OffHeapVerticesInfo.java:79) at org.apache.hama.graph.GraphJobRunner.loadVertices(GraphJobRunner.java:412) at org.apache.hama.graph.GraphJobRunner.setup(GraphJobRunner.java:102) at org.apache.hama.bsp.BSPTask.runBSP(BSPTask.java:176) at org.apache.hama.bsp.BSPTask.run(BSPTask.java:146) at org.apache.hama.bsp.GroomServer$BSPPeerChild.main(GroomServer.java:1260) Caused by: java.util.ConcurrentModificationException at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372) at java.util.AbstractList$Itr.next(AbstractList.java:343) at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:74) at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:18) at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:501) at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564) ... 23 more What do you think would be the recommended way of using DM in such a setup? May instead be a problem with Kryo? Thanks a lot in advance, Tommaso [1] : https://issues.apache.org/jira/browse/HAMA-732 [2] : https://github.com/tteofili/hama/blob/HAMA-732/graph/src/main/java/org/apache/hama/graph/OffHeapVerticesInfo.java
