From ef949d481e3fa2ecdf0794bf3d236f6d86204e46 Mon Sep 17 00:00:00 2001 From: Dmitry Kropachev Date: Tue, 10 Feb 2026 19:04:58 -0400 Subject: [PATCH 1/2] Remove commons-lang3 dependency from core module commons-lang3 was pulled in transitively via the optional gremlin-core dependency but used directly in production code (DefaultLoadBalancingPolicy). Since gremlin-core is optional, consumers would not get commons-lang3 transitively, risking NoClassDefFoundError at runtime. Replace Pair with int[] in moveReplicasToFront() and ArrayUtils.addAll() with standard Arrays.copyOf()/System.arraycopy() in VectorCodecTest. --- .../loadbalancing/DefaultLoadBalancingPolicy.java | 12 +++++------- .../internal/core/type/codec/VectorCodecTest.java | 7 +++++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/com/datastax/oss/driver/internal/core/loadbalancing/DefaultLoadBalancingPolicy.java b/core/src/main/java/com/datastax/oss/driver/internal/core/loadbalancing/DefaultLoadBalancingPolicy.java index f798ff033c2..2d1a283f657 100644 --- a/core/src/main/java/com/datastax/oss/driver/internal/core/loadbalancing/DefaultLoadBalancingPolicy.java +++ b/core/src/main/java/com/datastax/oss/driver/internal/core/loadbalancing/DefaultLoadBalancingPolicy.java @@ -51,7 +51,6 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.atomic.AtomicLongArray; import net.jcip.annotations.ThreadSafe; -import org.apache.commons.lang3.tuple.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -202,10 +201,10 @@ public Queue newQueryPlanRegular(@Nullable Request request, @Nullable Sess Object[] currentNodes = getLiveNodes().dc(getLocalDatacenter()).toArray(); int replicaCount = 0; // in currentNodes if (!replicas.isEmpty()) { - Pair counts = moveReplicasToFront(currentNodes, replicas); - replicaCount = counts.getLeft(); + int[] counts = moveReplicasToFront(currentNodes, replicas); + replicaCount = counts[0]; - int localRackReplicaCount = counts.getRight(); // in currentNodes + int localRackReplicaCount = counts[1]; // in currentNodes if (replicaCount > 1) { shuffleLocalRackReplicasAndReplicas(currentNodes, replicaCount, localRackReplicaCount); @@ -249,8 +248,7 @@ private static Object[] moveNonLocalReplicasToTheEnd(List replicas, String return orderedReplicas; } - private Pair moveReplicasToFront( - Object[] currentNodes, List allReplicas) { + private int[] moveReplicasToFront(Object[] currentNodes, List allReplicas) { int replicaCount = 0, localRackReplicaCount = 0; for (int i = 0; i < currentNodes.length; i++) { Node node = (Node) currentNodes[i]; @@ -265,7 +263,7 @@ private Pair moveReplicasToFront( replicaCount++; } } - return Pair.of(replicaCount, localRackReplicaCount); + return new int[] {replicaCount, localRackReplicaCount}; } private void shuffleLocalRackReplicasAndReplicas( diff --git a/core/src/test/java/com/datastax/oss/driver/internal/core/type/codec/VectorCodecTest.java b/core/src/test/java/com/datastax/oss/driver/internal/core/type/codec/VectorCodecTest.java index 17c78514127..fe8e9e7be0f 100644 --- a/core/src/test/java/com/datastax/oss/driver/internal/core/type/codec/VectorCodecTest.java +++ b/core/src/test/java/com/datastax/oss/driver/internal/core/type/codec/VectorCodecTest.java @@ -34,8 +34,8 @@ import com.tngtech.java.junit.dataprovider.UseDataProvider; import java.nio.ByteBuffer; import java.time.LocalTime; +import java.util.Arrays; import java.util.HashMap; -import org.apache.commons.lang3.ArrayUtils; import org.junit.Test; import org.junit.runner.RunWith; @@ -128,7 +128,10 @@ public void should_throw_on_encode_with_too_few_elements(TestDataContainer testD @Test @UseDataProvider("dataProvider") public void should_throw_on_encode_with_too_many_elements(TestDataContainer testData) { - Object[] doubled = ArrayUtils.addAll(testData.getValues(), testData.getValues()); + Object[] first = testData.getValues(); + Object[] second = testData.getValues(); + Object[] doubled = Arrays.copyOf(first, first.length + second.length); + System.arraycopy(second, 0, doubled, first.length, second.length); TypeCodec> codec = getCodec(testData.getDataType()); assertThatThrownBy(() -> codec.encode(CqlVector.newInstance(doubled), ProtocolVersion.DEFAULT)) .isInstanceOf(IllegalArgumentException.class); From 868a4639424b7b4596c01b8a013b4a17497cd8ae Mon Sep 17 00:00:00 2001 From: Dmitry Kropachev Date: Tue, 10 Feb 2026 19:35:33 -0400 Subject: [PATCH 2/2] fix: xml formatting in root pom.xml Fix pre-existing xml-format-maven-plugin check failure. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b153214f7d0..4e1ac550503 100644 --- a/pom.xml +++ b/pom.xml @@ -100,7 +100,7 @@ ${skipTests} false false - +