Hold off on running scrub (but yes it's an online operation). This is an issue with the token ranges. 

What version are you using ? 
Are you using vNodes ?
Can you share the output of nodetool ring (if no vnodes) or nodetool status (if using vnodes) ?


Aaron Morton
Freelance Cassandra Consultant
New Zealand


On 2/05/2013, at 3:08 AM, Haithem Jarraya <haithem.jarraya@struq.com> wrote:

Can I run scrub while the node is in the ring and receiving writes?
Or I should disable thrift before?

On 1 May 2013 15:52, <moshe.kranc@barclays.com> wrote:

Sounds like a job for “nodetool scrub”, which rewrites the SStable rows in the correct order. After the scrub, nodetool repair should succeed.


From: Haithem Jarraya [mailto:haithem.jarraya@struq.com]
Sent: Wednesday, May 01, 2013 5:46 PM
To: user@cassandra.apache.org
Subject: Repair session failed




I am seeing this error message during repair,


 INFO [AntiEntropyStage:1] 2013-05-01 14:30:54,300 AntiEntropyService.java (line 764) [repair #ed104480-b26a-11e2-af9b-05179fa66b76] mycolumnfamily is fully synced (1 remaining column family to sync for this session)

ERROR [Thread-12725] 2013-05-01 14:30:54,304 StorageService.java (line 2420) Repair session failed:

java.lang.IllegalArgumentException: Requested range intersects a local range but is not fully contained in one; this would lead to imprecise repair

        at org.apache.cassandra.service.AntiEntropyService.getNeighbors(AntiEntropyService.java:175)

        at org.apache.cassandra.service.AntiEntropyService$RepairSession.<init>(AntiEntropyService.java:621)

        at org.apache.cassandra.service.AntiEntropyService$RepairSession.<init>(AntiEntropyService.java:610)

        at org.apache.cassandra.service.AntiEntropyService.submitRepairSession(AntiEntropyService.java:127)

        at org.apache.cassandra.service.StorageService.forceTableRepair(StorageService.java:2480)

        at org.apache.cassandra.service.StorageService$4.runMayThrow(StorageService.java:2416)

        at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)

        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)

        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

        at java.util.concurrent.FutureTask.run(FutureTask.java:138)

        at java.lang.Thread.run(Thread.java:662)



what does it mean imprecise repair?

Is it maybe because I went over the gcgrade period?

What you do if you go over that period?

Any hint will be valuable, 

Also I noticed when I run a repair on different node, I see a message like this


[2013-05-01 14:30:54,305] Starting repair command #5, repairing 1120 ranges for keyspace struqrealtime


I have couple of questions, why I have repair command #5?

And why the ranges values changes from one node to another?



Many Thanks,




This message is for information purposes only, it is not a recommendation, advice, offer or solicitation to buy or sell a product or service nor an official confirmation of any transaction. It is directed at persons who are professionals and is not intended for retail customer use. Intended for recipient only. This message is subject to the terms at: www.barclays.com/emaildisclaimer.

For important disclosures, please see: www.barclays.com/salesandtradingdisclaimer regarding market commentary from Barclays Sales and/or Trading, who are active market participants; and in respect of Barclays Research, including disclosures relating to specific issuers, please see http://publicresearch.barclays.com.