Hello.
So, I have detected a data inconsistency between my nodes:
(Consistency level is ONE)
[disco@Disco] get
NamespaceFile2['45fc8996-41bc-429b-a382-5da9294eb59c:/XXXDIRXXX']['XXXFILEXXX'];
Value was not found
Elapsed time: 48 msec(s).
[disco@Disco] get
NamespaceFile2['45fc8996-41bc-429b-a382-5da9294eb59c:/XXXDIRXXX']['XXXFILEXXX'];
=> (name=XXXFILEXXX, value=a96a7f54-49d4-11e4-8185-e0db55018fa4,
timestamp=1412213845215797)
Elapsed time: 7.45 msec(s).
[disco@Disco]
I have a replication factor of 3, and if I read with a consistency level of
QUORUM, the result converges to the column being present. The strange thing is:
I have deleted it on 2014-11-01 03:39:25 and my writes use QUORUM. My
gc_grace_period is 10 days and if I had not been running repairs during this
period this could be explained, but the fact is that repairs have been running
every day with no sign of problems. First of all some data:
Cassandra version: 1.2.19 (we upgraded from 1.2.16 on 2014-10-22)
NamespaceFile2 compaction strategy: LeveledCompactionStrategy
CFStats:
Read Count: 3376397
Read Latency: 0.24978254956392865 ms.
Write Count: 21254817
Write Latency: 0.04713691710448507 ms.
Pending Tasks: 0
Column Family: NamespaceFile2
SSTable count: 28
SSTables in each level: [1, 10, 17, 0, 0, 0, 0, 0, 0]
Space used (live): 4961751613
Space used (total): 5021967044
SSTable Compression Ratio: 0.5773464014899713
Number of Keys (estimate): 9369856
Memtable Columns Count: 82901
Memtable Data Size: 19352636
Memtable Switch Count: 283
Read Count: 3376397
Read Latency: NaN ms.
Write Count: 21254817
Write Latency: 0.049 ms.
Pending Tasks: 0
Bloom Filter False Positives: 21904
Bloom Filter False Ratio: 0.00000
Bloom Filter Space Used: 7405728
Compacted row minimum size: 61
Compacted row maximum size: 74975550
Compacted row mean size: 795
Average live cells per slice (last five minutes): 1025.0
Average tombstones per slice (last five minutes): 0.0
This particular row has 1.1M columns, 70934390 bytes, and the offending key
encoded by the partitioner is
001045fc899641bc429ba3825da9294eb59c0000072f646f7267656d00.
First I checked which nodes were responsible for this particular row:
$ nodetool -h XXX.XXX.XXX.112 getendpoints Disco NamespaceFile2
'45fc8996-41bc-429b-a382-5da9294eb59c:/XXXDIRXXX'
XXX.XXX.XXX.17
XXX.XXX.XXX.14
XXX.XXX.XXX.18
This is the repair log of these particular nodes:
----------XXX.XXX.XXX.14----------
INFO [AntiEntropySessions:366] 2014-11-14 04:34:55,740 AntiEntropyService.java
(line 651) [repair #956244b0-6bb7-11e4-8eec-f5962c02982e] new session: will
sync /XXX.XXX.XXX.14, /XXX.XXX.XXX.12, /XXX.XXX.XXX.18 on range
(14178431955039102644307275309657008810,28356863910078205288614550619314017621]
for Disco.[NamespaceFile2]
...
INFO [AntiEntropyStage:1] 2014-11-14 04:36:51,125 AntiEntropyService.java (line
764) [repair #956244b0-6bb7-11e4-8eec-f5962c02982e] NamespaceFile2 is fully
synced
INFO [AntiEntropySessions:366] 2014-11-14 04:36:51,126 AntiEntropyService.java
(line 698) [repair #956244b0-6bb7-11e4-8eec-f5962c02982e] session completed
successfully
...
INFO [AntiEntropySessions:367] 2014-11-14 04:36:51,103 AntiEntropyService.java
(line 651) [repair #da2543e0-6bb7-11e4-8eec-f5962c02982e] new session: will
sync /XXX.XXX.XXX.14, /XXX.XXX.XXX.11, /XXX.XXX.XXX.17 on range
(155962751505430129087380028406227096910,0] for Disco.[NamespaceFile2]
...
INFO [AntiEntropyStage:1] 2014-11-14 04:38:20,949 AntiEntropyService.java (line
764) [repair #da2543e0-6bb7-11e4-8eec-f5962c02982e] NamespaceFile2 is fully
synced
INFO [AntiEntropySessions:367] 2014-11-14 04:38:20,949 AntiEntropyService.java
(line 698) [repair #da2543e0-6bb7-11e4-8eec-f5962c02982e] session completed
successfully
...
INFO [AntiEntropySessions:368] 2014-11-14 04:38:20,930 AntiEntropyService.java
(line 651) [repair #0fafc710-6bb8-11e4-8eec-f5962c02982e] new session: will
sync /XXX.XXX.XXX.14, /XXX.XXX.XXX.17, /XXX.XXX.XXX.18 on range
(0,14178431955039102644307275309657008810] for Disco.[NamespaceFile2]
...
INFO [AntiEntropyStage:1] 2014-11-14 04:40:34,237 AntiEntropyService.java (line
764) [repair #0fafc710-6bb8-11e4-8eec-f5962c02982e] NamespaceFile2 is fully
synced
INFO [AntiEntropySessions:368] 2014-11-14 04:40:34,237 AntiEntropyService.java
(line 698) [repair #0fafc710-6bb8-11e4-8eec-f5962c02982e] session completed
successfully
----------XXX.XXX.XXX.17----------
INFO [AntiEntropySessions:362] 2014-11-13 04:33:01,974 AntiEntropyService.java
(line 651) [repair #27293450-6aee-11e4-aabc-9b69569c95c3] new session: will
sync /XXX.XXX.XXX.17, /XXX.XXX.XXX.11, /XXX.XXX.XXX.14 on range
(155962751505430129087380028406227096910,0] for Disco.[NamespaceFile2]
...
INFO [AntiEntropyStage:1] 2014-11-13 04:34:35,810 AntiEntropyService.java (line
764) [repair #27293450-6aee-11e4-aabc-9b69569c95c3] NamespaceFile2 is fully
synced
INFO [AntiEntropySessions:362] 2014-11-13 04:34:35,810 AntiEntropyService.java
(line 698) [repair #27293450-6aee-11e4-aabc-9b69569c95c3] session completed
successfully
...
INFO [AntiEntropySessions:363] 2014-11-13 04:34:35,790 AntiEntropyService.java
(line 651) [repair #5f1463d0-6aee-11e4-aabc-9b69569c95c3] new session: will
sync /XXX.XXX.XXX.17, /XXX.XXX.XXX.11, /XXX.XXX.XXX.112 on range
(141784319550391026443072753096570088106,155962751505430129087380028406227096910]
for Disco.[NamespaceFile2]
...
INFO [AntiEntropyStage:1] 2014-11-13 04:36:44,042 AntiEntropyService.java (line
764) [repair #5f1463d0-6aee-11e4-aabc-9b69569c95c3] NamespaceFile2 is fully
synced
INFO [AntiEntropySessions:363] 2014-11-13 04:36:44,042 AntiEntropyService.java
(line 698) [repair #5f1463d0-6aee-11e4-aabc-9b69569c95c3] session completed
successfully
...
INFO [AntiEntropySessions:364] 2014-11-13 04:36:43,996 AntiEntropyService.java
(line 651) [repair #ab7f12b0-6aee-11e4-aabc-9b69569c95c3] new session: will
sync /XXX.XXX.XXX.17, /XXX.XXX.XXX.14, /XXX.XXX.XXX.18 on range
(0,14178431955039102644307275309657008810] for Disco.[NamespaceFile2]
...
INFO [Thread-209997] 2014-11-13 04:38:55,122 AntiEntropyService.java (line 764)
[repair #ab7f12b0-6aee-11e4-aabc-9b69569c95c3] NamespaceFile2 is fully synced
INFO [AntiEntropySessions:364] 2014-11-13 04:38:55,122 AntiEntropyService.java
(line 698) [repair #ab7f12b0-6aee-11e4-aabc-9b69569c95c3] session completed
successfully
----------XXX.XXX.XXX.18----------
INFO [AntiEntropySessions:364] 2014-11-12 04:49:00,962 AntiEntropyService.java
(line 651) [repair #38594200-6a27-11e4-b912-e1a9f145c444] new session: will
sync /XXX.XXX.XXX.18, /XXX.XXX.XXX.12, /XXX.XXX.XXX.19 on range
(28356863910078205288614550619314017621,42535295865117307932921825928971026430]
for Disco.[NamespaceFile2]
...
INFO [AntiEntropyStage:1] 2014-11-12 04:50:50,095 AntiEntropyService.java (line
764) [repair #38594200-6a27-11e4-b912-e1a9f145c444] NamespaceFile2 is fully
synced
INFO [AntiEntropySessions:364] 2014-11-12 04:50:50,095 AntiEntropyService.java
(line 698) [repair #38594200-6a27-11e4-b912-e1a9f145c444] session completed
successfully
...
INFO [AntiEntropySessions:365] 2014-11-12 04:50:50,040 AntiEntropyService.java
(line 651) [repair #795d3d60-6a27-11e4-b912-e1a9f145c444] new session: will
sync /XXX.XXX.XXX.18, /XXX.XXX.XXX.12, /XXX.XXX.XXX.14 on range
(14178431955039102644307275309657008810,28356863910078205288614550619314017621]
for Disco.[NamespaceFile2]
...
INFO [AntiEntropyStage:1] 2014-11-12 04:52:31,657 AntiEntropyService.java (line
764) [repair #795d3d60-6a27-11e4-b912-e1a9f145c444] NamespaceFile2 is fully
synced
INFO [AntiEntropySessions:365] 2014-11-12 04:52:31,657 AntiEntropyService.java
(line 698) [repair #795d3d60-6a27-11e4-b912-e1a9f145c444] session completed
successfully
...
INFO [AntiEntropySessions:366] 2014-11-12 04:52:31,627 AntiEntropyService.java
(line 651) [repair #b5ea2f90-6a27-11e4-b912-e1a9f145c444] new session: will
sync /XXX.XXX.XXX.18, /XXX.XXX.XXX.14, /XXX.XXX.XXX.17 on range
(0,14178431955039102644307275309657008810] for Disco.[NamespaceFile2]
...
INFO [Thread-202021] 2014-11-12 04:54:36,914 AntiEntropyService.java (line 764)
[repair #b5ea2f90-6a27-11e4-b912-e1a9f145c444] NamespaceFile2 is fully synced
INFO [AntiEntropySessions:366] 2014-11-12 04:54:36,915 AntiEntropyService.java
(line 698) [repair #b5ea2f90-6a27-11e4-b912-e1a9f145c444] session completed
successfully
So repairs have been running. I dumped the sstables to JSON and this is what I
found:
----------XXX.XXX.XXX.14----------
Disco-NamespaceFile2-ic-4710-Data.db.json - Oct 29 04:48
[
"XXXFILEXXX",
"a96a7f54-49d4-11e4-8185-e0db55018fa4",
1412213845215797
],
Disco-NamespaceFile2-ic-5144-Data.db.json - Nov 12 04:58
NOT FOUND
Disco-NamespaceFile2-ic-5201-Data.db.json
NOT FOUND
----------XXX.XXX.XXX.17----------
Disco-NamespaceFile2-ic-5055-Data.db.json - Oct 30 04:36
[
"XXXFILEXXX",
"a96a7f54-49d4-11e4-8185-e0db55018fa4",
1412213845215797
],
Disco-NamespaceFile2-ic-5472-Data.db.json
NOT FOUND
Disco-NamespaceFile2-ic-5532-Data.db.json
NOT FOUND
----------XXX.XXX.XXX.18----------
Disco-NamespaceFile2-ic-5337-Data.db.json - Nov 2 04:55
[
"XXXFILEXXX",
"545455ed",
1414813165914138,
"d"
],
Disco-NamespaceFile2-ic-5719-Data.db.json - Nov 13 04:43
NOT FOUND
Disco-NamespaceFile2-ic-5748-Data.db.json
[
"XXXFILEXXX",
"a96a7f54-49d4-11e4-8185-e0db55018fa4",
1412213845215797
],
So it seems both XXX.XXX.XXX.14 and XXX.XXX.XXX.17 had the column and on more
recent sstables it is completely gone, suposedly the tombstone has already been
reclaimed. On XXX.XXX.XXX.18 however, we can still see the tombstone on the
first sstable, on the second sstable the column is gone, and then the undeleted
value magically reappears on the last sstable. Since repairs have been running,
is there another possible reason for this? On another note, why haven't repairs
propagated this zombie column to the other nodes?
Any help or pointers where to go next would be appreciated.
Best regards,
André Cruz