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;