Я использую Cassandra 2.0.3, и я удаляю и воссоздаю простую таблицу через cqlsh, загружая файл (исходная команда). В том же файле я вставляю несколько строк во вновь созданную таблицу.
Примерно раз в 3-4 попытки я получаю rpc_timeout на некоторых вставках. В этом случае у меня всегда есть это исключение на одном узле кластера:
WARN [Thread-63] 2014-05-07 10:52:39,658 IncomingTcpConnection.java (line 83) UnknownColumnFamilyException reading from socket; closing
org.apache.cassandra.db.UnknownColumnFamilyException: Couldn't find cfId=15a8520e-bb08-3a79-82a0-f735287315bf
at org.apache.cassandra.db.ColumnFamilySerializer.deserializeCfId(ColumnFamilySerializer.java:178)
at org.apache.cassandra.db.ColumnFamilySerializer.deserialize(ColumnFamilySerializer.java:103)
at org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserializeOneCf(RowMutation.java:304)
at org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserialize(RowMutation.java:284)
at org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserialize(RowMutation.java:312)
at org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserialize(RowMutation.java:254)
at org.apache.cassandra.net.MessageIn.read(MessageIn.java:99)
at org.apache.cassandra.net.IncomingTcpConnection.receiveMessage(IncomingTcpConnection.java:153)
at org.apache.cassandra.net.IncomingTcpConnection.handleModernVersion(IncomingTcpConnection.java:130)
at org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:74)
Даже если я делаю INSERT непосредственно в cqlsh, он также не работает с rpc_timeout. Обычно примерно через одну минуту вставка проходит успешно.
Мои узлы синхронизированы по времени (я использую 3 виртуальные машины на своем ПК), и локальная сеть, конечно, очень быстрая на всех виртуальных машинах, работающих локально.
Я создал кластер, добавив 2 узла к существующей Cassandra, работающей на одном узле. Мое пространство ключей не использует репликацию:
CREATE KEYSPACE eras
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
Вот содержимое файла, который я использую для воспроизведения проблемы:
DROP TABLE IF EXISTS erasconfig;
CREATE TABLE erasconfig (
name text,
category text,
description text,
ismodifiablebyuser int,
value text,
format text,
PRIMARY KEY (name, category)
);
INSERT INTO ErasConfig (isModifiableByUser, format, name, value, category, description) VALUES (1, '', 'RECORD_IN_BASE', 'garbage', 'Path', 'Absolute path used for RECORD INPUT files');
Этот INSERT переходит в 3-й узел кластера, который иногда выходит из строя во время создания таблицы, за исключением выше.