Titan - Schema Agreement In Cassandra Cluster
<p>I'm blocked by a problem I'm having with my brand new Cassandra cluster that I use with Titan. The cluster has 3 nodes and the problem comes when I try to open the graph for the first time with <em>TitanFactory.open()</em>. This is the exception:</p>

<blockquote>
  <p>WARN  09:13:44 UnknownColumnFamilyException reading from socket;
  closing org.apache.cassandra.db.UnknownColumnFamilyException: Couldn't
  find table for cfId 9ca7a420-b843-11e5-8108-d94de8194139. If a table
  was just created, this is likely due to the schema not being fully
  propagated.  Please wait for schema agreement on table creation.
          at org.apache.cassandra.config.CFMetaData$Serializer.deserialize(CFMetaData.java:1319)
  ~[apache-cassandra-3.0.2.jar:3.0.2]
          at org.apache.cassandra.db.ReadCommand$Serializer.deserialize(ReadCommand.java:586)
  ~[apache-cassandra-3.0.2.jar:3.0.2]
          at org.apache.cassandra.db.ReadCommand$Serializer.deserialize(ReadCommand.java:523)
  ~[apache-cassandra-3.0.2.jar:3.0.2]
          at org.apache.cassandra.net.MessageIn.read(MessageIn.java:98) ~[apache-cassandra-3.0.2.jar:3.0.2]
          at org.apache.cassandra.net.IncomingTcpConnection.receiveMessage(IncomingTcpConnection.java:199)
  ~[apache-cassandra-3.0.2.jar:3.0.2]
          at org.apache.cassandra.net.IncomingTcpConnection.receiveMessages(IncomingTcpConnection.java:176)
  ~[apache-cassandra-3.0.2.jar:3.0.2]
          at org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:92)
  ~[apache-cassandra-3.0.2.jar:3.0.2]</p>
</blockquote>

<p>This is my Configuration:</p>

<pre><code>def open(keyspace: String = "titan"): BaseConfiguration = {

    var conf = new BaseConfiguration()
    conf.setProperty("storage.backend", "cassandrathrift")
    conf.setProperty("storage.hostname", "XXX.XXX.XXX.XXX")
    conf.setProperty("storage.cassandra.keyspace", keyspace)
    conf.setProperty("storage.batch-loading", true)
    conf.setProperty("storage.buffer-size", 4096)
    conf.setProperty("storage.read-attempts", 300)
    conf.setProperty("storage.write-attempts", 300)
    conf.setProperty("storage.attempt-wait", 200000000)
    conf.setProperty("storage.read-time", 200000000)
    conf.setProperty("storage.lock-wait-time", 200000000)
    conf.setProperty("storage.connection-timeout", 200000000)
    conf.setProperty("storage.read-time", 200000000)
    conf.setProperty("storage.cassandra.replication-factor", 3)
    conf.setProperty("storage.cassandra.frame-size-mb", 1024)
    conf.setProperty("storage.cassandra.thrift.cpool.when-exhausted", "GROW")
    conf.setProperty("storage.cassandra.thrift.cpool.max-active", -1)
    conf.setProperty("storage.cassandra.thrift.cpool.evictor-period", -1)
    conf.setProperty("storage.cassandra.thrift.cpool.min-evictable-idle-time", -1)

    conf.setProperty("ids.block-size", 20000000)

    conf.setProperty("cache.db-cache", true)
    conf.setProperty("cache.db-cache-clean-wait", 20)
    conf.setProperty("cache.db-cache-time", 1800000)
    conf.setProperty("cache.db-cache-size", 0.25)

    conf
}
</code></pre>

<p>The problem seems to be the schema agreement when Cassandra create the table. There is a way for waiting the schema agreement between all nodes? Actually I'm using Cassandra 3.0.2 with Titan 1.0.0.</p>