I'm using Titan 1.0 with Cassandra. I'm trying to use Scala Futures to write many vertexes to a graph concurrently. A naive attempt failed for most of the writes with "Unable to close transaction". I then set storage.batch-loading to true. But then it fails when writing even a single vertex with:
Exception in thread "main" java.lang.IllegalArgumentException: Property Key with given name does not exist: x
at com.thinkaurelius.titan.graphdb.types.typemaker.DisableDefaultSchemaMaker.makePropertyKey(DisableDefaultSchemaMaker.java:32)
at com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx.getOrCreatePropertyKey(StandardTitanTx.java:923)
I tried setting schema.default=default explicitly, but it still seems to go to DisableDefaultSchemaMaker. Reading the docs for storage.batch-loading, I see:
Enables batch loading which improves write performance but assumes that only one thread is interacting with the graph
So, my question is can we really not write to Titan from multiple threads / using Futures? Seeing that there's no async api, this severely limits its uses in a streaming ingestion context. I'm obviously doing something wrong, and surely there's some feature to enable this. For my use case, I *want* to have auto schema, and not create schema entries for each and every property.
Any pointers would be welcome.
-Ashic.