Как зафиксировать и откатить графовые операции в Datastax DSE 5.0 Graph?

Я пытался сделать

DseCluster dseCluster = null;

    try {
        dseCluster = DseCluster.builder()
                .addContactPoint("192.168.1.43")
                .build();
        DseSession dseSession = dseCluster.connect();
        GraphTraversalSource g = DseGraph.traversal(dseSession, new GraphOptions().setGraphName("graph"));
        GraphStatement graphStatement =  DseGraph.statementFromTraversal(g.addV("test"));
        GraphResultSet grs = dseSession.executeGraph(graphStatement.setGraphName("graph"));
        System.out.println(grs.one().asVertex());

        g.tx().commit();

    } finally {
        if (dseCluster != null) dseCluster.close();
    }

так как это было разрешено в TitanDB до его приобретения Datastax, но я получаю "Graph не поддерживает транзакции"

Exception in thread "main" java.lang.UnsupportedOperationException: Graph does not support transactions
00:27:52.420 [cluster1-nio-worker-0] DEBUG io.netty.buffer.PoolThreadCache - Freed 26 thread-local buffer(s) from thread: cluster1-nio-worker-0
    at org.apache.tinkerpop.gremlin.structure.Graph$Exceptions.transactionsNotSupported(Graph.java:1127)
    at org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph.tx(EmptyGraph.java:75)
    at org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource.tx(GraphTraversalSource.java:320)
    at testbed.TestBed.main(TestBed.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Я не смог найти в документации ничего, кроме упоминания Datastax DSE Graph как транзакционного.

Спасибо!

1 ответ

Решение

Михаил, в своем другом посте, в котором Энди ответил, он дал некоторое представление о том, как DSE "делает" транзакции в данный момент. Мы не предоставляем API транзакций Tinkerpop напрямую конечным пользователям. Транзакции в настоящее время неявны, каждый вызов выполнения вызывает механизмы транзакций Tinkerpop в графическом сервере DSE. Вот быстрый и грязный пример GitHub, показывающий, как транзакции работают с графиком DSE - https://github.com/jlacefie/GraphTransactionExample

Другие вопросы по тегам