Skip to content

storage.transactions=false with berkeleyje backend prevents any write operation #4781

@nathansolidatus

Description

@nathansolidatus

It is recommended in the doc to disable transactions for large graph iteration when using the berkeley backend:
However when I have this config on, I can read with g.V().count() but not add vertex with label g.addV("fake label"), strangely enough g.addV() works.

I have tested this on version 1.1.0 and 1.2.0
Config:

  • JANUS_PROPS_TEMPLATE=berkeleyje
  • janusgraph.storage.transactions=false

Did I miss some other config or does disable transaction mean read-only mode ? at the moment it feels like a bug to me.

Stack Trace

org.janusgraph.diskstorage.PermanentBackendException: BerkeleyJE does not support non-transactional for multi threaded tx
        at org.janusgraph.diskstorage.berkeleyje.BerkeleyJEStoreManager.beginTransaction(BerkeleyJEStoreManager.java:210)
        at org.janusgraph.diskstorage.berkeleyje.BerkeleyJEStoreManager.beginTransaction(BerkeleyJEStoreManager.java:57)
        at org.janusgraph.diskstorage.keycolumnvalue.keyvalue.OrderedKeyValueStoreManagerAdapter.beginTransaction(OrderedKeyValueStoreManagerAdapter.java:75)
        at org.janusgraph.diskstorage.Backend.beginTransaction(Backend.java:606)
        at org.janusgraph.graphdb.database.StandardJanusGraph.openBackendTransaction(StandardJanusGraph.java:483)
        at org.janusgraph.graphdb.database.StandardJanusGraph.newTransaction(StandardJanusGraph.java:473)
        at org.janusgraph.graphdb.database.StandardJanusGraph$1.retrieveSchemaByName(StandardJanusGraph.java:500)
        at org.janusgraph.graphdb.database.cache.StandardSchemaCache.getSchemaId(StandardSchemaCache.java:111)
        at org.janusgraph.graphdb.transaction.StandardJanusGraphTx.getSchemaVertex(StandardJanusGraphTx.java:1099)
        at org.janusgraph.graphdb.transaction.StandardJanusGraphTx.getVertexLabel(StandardJanusGraphTx.java:1234)
        at org.janusgraph.graphdb.transaction.StandardJanusGraphTx.getOrCreateVertexLabel(StandardJanusGraphTx.java:1239)
        at org.janusgraph.graphdb.tinkerpop.JanusGraphBlueprintsTransaction.addVertex(JanusGraphBlueprintsTransaction.java:135)
        at org.janusgraph.graphdb.tinkerpop.JanusGraphBlueprintsGraph.addVertex(JanusGraphBlueprintsGraph.java:143)
        at org.janusgraph.graphdb.tinkerpop.JanusGraphBlueprintsGraph.addVertex(JanusGraphBlueprintsGraph.java:59)
        at org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStartStep.processNextStart(AddVertexStartStep.java:109)
        at org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:155)
        at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.hasNext(DefaultTraversal.java:192)
        at org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor.handleIterator(AbstractOpProcessor.java:98)
        at org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor.lambda$evalOpInternal$6(AbstractEvalOpProcessor.java:267)
        at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:337)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)```

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions