2017-08-07 1 views
0

Ich versuche, ziemlich kleine Menge von Daten einfügen Asynchron mit phantom-cassandra 3:9 jedoch diese Abfrage hält fehlschlägt: INSERT INTO test_db.test_tbl(name, last, ts) VALUES('aaa', 'bbb', 1502109409) IF NOT EXISTS USING TTL 0; ich die folgende Ausnahme bin immer:Erste WriteTimoutException auf CAS-Operationen

com.datastax.driver .core.exceptions.WriteTimeoutException: Cassandra Timeout bei Schreibabfrage bei Konsistenz SERIAL (1 Replik waren erforderlich, aber nur 0 quittiert den Schreib)

bei com.dat astax.driver.core.exceptions.WriteTimeoutException.copy (WriteTimeoutException.java:100)

bei com.datastax.driver.core.Responses $ Error.asException (Responses.java:134)

bei com.datastax.driver.core.RequestHandler $ SpeculativeExecution.onSet (RequestHandler.java:507)

bei com .....

ich bin mit Cassandra mit docker. Ich habe versucht, die cassandra.yaml write_request_timeout_in_ms: 20000 zu ändern, aber das machte keinen großen Unterschied.

UPDATE: Ich habe versucht, die Konsistenz Ebene eine Einstellung (auch versucht, andere):

insert 
     .value(_.name, "aaa") 
     .value(_.last, uuid) 
     .value(_.ts, Random.long) 
     .ifNotExists() 
     .consistencyLevel_=(ConsistencyLevel.ONE) 

aber die Ausnahme zeigt immer noch „Cassandra Timeout bei Schreibabfrage bei Konsistenz SERIAL“

Antwort

0

Sie verwenden IF NOT EXISTS Schlüsselwort, das ein Lightweight transactions

Cassandra implementiert leichte Transaktionen des Paxos Konsensus erstreckt Protokoll, das auf einem quorumbasierten Algorithmus basiert. Paxos sorgt für eine linearisierbare Konsistenz auf Kosten von vier Rundfahrten.

, der wie ein hoches klingt kosten vielleicht zu hoch, wenn man den seltenen Fall einer Anwendung, die jede Operation linearisierbar sein erfordert. Folglich reservieren Sie leichte Transaktionen für die Situationen, in denen sie absolut notwendig sind.

Quelle: https://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0

+0

tatsächlich Ich versuche nur, 100-200 Datensätze einzufügen. – igx

+0

Kosten von Lightweight-Transaktionen ist sehr hoch, Versuchen Sie die Abfrage ohne "IF NOT EXISTS" –