Skip to content

Commit 93cf26a

Browse files
committed
Reverted TransportWrapper to its simplest version, fixed tests
1 parent 837d09e commit 93cf26a

File tree

3 files changed

+25
-82
lines changed

3 files changed

+25
-82
lines changed

cluster/src/main/java/io/scalecube/cluster/TransportWrapper.java

Lines changed: 6 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,13 @@
44
import io.scalecube.cluster.transport.api.Transport;
55
import io.scalecube.net.Address;
66
import java.util.List;
7-
import java.util.Map;
8-
import java.util.concurrent.ConcurrentHashMap;
97
import java.util.concurrent.atomic.AtomicInteger;
108
import reactor.core.publisher.Mono;
119

1210
public class TransportWrapper {
1311

1412
private final Transport transport;
1513

16-
private final Map<Member, Mono<Result>> connections = new ConcurrentHashMap<>();
17-
1814
public TransportWrapper(Transport transport) {
1915
this.transport = transport;
2016
}
@@ -27,37 +23,16 @@ public TransportWrapper(Transport transport) {
2723
* @return mono result
2824
*/
2925
public Mono<Message> requestResponse(Member member, Message request) {
30-
return connections
31-
.compute(
32-
member,
33-
(m, resultMono) -> {
34-
if (resultMono == null) {
35-
return requestResponse(member.addresses(), request);
36-
}
37-
return resultMono.flatMap(
38-
result ->
39-
transport
40-
.requestResponse(result.address, request)
41-
.map(message -> new Result(result.address, message)));
42-
})
43-
.map(result -> result.message);
44-
}
45-
46-
private Mono<Result> requestResponse(List<Address> addresses, Message request) {
4726
return Mono.defer(
4827
() -> {
28+
final List<Address> addresses = member.addresses();
4929
final AtomicInteger currentIndex = new AtomicInteger();
5030
return Mono.defer(
5131
() -> {
52-
final int index = currentIndex.getAndIncrement();
53-
return transport.requestResponse(addresses.get(index), request);
32+
final Address address = addresses.get(currentIndex.getAndIncrement());
33+
return transport.requestResponse(address, request);
5434
})
55-
.retry(addresses.size() - 1)
56-
.map(
57-
message -> {
58-
final int index = currentIndex.get() - 1;
59-
return new Result(addresses.get(index), message);
60-
});
35+
.retry(addresses.size() - 1);
6136
});
6237
}
6338

@@ -69,53 +44,16 @@ private Mono<Result> requestResponse(List<Address> addresses, Message request) {
6944
* @return mono result
7045
*/
7146
public Mono<Void> send(Member member, Message request) {
72-
return connections
73-
.compute(
74-
member,
75-
(m, resultMono) -> {
76-
if (resultMono == null) {
77-
return send(member.addresses(), request);
78-
}
79-
return resultMono.flatMap(
80-
result ->
81-
transport
82-
.send(result.address, request)
83-
.thenReturn(new Result(result.address)));
84-
})
85-
.then();
86-
}
87-
88-
private Mono<Result> send(List<Address> addresses, Message request) {
8947
return Mono.defer(
9048
() -> {
49+
final List<Address> addresses = member.addresses();
9150
final AtomicInteger currentIndex = new AtomicInteger();
9251
return Mono.defer(
9352
() -> {
9453
final int index = currentIndex.getAndIncrement();
9554
return transport.send(addresses.get(index), request);
9655
})
97-
.retry(addresses.size() - 1)
98-
.then(
99-
Mono.fromCallable(
100-
() -> {
101-
final int index = currentIndex.get() - 1;
102-
return new Result(addresses.get(index));
103-
}));
56+
.retry(addresses.size() - 1);
10457
});
10558
}
106-
107-
private static class Result {
108-
109-
private final Address address;
110-
private final Message message;
111-
112-
private Result(Address address) {
113-
this(address, null);
114-
}
115-
116-
private Result(Address address, Message message) {
117-
this.address = address;
118-
this.message = message;
119-
}
120-
}
12159
}

cluster/src/test/java/io/scalecube/cluster/TransportWrapperTest.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ void requestResponseShouldWork() {
5757

5858
when(transport.requestResponse(addresses.get(0), request)).thenReturn(Mono.just(response));
5959

60-
StepVerifier.create(transportWrapper.requestResponse(member, request).retry(2))
60+
StepVerifier.create(transportWrapper.requestResponse(member, request))
6161
.assertNext(message -> Assertions.assertSame(response, message, "response"))
6262
.thenCancel()
6363
.verify();
@@ -89,7 +89,7 @@ void requestResponseShouldWorkMemberSingleAddress() {
8989

9090
when(transport.requestResponse(addresses.get(0), request)).thenReturn(Mono.just(response));
9191

92-
StepVerifier.create(transportWrapper.requestResponse(member, request).retry(2))
92+
StepVerifier.create(transportWrapper.requestResponse(member, request))
9393
.assertNext(message -> Assertions.assertSame(response, message, "response"))
9494
.thenCancel()
9595
.verify();
@@ -104,7 +104,7 @@ void requestResponseShouldWorkMemberTwoAddresses() {
104104
.thenReturn(Mono.error(new RuntimeException("Error")));
105105
when(transport.requestResponse(addresses.get(1), request)).thenReturn(Mono.just(response));
106106

107-
StepVerifier.create(transportWrapper.requestResponse(member, request).retry(2))
107+
StepVerifier.create(transportWrapper.requestResponse(member, request))
108108
.assertNext(message -> Assertions.assertSame(response, message, "response"))
109109
.thenCancel()
110110
.verify();
@@ -122,7 +122,7 @@ void requestResponseShouldWorkMemberThreeAddresses() {
122122
.thenReturn(Mono.error(new RuntimeException("Error")));
123123
when(transport.requestResponse(addresses.get(2), request)).thenReturn(Mono.just(response));
124124

125-
StepVerifier.create(transportWrapper.requestResponse(member, request).retry(2))
125+
StepVerifier.create(transportWrapper.requestResponse(member, request))
126126
.assertNext(message -> Assertions.assertSame(response, message, "response"))
127127
.thenCancel()
128128
.verify();
@@ -136,7 +136,7 @@ void requestResponseShouldFailMemberSingleAddress() {
136136
when(transport.requestResponse(addresses.get(0), request))
137137
.thenReturn(Mono.error(new RuntimeException("Error")));
138138

139-
StepVerifier.create(transportWrapper.requestResponse(member, request).retry(2))
139+
StepVerifier.create(transportWrapper.requestResponse(member, request))
140140
.verifyErrorSatisfies(
141141
throwable -> Assertions.assertEquals("Error", throwable.getMessage()));
142142
}
@@ -151,7 +151,7 @@ void requestResponseShouldFailMemberTwoAddresses() {
151151
when(transport.requestResponse(addresses.get(1), request))
152152
.thenReturn(Mono.error(new RuntimeException("Error - 1")));
153153

154-
StepVerifier.create(transportWrapper.requestResponse(member, request).retry(2))
154+
StepVerifier.create(transportWrapper.requestResponse(member, request))
155155
.verifyErrorSatisfies(
156156
throwable -> Assertions.assertEquals("Error - 1", throwable.getMessage()));
157157
}
@@ -169,7 +169,7 @@ void requestResponseShouldFailMemberThreeAddresses() {
169169
when(transport.requestResponse(addresses.get(2), request))
170170
.thenReturn(Mono.error(new RuntimeException("Error - 2")));
171171

172-
StepVerifier.create(transportWrapper.requestResponse(member, request).retry(2))
172+
StepVerifier.create(transportWrapper.requestResponse(member, request))
173173
.verifyErrorSatisfies(
174174
throwable -> Assertions.assertEquals("Error - 2", throwable.getMessage()));
175175
}
@@ -185,7 +185,7 @@ void sendShouldWork() {
185185

186186
when(transport.send(addresses.get(0), request)).thenReturn(Mono.empty());
187187

188-
StepVerifier.create(transportWrapper.send(member, request).retry(2)).verifyComplete();
188+
StepVerifier.create(transportWrapper.send(member, request)).verifyComplete();
189189
}
190190

191191
@Test
@@ -210,7 +210,7 @@ void sendShouldWorkMemberSingleAddress() {
210210

211211
when(transport.send(addresses.get(0), request)).thenReturn(Mono.empty());
212212

213-
StepVerifier.create(transportWrapper.send(member, request).retry(2)).verifyComplete();
213+
StepVerifier.create(transportWrapper.send(member, request)).verifyComplete();
214214
}
215215

216216
@Test
@@ -222,7 +222,7 @@ void sendShouldWorkMemberTwoAddresses() {
222222
.thenReturn(Mono.error(new RuntimeException("Error")));
223223
when(transport.send(addresses.get(1), request)).thenReturn(Mono.empty());
224224

225-
StepVerifier.create(transportWrapper.send(member, request).retry(2)).verifyComplete();
225+
StepVerifier.create(transportWrapper.send(member, request)).verifyComplete();
226226
}
227227

228228
@Test
@@ -237,7 +237,7 @@ void sendShouldWorkMemberThreeAddresses() {
237237
.thenReturn(Mono.error(new RuntimeException("Error")));
238238
when(transport.send(addresses.get(2), request)).thenReturn(Mono.empty());
239239

240-
StepVerifier.create(transportWrapper.send(member, request).retry(2)).verifyComplete();
240+
StepVerifier.create(transportWrapper.send(member, request)).verifyComplete();
241241
}
242242

243243
@Test
@@ -248,7 +248,7 @@ void sendShouldFailMemberSingleAddress() {
248248
when(transport.send(addresses.get(0), request))
249249
.thenReturn(Mono.error(new RuntimeException("Error")));
250250

251-
StepVerifier.create(transportWrapper.send(member, request).retry(2))
251+
StepVerifier.create(transportWrapper.send(member, request))
252252
.verifyErrorSatisfies(
253253
throwable -> Assertions.assertEquals("Error", throwable.getMessage()));
254254
}
@@ -263,7 +263,7 @@ void sendShouldFailMemberTwoAddresses() {
263263
when(transport.send(addresses.get(1), request))
264264
.thenReturn(Mono.error(new RuntimeException("Error - 1")));
265265

266-
StepVerifier.create(transportWrapper.send(member, request).retry(2))
266+
StepVerifier.create(transportWrapper.send(member, request))
267267
.verifyErrorSatisfies(
268268
throwable -> Assertions.assertEquals("Error - 1", throwable.getMessage()));
269269
}
@@ -281,7 +281,7 @@ void sendShouldFailMemberThreeAddresses() {
281281
when(transport.send(addresses.get(2), request))
282282
.thenReturn(Mono.error(new RuntimeException("Error - 2")));
283283

284-
StepVerifier.create(transportWrapper.send(member, request).retry(2))
284+
StepVerifier.create(transportWrapper.send(member, request))
285285
.verifyErrorSatisfies(
286286
throwable -> Assertions.assertEquals("Error - 2", throwable.getMessage()));
287287
}

cluster/src/test/java/io/scalecube/cluster/membership/MembershipProtocolTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ public void testLeaveClusterCameBeforeAlive() {
122122
final Message leavingMessage =
123123
Message.builder()
124124
.qualifier(MembershipProtocolImpl.MEMBERSHIP_GOSSIP)
125+
.sender(anotherMember)
125126
.data(leavingRecord)
126127
.build();
127128

@@ -131,6 +132,7 @@ public void testLeaveClusterCameBeforeAlive() {
131132
final Message addedMessage =
132133
Message.builder()
133134
.qualifier(MembershipProtocolImpl.MEMBERSHIP_GOSSIP)
135+
.sender(anotherMember)
134136
.data(addedRecord)
135137
.build();
136138

@@ -165,6 +167,7 @@ public void testLeaveClusterOnly() {
165167
final Message leavingMessage =
166168
Message.builder()
167169
.qualifier(MembershipProtocolImpl.MEMBERSHIP_GOSSIP)
170+
.sender(anotherMember)
168171
.data(leavingRecord)
169172
.build();
170173

@@ -197,6 +200,7 @@ public void testLeaveClusterOnSuspectedNode() {
197200
final Message suspectMessage =
198201
Message.builder()
199202
.qualifier(MembershipProtocolImpl.MEMBERSHIP_GOSSIP)
203+
.sender(anotherMember)
200204
.data(suspectedNode)
201205
.build();
202206

@@ -208,6 +212,7 @@ public void testLeaveClusterOnSuspectedNode() {
208212
final Message leavingMessage =
209213
Message.builder()
210214
.qualifier(MembershipProtocolImpl.MEMBERSHIP_GOSSIP)
215+
.sender(anotherMember)
211216
.data(leavingRecord)
212217
.build();
213218

0 commit comments

Comments
 (0)