diff --git a/janusgraph-core/src/main/java/org/janusgraph/core/JanusGraph.java b/janusgraph-core/src/main/java/org/janusgraph/core/JanusGraph.java index dd51d2b9cf..9d738b9348 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/core/JanusGraph.java +++ b/janusgraph-core/src/main/java/org/janusgraph/core/JanusGraph.java @@ -55,11 +55,13 @@ @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.structure.io.IoTest$GraphMLTest", method = "shouldReadGraphMLWithNoEdgeLabels", - reason = "Titan does not support default edge label (edge) used when GraphML is missing edge labels.") + reason = "JanusGraph does not support default edge label (edge) used when GraphML is missing edge labels.") @Graph.OptOut( test = "org.apache.tinkerpop.gremlin.process.computer.GraphComputerTest", method = "shouldSupportGraphFilter", - reason = "Titan currently does not support graph filters but does not throw proper exception because doing so breaks numerous tests in gremlin-test ProcessComputerSuite.") + reason = "JanusGraph test graph computer (FulgoraGraphComputer) " + + "currently does not support graph filters but does not throw proper exception because doing so breaks numerous " + + "tests in gremlin-test ProcessComputerSuite.") public interface JanusGraph extends Transaction { /* --------------------------------------------------------------- diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/database/serialize/attribute/SerializableSerializer.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/database/serialize/attribute/SerializableSerializer.java index 77625f0e11..b4527d457f 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/database/serialize/attribute/SerializableSerializer.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/database/serialize/attribute/SerializableSerializer.java @@ -1,3 +1,17 @@ +// Copyright 2017 JanusGraph Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package org.janusgraph.graphdb.database.serialize.attribute; import org.janusgraph.core.attribute.AttributeSerializer; @@ -9,8 +23,11 @@ import org.apache.commons.lang3.SerializationUtils; import java.io.Serializable; -import java.util.HashMap; +/** + * Serializes {@link Serializable} objects. + * @param Serializable type + */ public class SerializableSerializer implements AttributeSerializer, SerializerInjected { private Serializer serializer; diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/olap/computer/FulgoraMemory.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/olap/computer/FulgoraMemory.java index 7cd490a120..68b2be3fdf 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/olap/computer/FulgoraMemory.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/olap/computer/FulgoraMemory.java @@ -51,7 +51,7 @@ public class FulgoraMemory implements Memory.Admin { public Map currentMap; private final AtomicInteger iteration = new AtomicInteger(0); private final AtomicLong runtime = new AtomicLong(0l); - private boolean inExecute = false; + private volatile boolean inExecute = false; public FulgoraMemory(final VertexProgram vertexProgram, final Set mapReducers) { this.currentMap = new ConcurrentHashMap<>(); @@ -158,9 +158,7 @@ protected void attachReferenceElements(Graph graph) { } private static void attachReferenceElements(TraverserSet toProcessTraversers, Graph graph) { - final Iterator> traversers = toProcessTraversers.iterator(); - while (traversers.hasNext()) { - final Traverser.Admin traverser = traversers.next(); + toProcessTraversers.stream().forEach(traverser -> { Object value = traverser.get(); if (value instanceof ReferenceVertex) { Vertex vertex = ((ReferenceVertex) value).attach(Attachable.Method.get(graph)); @@ -169,7 +167,7 @@ private static void attachReferenceElements(TraverserSet toProcessTraver Edge edge = ((ReferenceEdge) value).attach(Attachable.Method.get(graph)); traverser.set(edge); } - } + }); } } diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/olap/computer/VertexMemoryHandler.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/olap/computer/VertexMemoryHandler.java index 065f1e1d01..1be6f53473 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/olap/computer/VertexMemoryHandler.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/olap/computer/VertexMemoryHandler.java @@ -67,7 +67,7 @@ public Iterator> properties(String... keys) { if (keys==null || keys.length==0) { keys = memoryKeys.stream().filter(k -> !k.equals(TraversalVertexProgram.HALTED_TRAVERSERS)).toArray(String[]::new); } - List> result = new ArrayList<>(Math.min(keys.length,memoryKeys.size())); + final List> result = new ArrayList<>(Math.min(keys.length,memoryKeys.size())); for (String key : keys) { if (!supports(key)) continue; V value = vertexMemory.getProperty(vertexId,key); diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/io/graphson/JanusGraphSONModule.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/io/graphson/JanusGraphSONModule.java index c6ecf42de1..4065cc5b0b 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/io/graphson/JanusGraphSONModule.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/io/graphson/JanusGraphSONModule.java @@ -39,7 +39,7 @@ */ public class JanusGraphSONModule extends TinkerPopJacksonModule { - private static final String TYPE_NAMESPACE = "titan"; + private static final String TYPE_NAMESPACE = "janusgraph"; private static final Map TYPE_DEFINITIONS = Collections.unmodifiableMap( new LinkedHashMap() {{ @@ -48,7 +48,7 @@ public class JanusGraphSONModule extends TinkerPopJacksonModule { }}); private JanusGraphSONModule() { - super("titan"); + super("janusgraph"); addSerializer(RelationIdentifier.class, new RelationIdentifierSerializer()); addSerializer(Geoshape.class, new Geoshape.GeoshapeGsonSerializer()); diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphLocalQueryOptimizerStrategy.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphLocalQueryOptimizerStrategy.java index bee10e1784..452a048b6f 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphLocalQueryOptimizerStrategy.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphLocalQueryOptimizerStrategy.java @@ -50,8 +50,8 @@ public void apply(final Traversal.Admin traversal) { Graph graph = traversal.getGraph().get(); //If this is a compute graph then we can't apply local traversal optimisation at this stage. - StandardJanusGraph titanGraph = graph instanceof StandardJanusGraphTx ? ((StandardJanusGraphTx) graph).getGraph() : (StandardJanusGraph) graph; - final boolean useMultiQuery = !TraversalHelper.onGraphComputer(traversal) && titanGraph.getConfiguration().useMultiQuery(); + StandardJanusGraph janusGraph = graph instanceof StandardJanusGraphTx ? ((StandardJanusGraphTx) graph).getGraph() : (StandardJanusGraph) graph; + final boolean useMultiQuery = !TraversalHelper.onGraphComputer(traversal) && janusGraph.getConfiguration().useMultiQuery(); /* ====== VERTEX STEP ====== diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphStep.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphStep.java index 23400a90ef..49d99565c5 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphStep.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphStep.java @@ -100,7 +100,7 @@ public List getHasContainers() { @Override public void addHasContainer(final HasContainer hasContainer) { - this.addAll(Collections.singleton(hasContainer)); + this.addAll(Collections.singleton(hasContainer)); } } diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphStepStrategy.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphStepStrategy.java index 57b1716ad4..3a9d005b0f 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphStepStrategy.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphStepStrategy.java @@ -44,11 +44,11 @@ public void apply(final Traversal.Admin traversal) { TraversalHelper.getStepsOfClass(GraphStep.class, traversal).forEach(originalGraphStep -> { if (originalGraphStep.getIds() == null || originalGraphStep.getIds().length == 0) { //Try to optimize for index calls - final JanusGraphStep titanGraphStep = new JanusGraphStep<>(originalGraphStep); - TraversalHelper.replaceStep(originalGraphStep, (Step) titanGraphStep, traversal); - HasStepFolder.foldInHasContainer(titanGraphStep, traversal); - HasStepFolder.foldInOrder(titanGraphStep, traversal, traversal, titanGraphStep.returnsVertex()); - HasStepFolder.foldInRange(titanGraphStep, traversal); + final JanusGraphStep janusGraphStep = new JanusGraphStep<>(originalGraphStep); + TraversalHelper.replaceStep(originalGraphStep, (Step) janusGraphStep, traversal); + HasStepFolder.foldInHasContainer(janusGraphStep, traversal); + HasStepFolder.foldInOrder(janusGraphStep, traversal, traversal, janusGraphStep.returnsVertex()); + HasStepFolder.foldInRange(janusGraphStep, traversal); } else { //Make sure that any provided "start" elements are instantiated in the current transaction Object[] ids = originalGraphStep.getIds(); diff --git a/janusgraph-test/src/main/java/org/janusgraph/graphdb/JanusGraphTest.java b/janusgraph-test/src/main/java/org/janusgraph/graphdb/JanusGraphTest.java index 0da7064575..3cc7be8d9f 100644 --- a/janusgraph-test/src/main/java/org/janusgraph/graphdb/JanusGraphTest.java +++ b/janusgraph-test/src/main/java/org/janusgraph/graphdb/JanusGraphTest.java @@ -3456,15 +3456,11 @@ public void testTinkerPopOptimizationStrategies() { t = gts.V().has("id", sid).local(__.outE("knows").has("weight", P.between(1, 3)).order().by("weight", decr).limit(10)).profile("~metrics"); assertCount(superV * 10, t); metrics = (TraversalMetrics) t.asAdmin().getSideEffects().get("~metrics"); - //verifyMetrics(metrics.getMetrics(0), true, false); - //verifyMetrics(metrics.getMetrics(1), true, true); //Verify that properties also use multi query t = gts.V().has("id", sid).values("names").profile("~metrics"); assertCount(superV * numV, t); metrics = (TraversalMetrics) t.asAdmin().getSideEffects().get("~metrics"); - //verifyMetrics(metrics.getMetrics(0), true, false); - //verifyMetrics(metrics.getMetrics(1), true, true); clopen(option(USE_MULTIQUERY), true); gts = graph.traversal(); @@ -3473,17 +3469,11 @@ public void testTinkerPopOptimizationStrategies() { t = gts.V().has("id", sid).local(__.outE("knows").has("weight", P.gte(1)).has("weight", P.lt(3)).order().by("weight", decr).limit(10)).profile("~metrics"); assertCount(superV * 10, t); metrics = (TraversalMetrics) t.asAdmin().getSideEffects().get("~metrics"); -// System.out.println(metrics); - //verifyMetrics(metrics.getMetrics(0), false, false); - //verifyMetrics(metrics.getMetrics(1), false, true); //Verify that properties also use multi query [same query as above] t = gts.V().has("id", sid).values("names").profile("~metrics"); assertCount(superV * numV, t); metrics = (TraversalMetrics) t.asAdmin().getSideEffects().get("~metrics"); -// System.out.println(metrics); - //verifyMetrics(metrics.getMetrics(0), false, false); - //verifyMetrics(metrics.getMetrics(1), false, true); }