Skip to content

Commit 73b9fd9

Browse files
committed
Ensure sendProcessor is disposed
1 parent 03e0e4b commit 73b9fd9

File tree

10 files changed

+238
-258
lines changed

10 files changed

+238
-258
lines changed

rsocket-core/src/main/java/io/rsocket/AbstractRSocket.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,19 @@ public abstract class AbstractRSocket implements RSocket {
3131

3232
@Override
3333
public Mono<Void> fireAndForget(Payload payload) {
34+
payload.release();
3435
return Mono.error(new UnsupportedOperationException("Fire and forget not implemented."));
3536
}
3637

3738
@Override
3839
public Mono<Payload> requestResponse(Payload payload) {
40+
payload.release();
3941
return Mono.error(new UnsupportedOperationException("Request-Response not implemented."));
4042
}
4143

4244
@Override
4345
public Flux<Payload> requestStream(Payload payload) {
46+
payload.release();
4447
return Flux.error(new UnsupportedOperationException("Request-Stream not implemented."));
4548
}
4649

@@ -51,6 +54,7 @@ public Flux<Payload> requestChannel(Publisher<Payload> payloads) {
5154

5255
@Override
5356
public Mono<Void> metadataPush(Payload payload) {
57+
payload.release();
5458
return Mono.error(new UnsupportedOperationException("Metadata-Push not implemented."));
5559
}
5660

rsocket-core/src/main/java/io/rsocket/Frame.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,7 @@ public Frame touch(@Nullable Object hint) {
135135
return this;
136136
}
137137

138-
/**
139-
* Called once {@link #refCnt()} is equals 0.
140-
*/
138+
/** Called once {@link #refCnt()} is equals 0. */
141139
@Override
142140
protected void deallocate() {
143141
content.release();

rsocket-core/src/main/java/io/rsocket/KeepAliveHandler.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@
88
import reactor.core.publisher.MonoProcessor;
99
import reactor.core.publisher.UnicastProcessor;
1010

11-
abstract class KeepAliveHandler {
11+
abstract class KeepAliveHandler implements Disposable {
1212
private final KeepAlive keepAlive;
1313
private final UnicastProcessor<Frame> sent = UnicastProcessor.create();
1414
private final MonoProcessor<KeepAlive> timeout = MonoProcessor.create();
15-
private final Flux<Long> interval;
1615
private Disposable intervalDisposable;
1716
private volatile long lastReceivedMillis;
1817

@@ -26,20 +25,17 @@ static KeepAliveHandler ofClient(KeepAlive keepAlive) {
2625

2726
private KeepAliveHandler(KeepAlive keepAlive) {
2827
this.keepAlive = keepAlive;
29-
this.interval = Flux.interval(Duration.ofMillis(keepAlive.getTickPeriod()));
30-
}
31-
32-
public void start() {
3328
this.lastReceivedMillis = System.currentTimeMillis();
34-
intervalDisposable = interval.subscribe(v -> onIntervalTick());
29+
this.intervalDisposable =
30+
Flux.interval(Duration.ofMillis(keepAlive.getTickPeriod()))
31+
.subscribe(v -> onIntervalTick());
3532
}
3633

37-
public void stop() {
34+
@Override
35+
public void dispose() {
3836
sent.onComplete();
3937
timeout.onComplete();
40-
if (intervalDisposable != null) {
41-
intervalDisposable.dispose();
42-
}
38+
intervalDisposable.dispose();
4339
}
4440

4541
public void receive(Frame keepAliveFrame) {

0 commit comments

Comments
 (0)