Cassandra 2.2.3 で SELECT を実行するときの不可解な動作に対処しています。リングに 4 つのノードがあり、次のキースペース、テーブル、およびインデックスを作成します。
CREATE KEYSPACE IF NOT EXISTS my_keyspace
WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
CREATE TABLE my_keyspace.my_table (
id text,
some_text text,
code text,
some_set set<int>,
a_float float,
name text,
type int,
a_double double,
another_set set<int>,
another_float float,
yet_another_set set<text>,
PRIMARY KEY (id, some_text, code)
) WITH read_repair_chance = 0.0
AND dclocal_read_repair_chance = 0.1
AND gc_grace_seconds = 864000
AND bloom_filter_fp_chance = 0.01
AND caching = { 'keys' : 'ALL', 'rows_per_partition' : 'NONE' }
AND comment = ''
AND compaction = { 'class' : 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy' }
AND compression = { 'sstable_compression' : 'org.apache.cassandra.io.compress.LZ4Compressor' }
AND default_time_to_live = 0
AND speculative_retry = '99.0PERCENTILE'
AND min_index_interval = 128
AND max_index_interval = 2048;
CREATE INDEX idx_my_table_code ON my_keyspace.my_table (code);
次に、テーブルにいくつかの行を挿入します。それらのいくつかは空のセットを持っています。デフォルトの CQL クライアントを介してこのクエリを実行し、期待どおりの行を取得します。
SELECT * FROM my_table WHERE code = 'test';
次に、制御できないいくつかのテストを実行します。彼らが何をしているのかはわかりませんが、いくつかの行を読み取り、おそらく挿入/更新/削除すると思います。インデックス、テーブル、またはキースペースの設定を削除または変更しないと確信しています。
テストの後、デフォルトの CQL クライアントを介して再度ログインし、次のクエリを実行します。
SELECT * FROM my_table WHERE code = 'test';
SELECT * FROM my_table;
SELECT * FROM my_table WHERE id = 'my_id' AND some_text = 'whatever' AND code = 'test';
最初のものは何も返しません。2 番目の行は、code = 'test' の行を含むすべての行を返します。3 番目のクエリは、最初のクエリで取得できなかった予想される行を返します。
この行と他の行との唯一の違いは、前に説明したように、いくつかの空のセットを含む行の 1 つであるということです。いくつかの空のセットも含む別の行を照会すると、同じ動作が得られます。
問題はセカンダリインデックスに関連していると思います。どういうわけか、テスト中に実行された操作によって、インデックスが特定の行を表示できない状態のままになります。
私は明らかに何かが欠けています。この動作の原因について何か考えはありますか?
前もって感謝します。
アップデート:
問題を回避しましたが、別の場所で同じ問題を見つけました。問題が最初に発生したため、エラーの前に実行された操作について詳しく知りました。その列に TTL を設定する特定の列の更新です。いくつかの調査の結果、この問題に関連している可能性のある Jira の問題がいくつか見つかりました。
https://issues.apache.org/jira/browse/CASSANDRA-6782 https://issues.apache.org/jira/browse/CASSANDRA-8206
しかし、これらの問題は 2.0 と 2.1 では解決されているようで、私は 2.2 を使用しています。これらの変更は 2.2 に含まれていると思いますが、間違っている可能性があります。