{"action":"created","issue":{"url":"https://api.github.com/repos/thinkaurelius/titan/issues/1106","labels_url":"https://api.github.com/repos/thinkaurelius/titan/issues/1106/labels{/name}","comments_url":"https://api.github.com/repos/thinkaurelius/titan/issues/1106/comments","events_url":"https://api.github.com/repos/thinkaurelius/titan/issues/1106/events","html_url":"https://github.com/thinkaurelius/titan/issues/1106","id":88954881,"number":1106,"title":"0.9.M2 random errors in unit tests (diskstorage.PermanentLockingException)","user":{"login":"PommeVerte","id":1415875,"avatar_url":"https://avatars.githubusercontent.com/u/1415875?v=3","gravatar_id":"","url":"https://api.github.com/users/PommeVerte","html_url":"https://github.com/PommeVerte","followers_url":"https://api.github.com/users/PommeVerte/followers","following_url":"https://api.github.com/users/PommeVerte/following{/other_user}","gists_url":"https://api.github.com/users/PommeVerte/gists{/gist_id}","starred_url":"https://api.github.com/users/PommeVerte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PommeVerte/subscriptions","organizations_url":"https://api.github.com/users/PommeVerte/orgs","repos_url":"https://api.github.com/users/PommeVerte/repos","events_url":"https://api.github.com/users/PommeVerte/events{/privacy}","received_events_url":"https://api.github.com/users/PommeVerte/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-06-17T08:34:47Z","updated_at":"2015-06-17T18:02:36Z","closed_at":null,"body":"I'm using titan via gremlin-server. Using the `cassandra-es` configuration (I've included all configuration details at the end of this post)\r\n\r\nI have a set of unit tests that pass but quite regularly they will fail at random. It is worth noting that we set up unique composite keys with consistency (`mgmt.setConsistency(name, ConsistencyModifier.LOCK)`)\r\nThis is completely random so I don't really know how to reproduce.  All I have noticed is that some disk storage errors can be generated when using the default berkley configuration via the console (just repeatedly commit transactions via `graph.tx().commit()`. And you will get the error.)\r\n\r\nIn my case however there are a couple of things that show up every time a random test fails for no reason.\r\nFirst off, when tests fail. Any subsequent addV() with a unique property will fail if the property existed in the past. What I mean by this is that if I set a vertex with `key = 2` and that vertex was removed, I still wouldn't be able to set another vertex with `key = 2` (this would generate a uniqueness constraint error)\r\nSecondly I get a set of errors, bellow is an error message printed by gremlin-server:\r\n\r\n```\r\n38519185 [gremlin-server-exec-2] ERROR com.thinkaurelius.titan.graphdb.database.StandardTitanGraph  - Could not commit transaction [4856] due to exception\r\ncom.thinkaurelius.titan.diskstorage.locking.PermanentLockingException: Local lock contention\r\n\tat com.thinkaurelius.titan.diskstorage.locking.AbstractLocker.writeLock(AbstractLocker.java:313)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingStore.acquireLock(ExpectedValueCheckingStore.java:89)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.KCVSProxy.acquireLock(KCVSProxy.java:40)\r\n\tat com.thinkaurelius.titan.diskstorage.BackendTransaction.acquireEdgeLock(BackendTransaction.java:221)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.prepareCommit(StandardTitanGraph.java:513)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.commit(StandardTitanGraph.java:701)\r\n\tat com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx.commit(StandardTitanTx.java:1329)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsGraph$GraphTransaction.doCommit(TitanBlueprintsGraph.java:263)\r\n\tat org.apache.tinkerpop.gremlin.structure.util.AbstractTransaction.commit(AbstractTransaction.java:94)\r\n\tat org.apache.tinkerpop.gremlin.server.Graphs.lambda$commitAll$12(Graphs.java:102)\r\n\tat org.apache.tinkerpop.gremlin.server.Graphs$$Lambda$120/1693512354.accept(Unknown Source)\r\n\tat java.util.HashMap$EntrySet.forEach(HashMap.java:1035)\r\n\tat org.apache.tinkerpop.gremlin.server.Graphs.commitAll(Graphs.java:99)\r\n\tat org.apache.tinkerpop.gremlin.server.GremlinServer.lambda$initializeGremlinExecutor$41(GremlinServer.java:189)\r\n\tat org.apache.tinkerpop.gremlin.server.GremlinServer$$Lambda$32/1688917723.accept(Unknown Source)\r\n\tat org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$15(GremlinExecutor.java:194)\r\n\tat org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor$$Lambda$112/79915835.call(Unknown Source)\r\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\r\n\tat java.lang.Thread.run(Thread.java:745)\r\n```\r\n\r\nI will also get the following error systematically on `bin/titan.sh stop` (note that it just repeats on and on)\r\n\r\n```\r\n39114746 [SIGTERM handler] ERROR com.thinkaurelius.titan.graphdb.database.StandardTitanGraph  - Could not commit transaction [5412] due to exception\r\ncom.thinkaurelius.titan.core.TitanException: Could not execute operation due to backend exception\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:44)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.persist(CacheTransaction.java:87)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.flushInternal(CacheTransaction.java:141)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.commit(CacheTransaction.java:198)\r\n\tat com.thinkaurelius.titan.diskstorage.BackendTransaction.commit(BackendTransaction.java:135)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.commit(StandardTitanGraph.java:691)\r\n\tat com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx.commit(StandardTitanTx.java:1329)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction$1.commit(TitanBlueprintsTransaction.java:172)\r\n\tat org.apache.tinkerpop.gremlin.structure.Transaction$CLOSE_BEHAVIOR$1.accept(Transaction.java:163)\r\n\tat org.apache.tinkerpop.gremlin.structure.Transaction$CLOSE_BEHAVIOR$1.accept(Transaction.java:160)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsGraph$GraphTransaction.close(TitanBlueprintsGraph.java:288)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction$1.close(TitanBlueprintsTransaction.java:203)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction.close(TitanBlueprintsTransaction.java:235)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.closeInternal(StandardTitanGraph.java:201)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.access$600(StandardTitanGraph.java:77)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph$ShutdownThread.start(StandardTitanGraph.java:802)\r\n\tat java.lang.ApplicationShutdownHooks.runHooks(ApplicationShutdownHooks.java:102)\r\n\tat java.lang.ApplicationShutdownHooks$1.run(ApplicationShutdownHooks.java:46)\r\n\tat java.lang.Shutdown.runHooks(Shutdown.java:123)\r\n\tat java.lang.Shutdown.sequence(Shutdown.java:167)\r\n\tat java.lang.Shutdown.exit(Shutdown.java:212)\r\n\tat java.lang.Terminator$1.handle(Terminator.java:52)\r\n\tat sun.misc.Signal$1.run(Signal.java:212)\r\n\tat java.lang.Thread.run(Thread.java:745)\r\nCaused by: com.thinkaurelius.titan.diskstorage.locking.PermanentLockingException: Expected value mismatch for KeyColumn [k=0x 16-165-160-118-108- 37-115-117-112-101-114-110-111-100-229, c=0x  0]: expected=[] vs actual=[  2-124-141] (store=graphindex)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkSingleExpectedValueUnsafe(ExpectedValueCheckingTransaction.java:275)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.access$000(ExpectedValueCheckingTransaction.java:36)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction$1.call(ExpectedValueCheckingTransaction.java:213)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction$1.call(ExpectedValueCheckingTransaction.java:210)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkSingleExpectedValue(ExpectedValueCheckingTransaction.java:210)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkAllExpectedValues(ExpectedValueCheckingTransaction.java:179)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.prepareForMutations(ExpectedValueCheckingTransaction.java:144)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingStoreManager.mutateMany(ExpectedValueCheckingStoreManager.java:58)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction$1.call(CacheTransaction.java:90)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction$1.call(CacheTransaction.java:87)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:42)\r\n\t... 23 more\r\n39114746 [SIGTERM handler] WARN  com.thinkaurelius.titan.graphdb.database.StandardTitanGraph  - Unable to close transaction standardtitantx[0x089d9d33]\r\ncom.thinkaurelius.titan.core.TitanException: Could not commit transaction due to exception during persistence\r\n\tat com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx.commit(StandardTitanTx.java:1340)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction$1.commit(TitanBlueprintsTransaction.java:172)\r\n\tat org.apache.tinkerpop.gremlin.structure.Transaction$CLOSE_BEHAVIOR$1.accept(Transaction.java:163)\r\n\tat org.apache.tinkerpop.gremlin.structure.Transaction$CLOSE_BEHAVIOR$1.accept(Transaction.java:160)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsGraph$GraphTransaction.close(TitanBlueprintsGraph.java:288)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction$1.close(TitanBlueprintsTransaction.java:203)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction.close(TitanBlueprintsTransaction.java:235)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.closeInternal(StandardTitanGraph.java:201)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.access$600(StandardTitanGraph.java:77)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph$ShutdownThread.start(StandardTitanGraph.java:802)\r\n\tat java.lang.ApplicationShutdownHooks.runHooks(ApplicationShutdownHooks.java:102)\r\n\tat java.lang.ApplicationShutdownHooks$1.run(ApplicationShutdownHooks.java:46)\r\n\tat java.lang.Shutdown.runHooks(Shutdown.java:123)\r\n\tat java.lang.Shutdown.sequence(Shutdown.java:167)\r\n\tat java.lang.Shutdown.exit(Shutdown.java:212)\r\n\tat java.lang.Terminator$1.handle(Terminator.java:52)\r\n\tat sun.misc.Signal$1.run(Signal.java:212)\r\n\tat java.lang.Thread.run(Thread.java:745)\r\nCaused by: com.thinkaurelius.titan.core.TitanException: Could not execute operation due to backend exception\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:44)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.persist(CacheTransaction.java:87)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.flushInternal(CacheTransaction.java:141)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.commit(CacheTransaction.java:198)\r\n\tat com.thinkaurelius.titan.diskstorage.BackendTransaction.commit(BackendTransaction.java:135)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.commit(StandardTitanGraph.java:691)\r\n\tat com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx.commit(StandardTitanTx.java:1329)\r\n\t... 17 more\r\nCaused by: com.thinkaurelius.titan.diskstorage.locking.PermanentLockingException: Expected value mismatch for KeyColumn [k=0x 16-165-160-118-108- 37-115-117-112-101-114-110-111-100-229, c=0x  0]: expected=[] vs actual=[  2-124-141] (store=graphindex)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkSingleExpectedValueUnsafe(ExpectedValueCheckingTransaction.java:275)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.access$000(ExpectedValueCheckingTransaction.java:36)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction$1.call(ExpectedValueCheckingTransaction.java:213)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction$1.call(ExpectedValueCheckingTransaction.java:210)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkSingleExpectedValue(ExpectedValueCheckingTransaction.java:210)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkAllExpectedValues(ExpectedValueCheckingTransaction.java:179)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.prepareForMutations(ExpectedValueCheckingTransaction.java:144)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingStoreManager.mutateMany(ExpectedValueCheckingStoreManager.java:58)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction$1.call(CacheTransaction.java:90)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction$1.call(CacheTransaction.java:87)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:42)\r\n\t... 23 more\r\n39114852 [SIGTERM handler] ERROR com.thinkaurelius.titan.graphdb.database.StandardTitanGraph  - Could not commit transaction [5413] due to storage exception in system-commit\r\ncom.thinkaurelius.titan.core.TitanException: Could not execute operation due to backend exception\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:44)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.persist(CacheTransaction.java:87)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.flushInternal(CacheTransaction.java:141)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction.commit(CacheTransaction.java:198)\r\n\tat com.thinkaurelius.titan.diskstorage.BackendTransaction.commit(BackendTransaction.java:135)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.commit(StandardTitanGraph.java:691)\r\n\tat com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx.commit(StandardTitanTx.java:1329)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction$1.commit(TitanBlueprintsTransaction.java:172)\r\n\tat org.apache.tinkerpop.gremlin.structure.Transaction$CLOSE_BEHAVIOR$1.accept(Transaction.java:163)\r\n\tat org.apache.tinkerpop.gremlin.structure.Transaction$CLOSE_BEHAVIOR$1.accept(Transaction.java:160)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsGraph$GraphTransaction.close(TitanBlueprintsGraph.java:288)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction$1.close(TitanBlueprintsTransaction.java:203)\r\n\tat com.thinkaurelius.titan.graphdb.tinkerpop.TitanBlueprintsTransaction.close(TitanBlueprintsTransaction.java:235)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.closeInternal(StandardTitanGraph.java:201)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph.access$600(StandardTitanGraph.java:77)\r\n\tat com.thinkaurelius.titan.graphdb.database.StandardTitanGraph$ShutdownThread.start(StandardTitanGraph.java:802)\r\n\tat java.lang.ApplicationShutdownHooks.runHooks(ApplicationShutdownHooks.java:102)\r\n\tat java.lang.ApplicationShutdownHooks$1.run(ApplicationShutdownHooks.java:46)\r\n\tat java.lang.Shutdown.runHooks(Shutdown.java:123)\r\n\tat java.lang.Shutdown.sequence(Shutdown.java:167)\r\n\tat java.lang.Shutdown.exit(Shutdown.java:212)\r\n\tat java.lang.Terminator$1.handle(Terminator.java:52)\r\n\tat sun.misc.Signal$1.run(Signal.java:212)\r\n\tat java.lang.Thread.run(Thread.java:745)\r\nCaused by: com.thinkaurelius.titan.diskstorage.locking.PermanentLockingException: Expected value mismatch for KeyColumn [k=0x 16-165-160-118-108- 37-102-105-108-229, c=0x  0]: expected=[] vs actual=[  1- 24-141] (store=graphindex)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkSingleExpectedValueUnsafe(ExpectedValueCheckingTransaction.java:275)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.access$000(ExpectedValueCheckingTransaction.java:36)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction$1.call(ExpectedValueCheckingTransaction.java:213)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction$1.call(ExpectedValueCheckingTransaction.java:210)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkSingleExpectedValue(ExpectedValueCheckingTransaction.java:210)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.checkAllExpectedValues(ExpectedValueCheckingTransaction.java:179)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingTransaction.prepareForMutations(ExpectedValueCheckingTransaction.java:144)\r\n\tat com.thinkaurelius.titan.diskstorage.locking.consistentkey.ExpectedValueCheckingStoreManager.mutateMany(ExpectedValueCheckingStoreManager.java:58)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction$1.call(CacheTransaction.java:90)\r\n\tat com.thinkaurelius.titan.diskstorage.keycolumnvalue.cache.CacheTransaction$1.call(CacheTransaction.java:87)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.executeDirect(BackendOperation.java:56)\r\n\tat com.thinkaurelius.titan.diskstorage.util.BackendOperation.execute(BackendOperation.java:42)\r\n\t... 23 more\r\n```\r\n\r\n---\r\nConfiguration files:\r\n\r\n**gremlin-server.yaml**\r\n```yaml\r\nhost: localhost\r\nport: 8182\r\nthreadPoolWorker: 1\r\ngremlinPool: 8\r\nscriptEvaluationTimeout: 30000\r\nserializedResponseTimeout: 30000\r\nchannelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer\r\ngraphs: {\r\n  graphT: conf/titan-cassandra-es.properties,\r\n  graph: conf/gremlin-server/tinkergraph-empty.properties\r\n}\r\nplugins:\r\n  - aurelius.titan\r\n  - tinkerpop.tinkergraph\r\nscriptEngines: {\r\n  gremlin-groovy: {\r\n    imports: [java.lang.Math],\r\n    staticImports: [java.lang.Math.PI],\r\n    scripts: [scripts/empty-php.groovy]},\r\n  nashorn: {\r\n      imports: [java.lang.Math],\r\n      staticImports: [java.lang.Math.PI]}}\r\nserializers:\r\n  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graphT }}\r\n  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}\r\n  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graphT }}\r\n  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graphT }}\r\nprocessors:\r\n  - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}\r\nmetrics: {\r\n  consoleReporter: {enabled: true, interval: 180000},\r\n  csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},\r\n  jmxReporter: {enabled: true},\r\n  slf4jReporter: {enabled: true, interval: 180000},\r\n  gangliaReporter: {enabled: false, interval: 180000, addressingMode: MULTICAST},\r\n  graphiteReporter: {enabled: false, interval: 180000}}\r\nthreadPoolBoss: 1\r\nmaxInitialLineLength: 4096\r\nmaxHeaderSize: 8192\r\nmaxChunkSize: 8192\r\nmaxContentLength: 65536\r\nmaxAccumulationBufferComponents: 1024\r\nresultIterationBatchSize: 64\r\nwriteBufferHighWaterMark: 32768\r\nwriteBufferHighWaterMark: 65536\r\nssl: {\r\n  enabled: false}\r\n```\r\n\r\n**titan-cassandra-es.properties** (added mising `graph` property)\r\n\r\n```ini\r\n# Titan configuration sample: Cassandra & Elasticsearch over sockets\r\n#\r\n# This file connects to Cassandra and Elasticsearch services running\r\n# on localhost over the Thrift API and the Elasticsearch native\r\n# \"Transport\" API on their respective default ports.  The Cassandra\r\n# and Elasticsearch services must already be running before starting\r\n# Titan with this file.\r\ngremlin.graph=com.thinkaurelius.titan.core.TitanFactory\r\n\r\n# The primary persistence provider used by Titan.  This is required.  It\r\n# should be set one of Titan's built-in shorthand names for its standard\r\n# storage backends (shorthands: berkeleyje, cassandrathrift, cassandra,\r\n# astyanax, embeddedcassandra, hbase, inmemory) or to the full package and\r\n# classname of a custom/third-party StoreManager implementation.\r\n#\r\n# Default:    (no default value)\r\n# Data Type:  String\r\n# Mutability: LOCAL\r\nstorage.backend=cassandrathrift\r\n\r\n# The hostname or comma-separated list of hostnames of storage backend\r\n# servers.  This is only applicable to some storage backends, such as\r\n# cassandra and hbase.\r\n#\r\n# Default:    127.0.0.1\r\n# Data Type:  class java.lang.String[]\r\n# Mutability: LOCAL\r\nstorage.hostname=127.0.0.1\r\n\r\n# Whether to enable Titan's database-level cache, which is shared across\r\n# all transactions. Enabling this option speeds up traversals by holding\r\n# hot graph elements in memory, but also increases the likelihood of\r\n# reading stale data.  Disabling it forces each transaction to\r\n# independently fetch graph elements from storage before reading/writing\r\n# them.\r\n#\r\n# Default:    false\r\n# Data Type:  Boolean\r\n# Mutability: MASKABLE\r\ncache.db-cache = true\r\n\r\n# How long, in milliseconds, database-level cache will keep entries after\r\n# flushing them.  This option is only useful on distributed storage\r\n# backends that are capable of acknowledging writes without necessarily\r\n# making them immediately visible.\r\n#\r\n# Default:    50\r\n# Data Type:  Integer\r\n# Mutability: GLOBAL_OFFLINE\r\n#\r\n# Settings with mutability GLOBAL_OFFLINE are centrally managed in Titan's\r\n# storage backend.  After starting the database for the first time, this\r\n# file's copy of this setting is ignored.  Use Titan's Management System\r\n# to read or modify this value after bootstrapping.\r\ncache.db-cache-clean-wait = 20\r\n\r\n# Default expiration time, in milliseconds, for entries in the\r\n# database-level cache. Entries are evicted when they reach this age even\r\n# if the cache has room to spare. Set to 0 to disable expiration (cache\r\n# entries live forever or until memory pressure triggers eviction when set\r\n# to 0).\r\n#\r\n# Default:    10000\r\n# Data Type:  Long\r\n# Mutability: GLOBAL_OFFLINE\r\n#\r\n# Settings with mutability GLOBAL_OFFLINE are centrally managed in Titan's\r\n# storage backend.  After starting the database for the first time, this\r\n# file's copy of this setting is ignored.  Use Titan's Management System\r\n# to read or modify this value after bootstrapping.\r\ncache.db-cache-time = 180000\r\n\r\n# Size of Titan's database level cache.  Values between 0 and 1 are\r\n# interpreted as a percentage of VM heap, while larger values are\r\n# interpreted as an absolute size in bytes.\r\n#\r\n# Default:    0.3\r\n# Data Type:  Double\r\n# Mutability: MASKABLE\r\ncache.db-cache-size = 0.25\r\n\r\n# Connect to an already-running ES instance on localhost\r\n\r\n# The indexing backend used to extend and optimize Titan's query\r\n# functionality. This setting is optional.  Titan can use multiple\r\n# heterogeneous index backends.  Hence, this option can appear more than\r\n# once, so long as the user-defined name between \"index\" and \"backend\" is\r\n# unique among appearances.Similar to the storage backend, this should be\r\n# set to one of Titan's built-in shorthand names for its standard index\r\n# backends (shorthands: lucene, elasticsearch, es, solr) or to the full\r\n# package and classname of a custom/third-party IndexProvider\r\n# implementation.\r\n#\r\n# Default:    elasticsearch\r\n# Data Type:  String\r\n# Mutability: GLOBAL_OFFLINE\r\n#\r\n# Settings with mutability GLOBAL_OFFLINE are centrally managed in Titan's\r\n# storage backend.  After starting the database for the first time, this\r\n# file's copy of this setting is ignored.  Use Titan's Management System\r\n# to read or modify this value after bootstrapping.\r\nindex.search.backend=elasticsearch\r\n\r\n# The hostname or comma-separated list of hostnames of index backend\r\n# servers.  This is only applicable to some index backends, such as\r\n# elasticsearch and solr.\r\n#\r\n# Default:    127.0.0.1\r\n# Data Type:  class java.lang.String[]\r\n# Mutability: MASKABLE\r\nindex.search.hostname=127.0.0.1\r\n\r\n# The Elasticsearch node.client option is set to this boolean value, and\r\n# the Elasticsearch node.data option is set to the negation of this value.\r\n# True creates a thin client which holds no data.  False creates a regular\r\n# Elasticsearch cluster node that may store data.\r\n#\r\n# Default:    true\r\n# Data Type:  Boolean\r\n# Mutability: GLOBAL_OFFLINE\r\n#\r\n# Settings with mutability GLOBAL_OFFLINE are centrally managed in Titan's\r\n# storage backend.  After starting the database for the first time, this\r\n# file's copy of this setting is ignored.  Use Titan's Management System\r\n# to read or modify this value after bootstrapping.\r\nindex.search.elasticsearch.client-only=true\r\n\r\n# Or start ES inside the Titan JVM\r\n#index.search.backend=elasticsearch\r\n#index.search.directory=../db/es\r\n#index.search.elasticsearch.client-only=false\r\n#index.search.elasticsearch.local-mode=true\r\n```\r\n\r\n**empty-php.groovy**\r\n\r\n```groovy\r\n// Generate content\r\nhook = [\r\n  process: null,\r\n  onStartUp: { ctx ->\r\n    ctx.logger.info(\"Loading 'modern' graph data.\")\r\n    TinkerFactory.generateClassic(graph);\r\n  }\r\n] as LifeCycleHook\r\n\r\n// Attach traversal objects\r\nt = graphT.traversal();\r\ng = graph.traversal();\r\n```"},"comment":{"url":"https://api.github.com/repos/thinkaurelius/titan/issues/comments/112895791","html_url":"https://github.com/thinkaurelius/titan/issues/1106#issuecomment-112895791","issue_url":"https://api.github.com/repos/thinkaurelius/titan/issues/1106","id":112895791,"user":{"login":"spmallette","id":384249,"avatar_url":"https://avatars.githubusercontent.com/u/384249?v=3","gravatar_id":"","url":"https://api.github.com/users/spmallette","html_url":"https://github.com/spmallette","followers_url":"https://api.github.com/users/spmallette/followers","following_url":"https://api.github.com/users/spmallette/following{/other_user}","gists_url":"https://api.github.com/users/spmallette/gists{/gist_id}","starred_url":"https://api.github.com/users/spmallette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spmallette/subscriptions","organizations_url":"https://api.github.com/users/spmallette/orgs","repos_url":"https://api.github.com/users/spmallette/repos","events_url":"https://api.github.com/users/spmallette/events{/privacy}","received_events_url":"https://api.github.com/users/spmallette/received_events","type":"User","site_admin":false},"created_at":"2015-06-17T18:02:36Z","updated_at":"2015-06-17T18:02:36Z","body":"It issues a `rollback` if there was some sort of failure or a timeout during evaluation of the script.  other than that, it should just `commit` on \"success\"."}}