Skip to content

ChannelSendOperator does not propagate cancel signal to the server [SPR-17609] #22141

Closed
@spring-projects-issues

Description

@spring-projects-issues

Rossen Stoyanchev opened SPR-17609 and commented

This is a follow-up to #22038 in which writing with Content-Length: 0 and byte[0] was causing hanging. The issue was fixed in 5.1.3 by using response.setComplete() instead of writing an empty byte array. However the underlying issue of hanging with Content-Length: 0 and byte[0] remains.

After further investigation, there is an issue in ChanelSendOperator in that it currently only cancels the upstream write Publisher. So in a case where a cancel happens after the first signal (onNext, onError, onComplete) is emitted, and therefore after the server write Subscriber is hooked in, in that scenario only the upstream write Publisher is notified to stop sending, but the server write Subscriber is not aware.

In addition to the sample in #22038 there is also a sample in reactor/reactor-netty#518.


Affects: 5.1.3

Issue Links:

Referenced from: commits 09da10c

Backported to: 5.0.12

Metadata

Metadata

Assignees

Labels

in: webIssues in web modules (web, webmvc, webflux, websocket)status: backportedAn issue that has been backported to maintenance branchestype: bugA general bug

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions