You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hugegraph.apache.org by ji...@apache.org on 2022/11/09 10:25:19 UTC

[incubator-hugegraph] 16/33: rebase master(0.11.1)

This is an automated email from the ASF dual-hosted git repository.

jin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph.git

commit 0d6b871abad5cc496b909c92188e836bfdc19099
Author: Zhangmei Li <li...@baidu.com>
AuthorDate: Fri Jun 5 17:38:26 2020 +0800

    rebase master(0.11.1)
    
    Change-Id: I565602945a26c2a575baaa3f17d084b65399a009
---
 .../java/com/baidu/hugegraph/job/AlgorithmJob.java |  2 +-
 .../hugegraph/job/algorithm/AbstractAlgorithm.java |  8 ++---
 .../baidu/hugegraph/job/algorithm/Algorithm.java   |  4 +--
 .../job/algorithm/CountEdgeAlgorithm.java          |  6 ++--
 .../job/algorithm/CountVertexAlgorithm.java        |  6 ++--
 .../job/algorithm/SubgraphStatAlgorithm.java       | 34 ++++++++++++----------
 .../job/algorithm/cent/AbstractCentAlgorithm.java  |  4 +--
 .../cent/BetweenessCentralityAlgorithm.java        |  6 ++--
 .../cent/ClosenessCentralityAlgorithm.java         |  6 ++--
 .../algorithm/cent/DegreeCentralityAlgorithm.java  |  6 ++--
 .../cent/EigenvectorCentralityAlgorithm.java       |  6 ++--
 .../algorithm/comm/ClusterCoeffcientAlgorithm.java |  6 ++--
 .../job/algorithm/comm/KCoreAlgorithm.java         |  6 ++--
 .../job/algorithm/comm/LouvainAlgorithm.java       |  4 +--
 .../job/algorithm/comm/LouvainTraverser.java       |  4 +--
 .../hugegraph/job/algorithm/comm/LpaAlgorithm.java |  6 ++--
 .../job/algorithm/comm/TriangleCountAlgorithm.java | 10 +++----
 .../job/algorithm/comm/WeakConnectedComponent.java |  8 ++---
 .../job/algorithm/path/RingsDetectAlgorithm.java   |  6 ++--
 .../job/algorithm/rank/PageRankAlgorithm.java      |  6 ++--
 .../similarity/FusiformSimilarityAlgorithm.java    |  6 ++--
 21 files changed, 76 insertions(+), 74 deletions(-)

diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/AlgorithmJob.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/AlgorithmJob.java
index 7e752ac42..f25c1b250 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/AlgorithmJob.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/AlgorithmJob.java
@@ -26,7 +26,7 @@ import com.baidu.hugegraph.job.algorithm.AlgorithmPool;
 import com.baidu.hugegraph.util.E;
 import com.baidu.hugegraph.util.JsonUtil;
 
