From 47fc81db9c028533a7afbc891122311450c26a77 Mon Sep 17 00:00:00 2001 From: "Doroszlai, Attila" Date: Wed, 13 Dec 2023 18:28:53 +0100 Subject: [PATCH] RATIS-1942. GrpcLogAppender has ILLEGAL TRANSITION: STARTING -> STARTING --- .../grpc/server/GrpcServerProtocolClient.java | 2 +- .../ratis/server/impl/MiniRaftCluster.java | 37 ++++++++++--------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java index 392864535c..dd4e199b25 100644 --- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java +++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcServerProtocolClient.java @@ -62,7 +62,7 @@ public class GrpcServerProtocolClient implements Closeable { public GrpcServerProtocolClient(RaftPeer target, int flowControlWindow, TimeDuration requestTimeout, GrpcTlsConfig tlsConfig, boolean separateHBChannel) { raftPeerId = target.getId(); - LOG.info("Build channel for {}", raftPeerId); + LOG.info("Build channel for {}", target); useSeparateHBChannel = separateHBChannel; channel = buildChannel(target, flowControlWindow, tlsConfig); blockingStub = RaftServerProtocolServiceGrpc.newBlockingStub(channel); diff --git a/ratis-server/src/test/java/org/apache/ratis/server/impl/MiniRaftCluster.java b/ratis-server/src/test/java/org/apache/ratis/server/impl/MiniRaftCluster.java index 35916db0c6..795ca6d4f7 100644 --- a/ratis-server/src/test/java/org/apache/ratis/server/impl/MiniRaftCluster.java +++ b/ratis-server/src/test/java/org/apache/ratis/server/impl/MiniRaftCluster.java @@ -250,27 +250,27 @@ public PeerChanges(RaftPeer[] all, RaftPeer[] newPeers, RaftPeer[] removed) { public static RaftGroup initRaftGroup(Collection ids, Collection listenerIds) { Iterator addresses = NetUtils.createLocalServerAddress(4 * (ids.size() + listenerIds.size())).iterator(); Stream peer = ids.stream() - .map(RaftPeerId::valueOf) - .map(id -> RaftPeer.newBuilder().setId(id) - .setAddress(addresses.next()) - .setAdminAddress(addresses.next()) - .setClientAddress(addresses.next()) - .setDataStreamAddress(addresses.next()) - .build()); + .map(id -> RaftPeer.newBuilder().setId(id)) + .map(p -> assignAddresses(p, addresses)) + .map(RaftPeer.Builder::build); Stream listener = listenerIds.stream() - .map(RaftPeerId::valueOf) - .map(id -> RaftPeer.newBuilder().setId(id) - .setAddress(addresses.next()) - .setAdminAddress(addresses.next()) - .setClientAddress(addresses.next()) - .setDataStreamAddress(addresses.next()) - .setStartupRole(RaftProtos.RaftPeerRole.LISTENER) - .build()); + .map(id -> RaftPeer.newBuilder().setId(id)) + .map(p -> assignAddresses(p, addresses)) + .map(p -> p.setStartupRole(RaftProtos.RaftPeerRole.LISTENER)) + .map(RaftPeer.Builder::build); final RaftPeer[] peers = Stream.concat(peer, listener).toArray(RaftPeer[]::new); return RaftGroup.valueOf(RaftGroupId.randomId(), peers); } + private static RaftPeer.Builder assignAddresses(RaftPeer.Builder builder, Iterator addresses) { + return builder + .setAddress(addresses.next()) + .setAdminAddress(addresses.next()) + .setClientAddress(addresses.next()) + .setDataStreamAddress(addresses.next()); + } + private final Supplier rootTestDir = JavaUtils.memoize( () -> new File(BaseTest.getRootTestDir(), JavaUtils.getClassSimpleName(getClass()) + Integer.toHexString(ThreadLocalRandom.current().nextInt()))); @@ -468,10 +468,13 @@ public PeerChanges addNewPeers(String[] ids, boolean startNewPeer, if (emptyPeer) { raftGroup = RaftGroup.valueOf(group.getGroupId(), Collections.emptyList()); } else { + Iterator addresses = NetUtils.createLocalServerAddress(4 * ids.length).iterator(); final Collection newPeers = StreamSupport.stream(peerIds.spliterator(), false) .map(id -> RaftPeer.newBuilder().setId(id) - .setStartupRole(startRole) - .build()).collect(Collectors.toSet()); + .setStartupRole(startRole)) + .map(p -> assignAddresses(p, addresses)) + .map(RaftPeer.Builder::build) + .collect(Collectors.toSet()); newPeers.addAll(group.getPeers()); raftGroup = RaftGroup.valueOf(group.getGroupId(), newPeers); }