This is an automated email from the ASF dual-hosted git repository.
apolovtsev pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new e4fb45e1313 IGNITE-28291 Update ScaleCube to 2.7.7 (Java11-compatible)
(#7816)
e4fb45e1313 is described below
commit e4fb45e13130e576367cd74a45fc8081b0e85287
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Thu Mar 19 11:57:23 2026 +0200
IGNITE-28291 Update ScaleCube to 2.7.7 (Java11-compatible) (#7816)
---
build.gradle | 4 ++++
gradle/libs.versions.toml | 4 ++--
.../network/scalecube/ScaleCubeClusterService.java | 20 +++++---------------
.../ScaleCubeDirectMarshallerTransport.java | 17 +++++++----------
.../network/scalecube/ScaleCubeTopologyService.java | 9 ++++++---
.../ScaleCubeDirectMarshallerTransportTest.java | 5 ++---
.../scalecube/ScaleCubeTopologyServiceTest.java | 13 +++++--------
settings.gradle | 1 +
8 files changed, 32 insertions(+), 41 deletions(-)
diff --git a/build.gradle b/build.gradle
index f62aa2775a3..dbe1b130f32 100644
--- a/build.gradle
+++ b/build.gradle
@@ -180,6 +180,10 @@ subprojects {
}
}
+ maven {
+ url = uri('https://jitpack.io')
+ }
+
mavenLocal()
}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index d42ee32d8d5..5ab3325bd2b 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -60,7 +60,7 @@ hamcrest = "3.0"
hamcrestOptional = "2.0.0"
hamcrestPath = "1.0.1"
hamcrestJson = "0.3"
-scalecube = "2.6.17"
+scalecube = "2.7.7-java11"
calcite = "1.41.0"
value = "2.12.1"
janino = "3.1.12"
@@ -251,7 +251,7 @@ spoon-core = { module = "fr.inria.gforge.spoon:spoon-core",
version.ref = "spoon
fastutil-core = { module = "it.unimi.dsi:fastutil-core", version.ref =
"fastutil" }
-scalecube-cluster = { module = "io.scalecube:scalecube-cluster", version.ref =
"scalecube" }
+scalecube-cluster = { module =
"com.github.gridgain.scalecube-cluster:scalecube-cluster", version.ref =
"scalecube" }
kryo = { module = "com.esotericsoftware:kryo", version.ref = "kryo" }
diff --git
a/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeClusterService.java
b/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeClusterService.java
index 62a4fb881f7..31e92094eb8 100644
---
a/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeClusterService.java
+++
b/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeClusterService.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.network.scalecube;
import static io.scalecube.cluster.membership.MembershipEvent.createAdded;
+import static java.util.stream.Collectors.toList;
import static
org.apache.ignite.internal.util.CompletableFutures.nullCompletedFuture;
import static org.apache.ignite.lang.ErrorGroups.Common.INTERNAL_ERR;
import static
org.apache.ignite.lang.ErrorGroups.Network.ADDRESS_UNRESOLVED_ERR;
@@ -27,12 +28,10 @@ import io.scalecube.cluster.ClusterImpl;
import io.scalecube.cluster.ClusterMessageHandler;
import io.scalecube.cluster.membership.MembershipEvent;
import io.scalecube.cluster.metadata.MetadataCodec;
-import io.scalecube.net.Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
-import java.util.Collection;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@@ -40,7 +39,6 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.Collectors;
import org.apache.ignite.internal.failure.FailureProcessor;
import org.apache.ignite.internal.lang.IgniteInternalException;
import org.apache.ignite.internal.logger.IgniteLogger;
@@ -291,13 +289,15 @@ public class ScaleCubeClusterService implements
ClusterService {
}
private ClusterImpl createCluster() {
- var transport = new
ScaleCubeDirectMarshallerTransport(parseAddress(localNode.address()),
messagingService, messageFactory);
+ var transport = new
ScaleCubeDirectMarshallerTransport(localNode.address(), messagingService,
messageFactory);
+
+ List<String> seedMembers =
nodeFinder.findNodes().stream().map(NetworkAddress::toString).collect(toList());
ClusterConfig clusterConfig =
clusterConfig(config.membership().value())
.memberId(localNode.id().toString())
.memberAlias(localNode.name())
.transport(opts -> opts.transportFactory(transportConfig ->
transport))
- .membership(opts ->
opts.seedMembers(parseAddresses(nodeFinder.findNodes())))
+ .membership(opts -> opts.seedMembers(seedMembers))
.metadataCodec(METADATA_CODEC);
return new ClusterImpl(clusterConfig)
@@ -351,16 +351,6 @@ public class ScaleCubeClusterService implements
ClusterService {
return new
UserObjectSerializationContext(userObjectDescriptorRegistry,
userObjectDescriptorFactory, userObjectMarshaller);
}
- private static List<Address> parseAddresses(Collection<NetworkAddress>
addresses) {
- return addresses.stream()
- .map(ScaleCubeClusterService::parseAddress)
- .collect(Collectors.toList());
- }
-
- private static Address parseAddress(NetworkAddress address) {
- return Address.create(address.host(), address.port());
- }
-
private void shutdownCluster() {
ClusterImpl cluster = this.cluster;
diff --git
a/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeDirectMarshallerTransport.java
b/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeDirectMarshallerTransport.java
index 7222f4c2719..f543bbeab19 100644
---
a/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeDirectMarshallerTransport.java
+++
b/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeDirectMarshallerTransport.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.network.scalecube;
import io.scalecube.cluster.transport.api.Message;
import io.scalecube.cluster.transport.api.Transport;
-import io.scalecube.net.Address;
import java.util.Map;
import java.util.Objects;
import org.apache.ignite.internal.lang.IgniteInternalException;
@@ -66,7 +65,7 @@ class ScaleCubeDirectMarshallerTransport implements Transport
{
private final NetworkMessagesFactory messageFactory;
/** Node address. */
- private final Address localAddress;
+ private final String localAddress;
/**
* Constructor.
@@ -76,11 +75,11 @@ class ScaleCubeDirectMarshallerTransport implements
Transport {
* @param messageFactory Message factory.
*/
ScaleCubeDirectMarshallerTransport(
- Address localAddress,
+ NetworkAddress localAddress,
MessagingService messagingService,
NetworkMessagesFactory messageFactory
) {
- this.localAddress = localAddress;
+ this.localAddress = localAddress.toString();
this.messagingService = messagingService;
this.messageFactory = messageFactory;
@@ -110,7 +109,7 @@ class ScaleCubeDirectMarshallerTransport implements
Transport {
}
@Override
- public Address address() {
+ public String address() {
return localAddress;
}
@@ -130,10 +129,8 @@ class ScaleCubeDirectMarshallerTransport implements
Transport {
}
@Override
- public Mono<Void> send(Address address, Message message) {
- var addr = new NetworkAddress(address.host(), address.port());
-
- return Mono.fromFuture(() -> messagingService.send(addr,
SCALE_CUBE_CHANNEL_TYPE, fromMessage(message)));
+ public Mono<Void> send(String address, Message message) {
+ return Mono.fromFuture(() ->
messagingService.send(NetworkAddress.from(address), SCALE_CUBE_CHANNEL_TYPE,
fromMessage(message)));
}
/**
@@ -201,7 +198,7 @@ class ScaleCubeDirectMarshallerTransport implements
Transport {
}
@Override
- public Mono<Message> requestResponse(Address address, Message request) {
+ public Mono<Message> requestResponse(String address, Message request) {
return Mono.create(sink -> {
Objects.requireNonNull(request, "request must be not null");
Objects.requireNonNull(request.correlationId(), "correlationId
must be not null");
diff --git
a/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyService.java
b/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyService.java
index f9949236a6c..5e57a949989 100644
---
a/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyService.java
+++
b/modules/network/src/main/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyService.java
@@ -320,9 +320,12 @@ final class ScaleCubeTopologyService extends
AbstractTopologyService {
* @return Cluster node.
*/
private static InternalClusterNode fromMember(Member member, @Nullable
NodeMetadata nodeMetadata) {
- var addr = new NetworkAddress(member.address().host(),
member.address().port());
-
- return new ClusterNodeImpl(UUID.fromString(member.id()),
member.alias(), addr, nodeMetadata);
+ return new ClusterNodeImpl(
+ UUID.fromString(member.id()),
+ member.alias(),
+ NetworkAddress.from(member.address()),
+ nodeMetadata
+ );
}
diff --git
a/modules/network/src/test/java/org/apache/ignite/internal/network/scalecube/ScaleCubeDirectMarshallerTransportTest.java
b/modules/network/src/test/java/org/apache/ignite/internal/network/scalecube/ScaleCubeDirectMarshallerTransportTest.java
index 814ea1d315c..3e95895bbce 100644
---
a/modules/network/src/test/java/org/apache/ignite/internal/network/scalecube/ScaleCubeDirectMarshallerTransportTest.java
+++
b/modules/network/src/test/java/org/apache/ignite/internal/network/scalecube/ScaleCubeDirectMarshallerTransportTest.java
@@ -24,7 +24,6 @@ import static org.mockito.Mockito.any;
import static org.mockito.Mockito.when;
import io.scalecube.cluster.transport.api.Message;
-import io.scalecube.net.Address;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.internal.network.MessagingService;
import org.apache.ignite.internal.network.NetworkMessagesFactory;
@@ -47,7 +46,7 @@ class ScaleCubeDirectMarshallerTransportTest extends
BaseIgniteAbstractTest {
@BeforeEach
void createAndStartTransport() {
transport = new ScaleCubeDirectMarshallerTransport(
- Address.create("localhost", 3000),
+ new NetworkAddress("localhost", 3000),
messagingService,
new NetworkMessagesFactory()
);
@@ -66,7 +65,7 @@ class ScaleCubeDirectMarshallerTransportTest extends
BaseIgniteAbstractTest {
void transportSendsByAddress() {
when(messagingService.send(any(NetworkAddress.class), any(),
any())).thenReturn(nullCompletedFuture());
- CompletableFuture<Void> future =
transport.send(Address.create("localhost", 3001),
Message.withData("test").build()).toFuture();
+ CompletableFuture<Void> future = transport.send("localhost:3001",
Message.withData("test").build()).toFuture();
assertThat(future, willCompleteSuccessfully());
}
diff --git
a/modules/network/src/test/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyServiceTest.java
b/modules/network/src/test/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyServiceTest.java
index b3290cc0e7d..71cdcd854d9 100644
---
a/modules/network/src/test/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyServiceTest.java
+++
b/modules/network/src/test/java/org/apache/ignite/internal/network/scalecube/ScaleCubeTopologyServiceTest.java
@@ -32,7 +32,6 @@ import static
org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import io.scalecube.cluster.Member;
import io.scalecube.cluster.membership.MembershipEvent;
-import io.scalecube.net.Address;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
@@ -50,8 +49,8 @@ import org.junit.jupiter.api.extension.ExtendWith;
class ScaleCubeTopologyServiceTest {
private final ScaleCubeTopologyService topologyService = new
ScaleCubeTopologyService();
- private final Member member1 = new Member(new UUID(0, 1).toString(),
"first", Address.create("host", 1001), "default");
- private final Member member2 = new Member(new UUID(0, 2).toString(),
"second", Address.create("host", 1002), "default");
+ private final Member member1 = new Member(new UUID(0, 1).toString(),
"first", "host:1001", "default");
+ private final Member member2 = new Member(new UUID(0, 2).toString(),
"second", "host:1002", "default");
@Test
void addedEventAddsNodeToTopology() {
@@ -96,7 +95,7 @@ class ScaleCubeTopologyServiceTest {
void getByAddressWorksWithConcurrentModifications(@InjectExecutorService
ExecutorService executor) {
testGetNodeWorksWithConcurrentModifications(
executor,
- member -> topologyService.getByAddress(new
NetworkAddress(member.address().host(), member.address().port()))
+ member ->
topologyService.getByAddress(NetworkAddress.from(member.address()))
);
}
@@ -109,7 +108,7 @@ class ScaleCubeTopologyServiceTest {
@InjectExecutorService ExecutorService executor,
Function<Member, InternalClusterNode> getter
) {
- Member member = new Member(randomUUID().toString(), "test",
Address.create("host", 1001), "default");
+ Member member = new Member(randomUUID().toString(), "test",
"host:1001", "default");
AtomicBoolean proceed = new AtomicBoolean(true);
@@ -146,9 +145,7 @@ class ScaleCubeTopologyServiceTest {
InternalClusterNode firstByConsistentId =
topologyService.getByConsistentId("first");
assertThatMatchesFirstMemberNewVersion(firstByConsistentId,
member1NewVersion);
- InternalClusterNode firstByAddress = topologyService.getByAddress(
- new NetworkAddress(member1.address().host(),
member1.address().port())
- );
+ InternalClusterNode firstByAddress =
topologyService.getByAddress(NetworkAddress.from(member1.address()));
assertThatMatchesFirstMemberNewVersion(firstByAddress,
member1NewVersion);
}
diff --git a/settings.gradle b/settings.gradle
index a4598996721..801925571a9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -234,6 +234,7 @@ dependencyResolutionManagement {
repositories {
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'https://repo.maven.apache.org/maven2/' }
+ maven { url 'https://jitpack.io' }
}
versionCatalogs {