-public class AlgorithmJob extends Job<Object> {
+public class AlgorithmJob extends UserJob<Object> {
 
     public static final String TASK_TYPE = "algorithm";
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/AbstractAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/AbstractAlgorithm.java
index e30ce1e16..cc245f6f9 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/AbstractAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/AbstractAlgorithm.java
@@ -44,7 +44,7 @@ import com.baidu.hugegraph.backend.query.ConditionQuery;
 import com.baidu.hugegraph.backend.query.Query;
 import com.baidu.hugegraph.iterator.FilterIterator;
 import com.baidu.hugegraph.iterator.FlatMapperIterator;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.job.algorithm.Consumers.StopExecution;
 import com.baidu.hugegraph.testutil.Whitebox;
 import com.baidu.hugegraph.traversal.algorithm.HugeTraverser;
@@ -323,17 +323,17 @@ public abstract class AbstractAlgorithm implements Algorithm {
     public static class AlgoTraverser extends HugeTraverser
                                       implements AutoCloseable {
 
-        private final Job<Object> job;
+        private final UserJob<Object> job;
         protected final ExecutorService executor;
         protected long progress;
 
-        public AlgoTraverser(Job<Object> job) {
+        public AlgoTraverser(UserJob<Object> job) {
             super(job.graph());
             this.job = job;
             this.executor = null;
         }
 
-        protected AlgoTraverser(Job<Object> job, String name, int workers) {
+        protected AlgoTraverser(UserJob<Object> job, String name, int workers) {
             super(job.graph());
             this.job = job;
             String prefix = name + "-" + job.task().id();
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/Algorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/Algorithm.java
index 6ad200157..b1cb53144 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/Algorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/Algorithm.java
@@ -21,7 +21,7 @@ package com.baidu.hugegraph.job.algorithm;
 
 import java.util.Map;
 
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 
 public interface Algorithm {
 
@@ -29,7 +29,7 @@ public interface Algorithm {
 
     public String category();
 
-    public Object call(Job<Object> job, Map<String, Object> parameters);
+    public Object call(UserJob<Object> job, Map<String, Object> parameters);
 
     public void checkParameters(Map<String, Object> parameters);
 }
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/CountEdgeAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/CountEdgeAlgorithm.java
index 670f54471..9ed617b08 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/CountEdgeAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/CountEdgeAlgorithm.java
@@ -26,7 +26,7 @@ import java.util.Map;
 import org.apache.commons.lang3.mutable.MutableLong;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.util.JsonUtil;
 
 public class CountEdgeAlgorithm extends AbstractAlgorithm {
@@ -42,7 +42,7 @@ public class CountEdgeAlgorithm extends AbstractAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         try (Traverser traverser = new Traverser(job)) {
             return traverser.count();
         }
@@ -50,7 +50,7 @@ public class CountEdgeAlgorithm extends AbstractAlgorithm {
 
     private static class Traverser extends AlgoTraverser {
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/CountVertexAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/CountVertexAlgorithm.java
index 68a59a363..721979c35 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/CountVertexAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/CountVertexAlgorithm.java
@@ -26,7 +26,7 @@ import java.util.Map;
 import org.apache.commons.lang3.mutable.MutableLong;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.util.JsonUtil;
 
 public class CountVertexAlgorithm extends AbstractAlgorithm {
@@ -42,7 +42,7 @@ public class CountVertexAlgorithm extends AbstractAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         try (Traverser traverser = new Traverser(job)) {
             return traverser.count();
         }
@@ -50,7 +50,7 @@ public class CountVertexAlgorithm extends AbstractAlgorithm {
 
     private static class Traverser extends AlgoTraverser {
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/SubgraphStatAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/SubgraphStatAlgorithm.java
index 4ce97d362..199d1b020 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/SubgraphStatAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/SubgraphStatAlgorithm.java
@@ -27,10 +27,11 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSo
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import com.baidu.hugegraph.HugeGraph;
+import com.baidu.hugegraph.StandardHugeGraph;
 import com.baidu.hugegraph.backend.id.Id;
 import com.baidu.hugegraph.config.CoreOptions;
 import com.baidu.hugegraph.config.HugeConfig;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.job.algorithm.cent.BetweenessCentralityAlgorithm;
 import com.baidu.hugegraph.job.algorithm.cent.ClosenessCentralityAlgorithm;
 import com.baidu.hugegraph.job.algorithm.cent.DegreeCentralityAlgorithm;
@@ -39,6 +40,7 @@ import com.baidu.hugegraph.job.algorithm.comm.ClusterCoeffcientAlgorithm;
 import com.baidu.hugegraph.job.algorithm.path.RingsDetectAlgorithm;
 import com.baidu.hugegraph.job.algorithm.rank.PageRankAlgorithm;
 import com.baidu.hugegraph.task.HugeTask;
+import com.baidu.hugegraph.testutil.Whitebox;
 import com.baidu.hugegraph.traversal.algorithm.HugeTraverser;
 import com.baidu.hugegraph.traversal.optimize.HugeScriptTraversal;
 import com.baidu.hugegraph.util.E;
@@ -66,27 +68,27 @@ public class SubgraphStatAlgorithm extends AbstractAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         HugeGraph graph = this.createTempGraph(job);
         try (Traverser traverser = new Traverser(job)) {
-            this.initGraph(job.graph(), graph, subgraph(parameters),
-                           copySchema(parameters));
-            Job<Object> tmpJob = new TempJob<>(graph, job, job.task());
+            this.initGraph(job.graph(), graph,
+                           subgraph(parameters), copySchema(parameters));
+            UserJob<Object> tmpJob = new TempJob<>(graph, job, job.task());
             return traverser.subgraphStat(tmpJob);
         } finally {
             graph.truncateBackend();
-            // FIXME: task thread can't call close() here (will hang)
-            graph.closeTx();
+            // FIXME: task thread can't call close() (will hang), use closeTx()
+            Whitebox.invoke(graph.getClass(), "closeTx", graph);
         }
     }
 
-    private HugeGraph createTempGraph(Job<Object> job) {
+    private HugeGraph createTempGraph(UserJob<Object> job) {
         Id id = job.task().id();
         PropertiesConfiguration config = new PropertiesConfiguration();
         config.setProperty(CoreOptions.BACKEND.name(), "memory");
         config.setProperty(CoreOptions.STORE.name(), "tmp_" + id);
         config.setDelimiterParsingDisabled(true);
-        return new HugeGraph(new HugeConfig(config));
+        return new StandardHugeGraph(new HugeConfig(config));
     }
 
     @SuppressWarnings("resource")
@@ -127,11 +129,11 @@ public class SubgraphStatAlgorithm extends AbstractAlgorithm {
                                                     "top", -1L /* sorted */,
                                                     "workers", 0);
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
-        public Object subgraphStat(Job<Object> job) {
+        public Object subgraphStat(UserJob<Object> job) {
             Map<String, Object> results = InsertionOrderUtil.newMap();
 
             GraphTraversalSource g = job.graph().traversal();
@@ -168,7 +170,7 @@ public class SubgraphStatAlgorithm extends AbstractAlgorithm {
             return results;
         }
 
-        private Map<Object, Double> pageRanks(Job<Object> job) {
+        private Map<Object, Double> pageRanks(UserJob<Object> job) {
             PageRankAlgorithm algo = new PageRankAlgorithm();
             algo.call(job, ImmutableMap.of("alpha", 0.15));
 
@@ -184,12 +186,12 @@ public class SubgraphStatAlgorithm extends AbstractAlgorithm {
         }
     }
 
-    private static class TempJob<V> extends Job<V> {
+    private static class TempJob<V> extends UserJob<V> {
 
-        private final Job<V> parent;
+        private final UserJob<V> parent;
 
-        public TempJob(HugeGraph graph, Job<V> job, HugeTask<V> task) {
-            this.scheduler(graph.taskScheduler());
+        public TempJob(HugeGraph graph, UserJob<V> job, HugeTask<V> task) {
+            this.graph(graph);
             this.task(task);
             this.parent = job;
         }
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/AbstractCentAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/AbstractCentAlgorithm.java
index 7b11c134c..19da8e968 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/AbstractCentAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/AbstractCentAlgorithm.java
@@ -34,7 +34,7 @@ import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import com.baidu.hugegraph.backend.id.Id;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.job.algorithm.AbstractAlgorithm;
 import com.baidu.hugegraph.structure.HugeElement;
 import com.baidu.hugegraph.type.define.Directions;
@@ -61,7 +61,7 @@ public abstract class AbstractCentAlgorithm extends AbstractAlgorithm {
 
     protected static class Traverser extends AlgoTraverser {
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/BetweenessCentralityAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/BetweenessCentralityAlgorithm.java
index 40b38f655..465c6f96c 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/BetweenessCentralityAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/BetweenessCentralityAlgorithm.java
@@ -27,7 +27,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.type.define.Directions;
 
 public class BetweenessCentralityAlgorithm extends AbstractCentAlgorithm {
@@ -38,7 +38,7 @@ public class BetweenessCentralityAlgorithm extends AbstractCentAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         try (Traverser traverser = new Traverser(job)) {
             return traverser.betweenessCentrality(direction(parameters),
                                                   edgeLabel(parameters),
@@ -54,7 +54,7 @@ public class BetweenessCentralityAlgorithm extends AbstractCentAlgorithm {
 
     private static class Traverser extends AbstractCentAlgorithm.Traverser {
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithm.java
index 9a25b6394..3391a191a 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/ClosenessCentralityAlgorithm.java
@@ -29,7 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.type.define.Directions;
 
 public class ClosenessCentralityAlgorithm extends AbstractCentAlgorithm {
@@ -48,7 +48,7 @@ public class ClosenessCentralityAlgorithm extends AbstractCentAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         try (Traverser traverser = new Traverser(job)) {
             return traverser.closenessCentrality(direction(parameters),
                                                  edgeLabel(parameters),
@@ -64,7 +64,7 @@ public class ClosenessCentralityAlgorithm extends AbstractCentAlgorithm {
 
     private static class Traverser extends AbstractCentAlgorithm.Traverser {
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/DegreeCentralityAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/DegreeCentralityAlgorithm.java
index 01b3e5c4b..b2030e845 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/DegreeCentralityAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/DegreeCentralityAlgorithm.java
@@ -27,7 +27,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import com.baidu.hugegraph.backend.id.Id;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.structure.HugeEdge;
 import com.baidu.hugegraph.type.define.Directions;
 
@@ -46,7 +46,7 @@ public class DegreeCentralityAlgorithm extends AbstractCentAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         try (Traverser traverser = new Traverser(job)) {
             return traverser.degreeCentrality(direction(parameters),
                                               edgeLabel(parameters),
@@ -56,7 +56,7 @@ public class DegreeCentralityAlgorithm extends AbstractCentAlgorithm {
 
     private static class Traverser extends AlgoTraverser {
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/EigenvectorCentralityAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/EigenvectorCentralityAlgorithm.java
index 0f695a1fb..15748ec72 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/EigenvectorCentralityAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/cent/EigenvectorCentralityAlgorithm.java
@@ -26,7 +26,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.type.define.Directions;
 
 public class EigenvectorCentralityAlgorithm extends AbstractCentAlgorithm {
@@ -40,7 +40,7 @@ public class EigenvectorCentralityAlgorithm extends AbstractCentAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         try (Traverser traverser = new Traverser(job)) {
             return traverser.eigenvectorCentrality(direction(parameters),
                                                    edgeLabel(parameters),
@@ -56,7 +56,7 @@ public class EigenvectorCentralityAlgorithm extends AbstractCentAlgorithm {
 
     private static class Traverser extends AbstractCentAlgorithm.Traverser {
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/ClusterCoeffcientAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/ClusterCoeffcientAlgorithm.java
index 3f3a26c3c..2a0cf1a42 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/ClusterCoeffcientAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/ClusterCoeffcientAlgorithm.java
@@ -21,7 +21,7 @@ package com.baidu.hugegraph.job.algorithm.comm;
 
 import java.util.Map;
 
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.type.define.Directions;
 import com.baidu.hugegraph.util.E;
 import com.baidu.hugegraph.util.InsertionOrderUtil;
@@ -43,7 +43,7 @@ public class ClusterCoeffcientAlgorithm extends AbstractCommAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         int workers = workersWhenBoth(parameters);
         try (Traverser traverser = new Traverser(job, workers)) {
             return traverser.clusterCoeffcient(direction(parameters),
@@ -63,7 +63,7 @@ public class ClusterCoeffcientAlgorithm extends AbstractCommAlgorithm {
 
     private static class Traverser extends TriangleCountAlgorithm.Traverser {
 
-        public Traverser(Job<Object> job, int workers) {
+        public Traverser(UserJob<Object> job, int workers) {
             super(job, ALGO_NAME, workers);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
index 52ddeeb71..508052354 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
@@ -33,7 +33,7 @@ import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import com.baidu.hugegraph.HugeGraph;
 import com.baidu.hugegraph.backend.id.Id;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.schema.EdgeLabel;
 import com.baidu.hugegraph.traversal.algorithm.FusiformSimilarityTraverser;
 import com.baidu.hugegraph.type.define.Directions;
@@ -70,7 +70,7 @@ public class KCoreAlgorithm extends AbstractCommAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         int workers = workers(parameters);
         try (Traverser traverser = new Traverser(job, workers)) {
             return traverser.kcore(sourceLabel(parameters),
@@ -102,7 +102,7 @@ public class KCoreAlgorithm extends AbstractCommAlgorithm {
 
     private static class Traverser extends AlgoTraverser {
 
-        public Traverser(Job<Object> job, int workers) {
+        public Traverser(UserJob<Object> job, int workers) {
             super(job, ALGO_NAME, workers);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainAlgorithm.java
index 8eee9f43e..f05f85e56 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainAlgorithm.java
@@ -21,7 +21,7 @@ package com.baidu.hugegraph.job.algorithm.comm;
 
 import java.util.Map;
 
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.traversal.algorithm.HugeTraverser;
 
 public class LouvainAlgorithm extends AbstractCommAlgorithm {
@@ -48,7 +48,7 @@ public class LouvainAlgorithm extends AbstractCommAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         String label = sourceLabel(parameters);
         String clabel = sourceCLabel(parameters);
         long degree = degree(parameters);
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java
index 6135d1d40..3a8a83f53 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java
@@ -48,7 +48,7 @@ import com.baidu.hugegraph.backend.id.Id;
 import com.baidu.hugegraph.backend.id.IdGenerator;
 import com.baidu.hugegraph.exception.ExistedException;
 import com.baidu.hugegraph.iterator.ListIterator;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.job.algorithm.AbstractAlgorithm;
 import com.baidu.hugegraph.job.algorithm.AbstractAlgorithm.AlgoTraverser;
 import com.baidu.hugegraph.job.algorithm.Consumers;
@@ -83,7 +83,7 @@ public class LouvainTraverser extends AlgoTraverser {
     private long m;
     private String passLabel;
 
-    public LouvainTraverser(Job<Object> job, int workers, long degree,
+    public LouvainTraverser(UserJob<Object> job, int workers, long degree,
                             String sourceLabel, String sourceCLabel) {
         super(job, LouvainAlgorithm.ALGO_NAME, workers);
         this.g = this.graph().traversal();
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LpaAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LpaAlgorithm.java
index 0f3506a15..8b54241fe 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LpaAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LpaAlgorithm.java
@@ -32,7 +32,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 
 import com.baidu.hugegraph.backend.id.Id;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.schema.SchemaManager;
 import com.baidu.hugegraph.schema.VertexLabel;
 import com.baidu.hugegraph.type.define.Directions;
@@ -61,7 +61,7 @@ public class LpaAlgorithm extends AbstractCommAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         int workers = workers(parameters);
         String showComm = showCommunity(parameters);
 
@@ -88,7 +88,7 @@ public class LpaAlgorithm extends AbstractCommAlgorithm {
 
         private final Random R = new Random();
 
-        public Traverser(Job<Object> job, int workers) {
+        public Traverser(UserJob<Object> job, int workers) {
             super(job, ALGO_NAME, workers);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/TriangleCountAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/TriangleCountAlgorithm.java
index d8a17653c..4cecc623b 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/TriangleCountAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/TriangleCountAlgorithm.java
@@ -30,7 +30,7 @@ import org.apache.tinkerpop.gremlin.structure.Edge;
 
 import com.baidu.hugegraph.backend.id.Id;
 import com.baidu.hugegraph.backend.id.IdGenerator;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.structure.HugeEdge;
 import com.baidu.hugegraph.type.define.Directions;
 import com.baidu.hugegraph.util.E;
@@ -54,7 +54,7 @@ public class TriangleCountAlgorithm extends AbstractCommAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         int workers = workersWhenBoth(parameters);
         try (Traverser traverser = new Traverser(job, workers)) {
             return traverser.triangleCount(direction4Out(parameters),
@@ -77,11 +77,11 @@ public class TriangleCountAlgorithm extends AbstractCommAlgorithm {
         protected static final String KEY_TRIANGLES = "triangles";
         protected static final String KEY_TRIADS = "triads";
 
-        public Traverser(Job<Object> job, int workers) {
+        public Traverser(UserJob<Object> job, int workers) {
             super(job, ALGO_NAME, workers);
         }
 
-        protected Traverser(Job<Object> job, String name, int workers) {
+        protected Traverser(UserJob<Object> job, String name, int workers) {
             super(job, name, workers);
         }
 
@@ -205,7 +205,7 @@ public class TriangleCountAlgorithm extends AbstractCommAlgorithm {
         protected long intersect(long degree, Set<Id> adjVertices) {
             long count = 0L;
             Directions dir = Directions.OUT;
-            Id empty = IdGenerator.of(0);
+            Id empty = IdGenerator.ZERO;
             Iterator<Id> vertices;
             for (Id v : adjVertices) {
                 vertices = this.adjacentVertices(v, dir, null, degree);
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/WeakConnectedComponent.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/WeakConnectedComponent.java
index 99dee85cd..435a6e777 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/WeakConnectedComponent.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/WeakConnectedComponent.java
@@ -30,7 +30,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.slf4j.Logger;
 
 import com.baidu.hugegraph.backend.id.Id;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.schema.SchemaManager;
 import com.baidu.hugegraph.schema.VertexLabel;
 import com.baidu.hugegraph.structure.HugeEdge;
@@ -56,7 +56,7 @@ public class WeakConnectedComponent extends AbstractCommAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         try (Traverser traverser = new Traverser(job)) {
             return traverser.connectedComponent(times(parameters),
                                                 directionOutIn(parameters),
@@ -71,7 +71,7 @@ public class WeakConnectedComponent extends AbstractCommAlgorithm {
 
         private final Map<Id, Id> vertexComponentMap = new HashMap<>();
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
         }
 
@@ -81,7 +81,7 @@ public class WeakConnectedComponent extends AbstractCommAlgorithm {
             this.initSchema();
             this.initVertexComponentMap();
             int times;
-            
+
             for (times = 0; times < maxTimes; times++) {
                 long changeCount = 0;
                 Id currentSourceVertexId = null;
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
index bbb028efc..d228b70a2 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
@@ -23,7 +23,7 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 
 import com.baidu.hugegraph.backend.id.Id;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.job.algorithm.AbstractAlgorithm;
 import com.baidu.hugegraph.job.algorithm.Consumers.StopExecution;
 import com.baidu.hugegraph.traversal.algorithm.SubGraphTraverser;
@@ -61,7 +61,7 @@ public class RingsDetectAlgorithm extends AbstractAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         int workers = workers(parameters);
         try (Traverser traverser = new Traverser(job, workers)) {
             return traverser.rings(sourceLabel(parameters),
@@ -85,7 +85,7 @@ public class RingsDetectAlgorithm extends AbstractAlgorithm {
 
     private static class Traverser extends AlgoTraverser {
 
-        public Traverser(Job<Object> job, int workers) {
+        public Traverser(UserJob<Object> job, int workers) {
             super(job, ALGO_NAME, workers);
         }
 
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/rank/PageRankAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/rank/PageRankAlgorithm.java
index 9f51bf7b6..fa552e399 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/rank/PageRankAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/rank/PageRankAlgorithm.java
@@ -30,7 +30,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.slf4j.Logger;
 
 import com.baidu.hugegraph.backend.id.Id;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.job.algorithm.comm.AbstractCommAlgorithm;
 import com.baidu.hugegraph.schema.SchemaManager;
 import com.baidu.hugegraph.schema.VertexLabel;
@@ -64,7 +64,7 @@ public class PageRankAlgorithm extends AbstractCommAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         try (Traverser traverser = new Traverser(job)) {
             return traverser.pageRank(alpha(parameters),
                                       times(parameters),
@@ -85,7 +85,7 @@ public class PageRankAlgorithm extends AbstractCommAlgorithm {
          */
         private final Map<Id, DoublePair> vertexRankMap;
 
-        public Traverser(Job<Object> job) {
+        public Traverser(UserJob<Object> job) {
             super(job);
             this.vertexRankMap = new HashMap<>();
         }
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/similarity/FusiformSimilarityAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/similarity/FusiformSimilarityAlgorithm.java
index fbaca4960..daf5b09aa 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/similarity/FusiformSimilarityAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/similarity/FusiformSimilarityAlgorithm.java
@@ -25,7 +25,7 @@ import java.util.concurrent.atomic.AtomicLong;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import com.baidu.hugegraph.HugeGraph;
-import com.baidu.hugegraph.job.Job;
+import com.baidu.hugegraph.job.UserJob;
 import com.baidu.hugegraph.job.algorithm.AbstractAlgorithm;
 import com.baidu.hugegraph.job.algorithm.Consumers.StopExecution;
 import com.baidu.hugegraph.schema.EdgeLabel;
@@ -78,7 +78,7 @@ public class FusiformSimilarityAlgorithm extends AbstractAlgorithm {
     }
 
     @Override
-    public Object call(Job<Object> job, Map<String, Object> parameters) {
+    public Object call(UserJob<Object> job, Map<String, Object> parameters) {
         int workers = workers(parameters);
         try (Traverser traverser = new Traverser(job, workers)) {
             return traverser.fusiformSimilars(sourceLabel(parameters),
@@ -150,7 +150,7 @@ public class FusiformSimilarityAlgorithm extends AbstractAlgorithm {
 
     private static class Traverser extends AlgoTraverser {
 
-        public Traverser(Job<Object> job, int workers) {
+        public Traverser(UserJob<Object> job, int workers) {
             super(job, ALGO_NAME, workers);
         }