Enable leak detection in Netty 5 tests
See gh-29310
This commit is contained in:
committed by
rstoyanchev
parent
57bbc09fca
commit
997d1b3d7e
@@ -21,6 +21,7 @@ import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.springframework.core.io.buffer.DataBuffer;
|
||||
import org.springframework.core.io.buffer.DataBufferUtils;
|
||||
import org.springframework.core.io.buffer.Netty5DataBufferFactory;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
@@ -128,8 +129,15 @@ public class WebSocketMessage {
|
||||
* @see DataBufferUtils#retain(DataBuffer)
|
||||
*/
|
||||
public WebSocketMessage retain() {
|
||||
DataBufferUtils.retain(this.payload);
|
||||
return this;
|
||||
if (!(this.nativeMessage instanceof io.netty5.handler.codec.http.websocketx.WebSocketFrame frame) ) {
|
||||
DataBufferUtils.retain(this.payload);
|
||||
return this;
|
||||
}
|
||||
else {
|
||||
io.netty5.handler.codec.http.websocketx.WebSocketFrame newFrame = frame.send().receive();
|
||||
DataBuffer newPayload = ((Netty5DataBufferFactory) this.payload.factory()).wrap(newFrame.binaryData());
|
||||
return new WebSocketMessage(this.type, newPayload, newFrame);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -75,9 +75,8 @@ public abstract class Netty5WebSocketSessionSupport<T> extends AbstractWebSocket
|
||||
|
||||
|
||||
protected WebSocketMessage toMessage(WebSocketFrame frame) {
|
||||
WebSocketFrame newFrame = frame.send().receive();
|
||||
DataBuffer payload = bufferFactory().wrap(newFrame.binaryData());
|
||||
return new WebSocketMessage(messageTypes.get(newFrame.getClass()), payload, newFrame);
|
||||
DataBuffer payload = bufferFactory().wrap(frame.binaryData());
|
||||
return new WebSocketMessage(messageTypes.get(frame.getClass()), payload, frame);
|
||||
}
|
||||
|
||||
protected WebSocketFrame toFrame(WebSocketMessage message) {
|
||||
|
||||
@@ -220,7 +220,7 @@ class WebSocketIntegrationTests extends AbstractWebSocketIntegrationTests {
|
||||
return Mono.deferContextual(contextView -> {
|
||||
String key = ServerWebExchangeContextFilter.EXCHANGE_CONTEXT_ATTRIBUTE;
|
||||
assertThat(contextView.getOrEmpty(key).orElse(null)).isNotNull();
|
||||
return session.send(session.receive().doOnNext(WebSocketMessage::retain));
|
||||
return session.send(session.receive().map(WebSocketMessage::retain));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user