[ https://issues.apache.org/jira/browse/CASSANDRA-7766?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Fabrice Larcher updated CASSANDRA-7766: --------------------------------------- Description: Since 2.1.0-rc2, it appears that the secondary indexes are not always working. Immediately after the INSERT of a row, the index seems to be there. But after a while (I do not know when or why), SELECT statements based on any secondary index do not return the corresponding row(s) anymore. I noticed that a restart of C* may have an impact (the data inserted before the restart may be seen through the index, even if it was not returned before the restart). Here is a use-case example (in order to clarify my request) : {code} CREATE TABLE IF NOT EXISTS ks.cf ( k int PRIMARY KEY, ind ascii, value text); CREATE INDEX IF NOT EXISTS ks_cf_index ON ks.cf(ind); INSERT INTO ks.cf (k, ind, value) VALUES (1, 'toto', 'Hello'); SELECT * FROM ks.cf WHERE ind = 'toto'; // Returns no result after a while {code} The last SELECT statement may or may not return a row depending on the instant of the request. I experienced that with 2.1.0-rc5 through CQLSH with clusters of one and two nodes. Since it depends on the instant of the request, I am not able to deliver any way to reproduce that systematically (It appears to be linked with some scheduled job inside C*). was: Since 2.1.0-rc2, it appears that the secondary indexes are not always working. Immediately after the INSERT of a row, the index seems to be there. But after a while (I do not know when or why), SELECT statements based on any secondary index do not return the corresponding row(s) anymore. I noticed that a restart of C* may have an impact (the data inserted before the restart may be seen through the index, even if it was not returned before the restart). Here is a use-case example (in order to clarify my request) : CREATE TABLE IF NOT EXISTS ks.cf ( k int PRIMARY KEY, ind ascii, value text); CREATE INDEX IF NOT EXISTS ks_cf_index ON ks.cf(ind); INSERT INTO ks.cf (k, ind, value) VALUES (1, 'toto', 'Hello'); SELECT * FROM ks.cf WHERE ind = 'toto'; // Returns no result after a while The last SELECT statement may or may not return a row depending on the instant of the request. I experienced that with 2.1.0-rc5 through CQLSH with clusters of one and two nodes. Since it depends on the instant of the request, I am not able to deliver any way to reproduce that systematically (It appears to be linked with some scheduled job inside C*). Attachment: result-success.txt result-failure.txt You will find some traces attached ; one file the success case and one for the failure case. Here are some information about them ; *CQL structure :* A table {{user}} with an index {{user_email}} on column {{email}} of type {{ascii}}. *CQLSH commands :* {code} use main; tracing on; consistency all; select * from user where email = 'fabrice.larc...@level5.fr'; {code} I hope it could help > Secondary index not working after a while > ----------------------------------------- > > Key: CASSANDRA-7766 > URL: https://issues.apache.org/jira/browse/CASSANDRA-7766 > Project: Cassandra > Issue Type: Bug > Environment: C* 2.1.0-rc5 with small clusters (one or two nodes) > Reporter: Fabrice Larcher > Attachments: result-failure.txt, result-success.txt > > > Since 2.1.0-rc2, it appears that the secondary indexes are not always > working. Immediately after the INSERT of a row, the index seems to be there. > But after a while (I do not know when or why), SELECT statements based on any > secondary index do not return the corresponding row(s) anymore. I noticed > that a restart of C* may have an impact (the data inserted before the restart > may be seen through the index, even if it was not returned before the > restart). > Here is a use-case example (in order to clarify my request) : > {code} > CREATE TABLE IF NOT EXISTS ks.cf ( k int PRIMARY KEY, ind ascii, value text); > CREATE INDEX IF NOT EXISTS ks_cf_index ON ks.cf(ind); > INSERT INTO ks.cf (k, ind, value) VALUES (1, 'toto', 'Hello'); > SELECT * FROM ks.cf WHERE ind = 'toto'; // Returns no result after a while > {code} > The last SELECT statement may or may not return a row depending on the > instant of the request. I experienced that with 2.1.0-rc5 through CQLSH with > clusters of one and two nodes. Since it depends on the instant of the > request, I am not able to deliver any way to reproduce that systematically > (It appears to be linked with some scheduled job inside C*). -- This message was sent by Atlassian JIRA (v6.2#6252)