This is an automated email from the ASF dual-hosted git repository. dcapwell pushed a commit to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-4.1 by this push: new 4962f3da3f IntrusiveStack.accumulate is not accumulating correctly 4962f3da3f is described below commit 4962f3da3f7280004c153263206a67dbddfca25e Author: Yuqi Yan <yukei0...@gmail.com> AuthorDate: Fri Jul 18 12:12:45 2025 -0700 IntrusiveStack.accumulate is not accumulating correctly patch by Yuqi Yan; reviewed by Benedict Elliott Smith, David Capwell for CASSANDRA-20670 --- CHANGES.txt | 1 + .../cassandra/utils/concurrent/IntrusiveStack.java | 2 +- .../service/FailureRecordingCallbackTest.java | 50 ++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 20c6c89a98..5e4703f828 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.1.10 + * IntrusiveStack.accumulate is not accumulating correctly (CASSANDRA-20670) * Add nodetool get/setguardrailsconfig commands (CASSANDRA-19552) Merged from 4.0: * Ensure prepared_statement INSERT timestamp precedes eviction DELETE (CASSANDRA-19703) diff --git a/src/java/org/apache/cassandra/utils/concurrent/IntrusiveStack.java b/src/java/org/apache/cassandra/utils/concurrent/IntrusiveStack.java index e61d56545f..6998c2f288 100644 --- a/src/java/org/apache/cassandra/utils/concurrent/IntrusiveStack.java +++ b/src/java/org/apache/cassandra/utils/concurrent/IntrusiveStack.java @@ -155,7 +155,7 @@ public class IntrusiveStack<T extends IntrusiveStack<T>> implements Iterable<T> long value = initialValue; while (list != null) { - value = accumulator.apply(list, initialValue); + value = accumulator.apply(list, value); list = list.next; } return value; diff --git a/test/unit/org/apache/cassandra/service/FailureRecordingCallbackTest.java b/test/unit/org/apache/cassandra/service/FailureRecordingCallbackTest.java new file mode 100644 index 0000000000..609ae0894d --- /dev/null +++ b/test/unit/org/apache/cassandra/service/FailureRecordingCallbackTest.java @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.service; + +import java.net.UnknownHostException; + +import org.junit.Assert; +import org.junit.Test; + +import org.apache.cassandra.exceptions.RequestFailureReason; +import org.apache.cassandra.locator.InetAddressAndPort; +import org.apache.cassandra.net.Message; + +public class FailureRecordingCallbackTest +{ + @Test + public void testFailuresCount() throws UnknownHostException + { + FailureRecordingCallback cb = new FailureRecordingCallback() + { + + @Override + public void onResponse(Message msg) {} + @Override + public boolean invokeOnFailure() { return super.invokeOnFailure();} + @Override + public boolean trackLatencyForSnitch() { return super.trackLatencyForSnitch();} + }; + cb.onFailureWithMutex(InetAddressAndPort.getByName("127.0.0.1"), RequestFailureReason.UNKNOWN); + cb.onFailureWithMutex(InetAddressAndPort.getByName("127.0.0.2"), RequestFailureReason.UNKNOWN); + cb.onFailureWithMutex(InetAddressAndPort.getByName("127.0.0.3"), RequestFailureReason.TIMEOUT); + Assert.assertEquals(2, cb.failureReasonsAsMap().failureCount()); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org