[
https://issues.apache.org/jira/browse/CASSANDRA-4417?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13453058#comment-13453058
]
Sylvain Lebresne commented on CASSANDRA-4417:
---------------------------------------------
That's a very good point. Counters do rely on the fact that nodes do not lose
the increments they are "leader" for (or that they don't reuse the same nodeId
if they do), but unless the commit log uses batch mode, this can happen. And
that will lead to exactly the exception seen here, so I'd say there's a very
good chance this is the problem.
I'll note that if that is indeed a problem, it's very possible that the error
logged happens only much later (after the "unclean" shutdown) and on some other
node than the one having died. So not being able to correlate the error to an
unclean shutdown doesn't really indicate that it's not related.
The consequence of this happening is that the increments that have been lost
with un-synced commit log are lost. Meaning that with the default
configuration, one could lose up to 10 seconds of the increments (for which the
dying node is leader). However, I think it is also possible to have results
from read to miss slightly more than that, though that last part should fix
itself if the counter is incremented again.
As for the error message logged, it's possible that lots of them are logged
even though only a small number of counters are affected since it's print
during column reconciliation and thus could be logged many time for the same
counter.
A simple "workaround" is to use batch commit log, but that has a potentially
important performance impact.
Another solution I've though of would be to try to detect unclean shutdown (by
marking something during clean shutdown and checking for that at startup) and
if we detect one, to renew the nodeId. The problem with that is that this
potentially mean renewing the nodeId pretty often. And each time we do that,
the internal representation of counter grow and I'm really afraid it will be a
problem in that case. And while we have some mechanism to shrink back counter
by merging sub-counts when the nodeId is renewed too often, that mechanism
assumes that the node owning the nodeId has the more up-to-date value for this
sub-count, which is exactly the problem here. So overall I don't have any good
idea to fix this. Other ideas?
> invalid counter shard detected
> -------------------------------
>
> Key: CASSANDRA-4417
> URL: https://issues.apache.org/jira/browse/CASSANDRA-4417
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.1.1
> Environment: Amazon Linux
> Reporter: Senthilvel Rangaswamy
>
> Seeing errors like these:
> 2012-07-06_07:00:27.22662 ERROR 07:00:27,226 invalid counter shard detected;
> (17bfd850-ac52-11e1-0000-6ecd0b5b61e7, 1, 13) and
> (17bfd850-ac52-11e1-0000-6ecd0b5b61e7, 1, 1) differ only in count; will pick
> highest to self-heal; this indicates a bug or corruption generated a bad
> counter shard
> What does it mean ?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira