JanusGraph执行drop().iterate()后顶点未持久化删除的问题求助
JanusGraph执行drop().iterate()后顶点未持久化删除的问题求助
我碰到了一个非常费解的JanusGraph问题:明明执行了顶点删除操作,日志也显示顶点数变成了0,但重启程序后那些被删除的顶点居然又全部回来了!
具体情况是这样的:我运行代码删除所有顶点,执行完g.V().drop().iterate()后立即查询顶点计数,结果显示是0,看起来已经删除干净了。可当我再次运行这段删除代码时,居然又出现了70005个顶点等着删除,就好像之前的删除操作根本没真正生效一样。
我试过各种操作组合,比如结合janusGraph.openManagement()加commit()、手动调用g.tx().commit()或者janusGraph.tx().commit(),但都没能解决这个问题。
以下是我的测试代码:
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource; import org.janusgraph.core.JanusGraph; import org.janusgraph.core.JanusGraphFactory; import org.janusgraph.core.JanusGraphVertex; public class Test5 { private static final Logger logger = LogManager.getLogger(Main.class); public static void main(String[] args) { JanusGraph janusGraph = JanusGraphFactory.build() .set("storage.backend", "cql") .set("storage.hostname", "localhost:9042") .open(); GraphTraversalSource g = janusGraph.traversal(); logger.info("g.V().count().next():\t" + g.V().count().next()); g.V().drop().iterate(); logger.info("g.V().count().next():\t" + g.V().count().next()); JanusGraphVertex janusGraphVertex = janusGraph.addVertex(); janusGraph.close(); } }
对应的程序运行日志如下:
2023-05-10 08:56:00,444 [INFO] [c.d.o.d.i.c.ContactPoints.main] :: Contact point localhost:9042 resolves to multiple addresses, will use them all ([localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1]) 2023-05-10 08:56:00,539 [INFO] [c.d.o.d.i.c.DefaultMavenCoordinates.main] :: DataStax Java driver for Apache Cassandra(R) (com.datastax.oss:java-driver-core) version 4.15.0 2023-05-10 08:56:01,067 [INFO] [c.d.o.d.i.c.t.Clock.JanusGraph Session-admin-0] :: Using native clock for microsecond precision 2023-05-10 08:56:01,344 [WARN] [c.d.o.d.i.c.l.h.OptionalLocalDcHelper.JanusGraph Session-admin-0] :: [JanusGraph Session|default] You specified datacenter1 as the local DC, but some contact points are from a different DC: Node(endPoint=localhost/127.0.0.1:9042, hostId=null, hashCode=22ef1fc3)=null; please provide the correct local DC, or check your contact points 2023-05-10 08:56:01,595 [INFO] [o.j.g.i.UniqueInstanceIdRetriever.main] :: Generated unique-instance-id=c0a8563c2808-rmt-lap-win201 2023-05-10 08:56:01,617 [INFO] [c.d.o.d.i.c.ContactPoints.main] :: Contact point localhost:9042 resolves to multiple addresses, will use them all ([localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1]) 2023-05-10 08:56:01,656 [INFO] [c.d.o.d.i.c.t.Clock.JanusGraph Session-admin-0] :: Using native clock for microsecond precision 2023-05-10 08:56:01,701 [WARN] [c.d.o.d.i.c.l.h.OptionalLocalDcHelper.JanusGraph Session-admin-0] :: [JanusGraph Session|default] You specified datacenter1 as the local DC, but some contact points are from a different DC: Node(endPoint=localhost/[0:0:0:0:0:0:0:1]:9042, hostId=null, hashCode=411a6f76)=null; please provide the correct local DC, or check your contact points 2023-05-10 08:56:01,716 [INFO] [o.j.d.c.ExecutorServiceBuilder.main] :: Initiated fixed thread pool of size 40 2023-05-10 08:56:01,836 [INFO] [o.j.g.d.StandardJanusGraph.main] :: Gremlin script evaluation is disabled 2023-05-10 08:56:01,864 [INFO] [o.j.d.l.k.KCVSLog.main] :: Loaded unidentified ReadMarker start time 2023-05-10T13:56:01.864177Z into org.janusgraph.diskstorage.log.kcvs.KCVSLog$MessagePuller@f1d0004 2023-05-10 08:56:01,923 [WARN] [o.j.g.t.StandardJanusGraphTx.main] :: Query requires iterating over all vertices [[]]. For better performance, use indexes 2023-05-10 08:56:03,469 [INFO] [Main.main] :: g.V().count().next(): 70005 2023-05-10 08:56:03,473 [WARN] [o.j.g.t.StandardJanusGraphTx.main] :: Query requires iterating over all vertices [[]]. For better performance, use indexes 2023-05-10 08:59:05,959 [WARN] [o.j.g.t.StandardJanusGraphTx.main] :: Query requires iterating over all vertices [[]]. For better performance, use indexes 2023-05-10 08:59:07,381 [INFO] [Main.main] :: g.V().count().next(): 0 2023-05-10 09:00:57,848 [INFO] [c.d.o.d.i.c.ContactPoints.main] :: Contact point localhost:9042 resolves to multiple addresses, will use them all ([localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1]) 2023-05-10 09:00:57,955 [INFO] [c.d.o.d.i.c.DefaultMavenCoordinates.main] :: DataStax Java driver for Apache Cassandra(R) (com.datastax.oss:java-driver-core) version 4.15.0 2023-05-10 09:00:58,489 [INFO] [c.d.o.d.i.c.t.Clock.JanusGraph Session-admin-0] :: Using native clock for microsecond precision 2023-05-10 09:00:58,758 [WARN] [c.d.o.d.i.c.l.h.OptionalLocalDcHelper.JanusGraph Session-admin-0] :: [JanusGraph Session|default] You specified datacenter1 as the local DC, but some contact points are from a different DC: Node(endPoint=localhost/[0:0:0:0:0:0:0:1]:9042, hostId=null, hashCode=70036733)=null; please provide the correct local DC, or check your contact points 2023-05-10 09:00:58,995 [INFO] [o.j.g.i.UniqueInstanceIdRetriever.main] :: Generated unique-instance-id=c0a8563c12580-rmt-lap-win201 2023-05-10 09:00:59,018 [INFO] [c.d.o.d.i.c.ContactPoints.main] :: Contact point localhost:9042 resolves to multiple addresses, will use them all ([localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1]) 2023-05-10 09:00:59,112 [INFO] [c.d.o.d.i.c.t.Clock.JanusGraph Session-admin-0] :: Using native clock for microsecond precision 2023-05-10 09:00:59,183 [WARN] [c.d.o.d.i.c.l.h.OptionalLocalDcHelper.JanusGraph Session-admin-0] :: [JanusGraph Session|default] You specified datacenter1 as the local DC, but some contact points are from a different DC: Node(endPoint=localhost/[0:0:0:0:0:0:0:1]:9042, hostId=null, hashCode=411a6f76)=null; please provide the correct local DC, or check your contact points 2023-05-10 09:00:59,207 [INFO] [o.j.d.c.ExecutorServiceBuilder.main] :: Initiated fixed thread pool of size 40 2023-05-10 09:00:59,334 [INFO] [o.j.g.d.StandardJanusGraph.main] :: Gremlin script evaluation is disabled 2023-05-10 09:00:59,358 [INFO] [o.j.d.l.k.KCVSLog.main] :: Loaded unidentified ReadMarker start time 2023-05-10T14:00:59.358381Z into org.janusgraph.diskstorage.log.kcvs.KCVSLog$MessagePuller@f1d0004 2023-05-10 09:00:59,413 [WARN] [o.j.g.t.StandardJanusGraphTx.main] :: Query requires iterating over all vertices [[]]. For better performance, use indexes 2023-05-10 09:01:00,946 [INFO] [Main.main] :: g.V().count().next(): 70005 2023-05-10 09:01:00,951 [WARN] [o.j.g.t.StandardJanusGraphTx.main] :: Query requires iterating over all vertices [[]]. For better performance, use indexes
之前看到有人说JanusGraph Server(带JanusGraph扩展的Gremlin Server)会自动处理事务,但我是直接用Java API连接的JanusGraph,会不会是因为事务没提交,导致删除操作只在当前会话生效,没有持久化到存储后端?
备注:内容来源于stack exchange,提问作者Zach
相关产品推荐
相关产品推荐

