You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "David Capwell (Jira)" <ji...@apache.org> on 2025/07/18 18:58:00 UTC
[jira] [Commented] (CASSANDRA-20670) IntrusiveStack.accumulate is not accumulating correctly
[ https://issues.apache.org/jira/browse/CASSANDRA-20670?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18008126#comment-18008126 ]
David Capwell commented on CASSANDRA-20670:
-------------------------------------------
working on the merge now...
> IntrusiveStack.accumulate is not accumulating correctly
> -------------------------------------------------------
>
> Key: CASSANDRA-20670
> URL: https://issues.apache.org/jira/browse/CASSANDRA-20670
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Legacy/Core
> Reporter: Yuqi Yan
> Assignee: Yuqi Yan
> Priority: Normal
> Time Spent: 10m
> Remaining Estimate: 0h
>
> {code:java}
> protected static <T extends IntrusiveStack<T>> long accumulate(T list, LongAccumulator<T> accumulator, long initialValue)
> {
> long value = initialValue;
> while (list != null)
> {
> value = accumulator.apply(list, initialValue);
> ^^^
> list = list.next;
> }
> return value;
> } {code}
> Seems we're restarting from the beginning every time when accumulating. This is used in Paxos V2 when aggregating the responses from peers.
> Here we'll always return 1 even there are more than 1 failures returned by peer nodes - hence we'll be never throwing Read/WriteFailureExceptions if we have 3 nodes and using quorum. (failure count will always be 1, poll_size = 3, poll_size - failure = 2 == quorum hence not considered a "failure")
> Added a simple unit test around FailureRecordingCallback to reproduce this
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org