You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2017/01/12 00:34:33 UTC
tinkerpop git commit: okay,
so I now have the GryoMapper classes programmically loaded in the
ActorSystem serialiation-bindings. This is slick. We are almost there. Done
for the night. That was a 13 hour day.
Repository: tinkerpop
Updated Branches:
refs/heads/TINKERPOP-1564 2660b3337 -> eddfd1990
okay, so I now have the GryoMapper classes programmically loaded in the ActorSystem serialiation-bindings. This is slick. We are almost there. Done for the night. That was a 13 hour day.
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/eddfd199
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/eddfd199
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/eddfd199
Branch: refs/heads/TINKERPOP-1564
Commit: eddfd19907022633c108bcfe8888243570462a93
Parents: 2660b33
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jan 11 17:34:27 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Jan 11 17:34:27 2017 -0700
----------------------------------------------------------------------
.../akka/process/actors/AkkaGraphActors.java | 27 +++++++++++++++-----
.../akka/process/actors/io/GryoSerializer.java | 11 ++++++++
.../src/main/resources/application.conf | 9 ++-----
.../traversal/message/BarrierDoneMessage.java | 6 ++++-
.../traversal/message/SideEffectSetMessage.java | 8 ++++--
5 files changed, 44 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eddfd199/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java
index acc06ff..7641b01 100644
--- a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java
+++ b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/AkkaGraphActors.java
@@ -26,7 +26,7 @@ import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigValueFactory;
import org.apache.commons.configuration.BaseConfiguration;
import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationUtils;
+import org.apache.tinkerpop.gremlin.akka.process.actors.io.GryoSerializer;
import org.apache.tinkerpop.gremlin.process.actors.ActorProgram;
import org.apache.tinkerpop.gremlin.process.actors.ActorsResult;
import org.apache.tinkerpop.gremlin.process.actors.Address;
@@ -42,6 +42,8 @@ import org.apache.tinkerpop.gremlin.util.config.SerializableConfiguration;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Future;
import java.util.stream.Collectors;
@@ -91,12 +93,23 @@ public final class AkkaGraphActors<R> implements GraphActors<R> {
if (this.executed)
throw new IllegalStateException("Can not execute twice");
this.executed = true;
- final Config config = ConfigFactory.defaultApplication().withValue("message-priorities",
- ConfigValueFactory.fromAnyRef(this.actorProgram.getMessagePriorities().
- orElse(Collections.singletonList(Object.class)).
- stream().
- map(Class::getCanonicalName).
- collect(Collectors.toList()).toString()));
+ final Map<String, String> registeredGryoClasses = new HashMap<>();
+ new GryoSerializer().getGryoMapper().getRegisteredClasses().stream().filter(clazz -> !clazz.isArray()).forEach(clazz -> {
+ int index = clazz.getCanonicalName().lastIndexOf(".");
+ registeredGryoClasses.put(null == clazz.getEnclosingClass() ?
+ clazz.getCanonicalName() :
+ clazz.getCanonicalName().substring(0, index) + "$" + clazz.getCanonicalName().substring(index + 1), "gryo");
+ });
+ final Config config = ConfigFactory.defaultApplication().
+ withValue("message-priorities",
+ ConfigValueFactory.fromAnyRef(this.actorProgram.getMessagePriorities().
+ orElse(Collections.singletonList(Object.class)).
+ stream().
+ map(Class::getCanonicalName).
+ collect(Collectors.toList()).toString())).
+ withValue("akka.actor.serialization-bindings", ConfigValueFactory.fromMap(registeredGryoClasses));
+
+
final ActorSystem system = ActorSystem.create("traversal", config);
final ActorsResult<R> result = new DefaultActorsResult<>();
final Partitioner partitioner = this.workers == 1 ? graph.partitioner() : new HashPartitioner(graph.partitioner(), this.workers);
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eddfd199/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/GryoSerializer.java
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/GryoSerializer.java b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/GryoSerializer.java
index ab2b16a..1ffa361 100644
--- a/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/GryoSerializer.java
+++ b/akka-gremlin/src/main/java/org/apache/tinkerpop/gremlin/akka/process/actors/io/GryoSerializer.java
@@ -21,8 +21,12 @@ package org.apache.tinkerpop.gremlin.akka.process.actors.io;
import akka.serialization.Serializer;
import org.apache.tinkerpop.gremlin.process.actors.traversal.message.BarrierAddMessage;
+import org.apache.tinkerpop.gremlin.process.actors.traversal.message.BarrierDoneMessage;
import org.apache.tinkerpop.gremlin.process.actors.traversal.message.SideEffectAddMessage;
+import org.apache.tinkerpop.gremlin.process.actors.traversal.message.SideEffectSetMessage;
import org.apache.tinkerpop.gremlin.process.actors.traversal.message.StartMessage;
+import org.apache.tinkerpop.gremlin.process.actors.traversal.message.Terminate;
+import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoMapper;
import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoPool;
import org.apache.tinkerpop.shaded.kryo.io.Input;
import org.apache.tinkerpop.shaded.kryo.io.Output;
@@ -45,11 +49,18 @@ public final class GryoSerializer implements Serializer {
builder.referenceTracking(true).
registrationRequired(true).
addCustom(
+ Terminate.class,
StartMessage.class,
BarrierAddMessage.class,
+ BarrierDoneMessage.class,
+ SideEffectSetMessage.class,
SideEffectAddMessage.class)).create();
}
+ public GryoMapper getGryoMapper() {
+ return this.gryoPool.getMapper();
+ }
+
@Override
public int identifier() {
return 0;
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eddfd199/akka-gremlin/src/main/resources/application.conf
----------------------------------------------------------------------
diff --git a/akka-gremlin/src/main/resources/application.conf b/akka-gremlin/src/main/resources/application.conf
index 393881a..d1dbf4a 100644
--- a/akka-gremlin/src/main/resources/application.conf
+++ b/akka-gremlin/src/main/resources/application.conf
@@ -11,16 +11,11 @@ custom-dispatcher {
}
akka.actor {
- provider = local
- serialize-messages = off
+ provider = remote
+ serialize-messages = on
serializers {
gryo = "org.apache.tinkerpop.gremlin.akka.process.actors.io.GryoSerializer"
}
- serialization-bindings {
- "org.apache.tinkerpop.gremlin.process.actors.traversal.message.StartMessage" = gryo
- "org.apache.tinkerpop.gremlin.process.actors.traversal.message.BarrierAddMessage" = gryo
- "org.apache.tinkerpop.gremlin.process.actors.traversal.TraversalActorProgram" = gryo
- }
mailbox.requirements {
"org.apache.tinkerpop.gremlin.akka.process.actors.ActorMailbox$ActorSemantics" = custom-dispatcher-mailbox
}
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eddfd199/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/BarrierDoneMessage.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/BarrierDoneMessage.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/BarrierDoneMessage.java
index 7979c33..916c3ed 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/BarrierDoneMessage.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/BarrierDoneMessage.java
@@ -27,7 +27,11 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
*/
public final class BarrierDoneMessage {
- private final String stepId;
+ private String stepId;
+
+ private BarrierDoneMessage() {
+ // for serialization
+ }
public BarrierDoneMessage(final Barrier barrier) {
this.stepId = ((Step) barrier).getId();
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eddfd199/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/SideEffectSetMessage.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/SideEffectSetMessage.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/SideEffectSetMessage.java
index 84788f9..d73069b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/SideEffectSetMessage.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/actors/traversal/message/SideEffectSetMessage.java
@@ -24,8 +24,12 @@ package org.apache.tinkerpop.gremlin.process.actors.traversal.message;
*/
public final class SideEffectSetMessage {
- private final String key;
- private final Object value;
+ private String key;
+ private Object value;
+
+ private SideEffectSetMessage() {
+ // for serialization
+ }
public SideEffectSetMessage(final String key, final Object value) {
this.key = key;