Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't send a RST frame when closing the stream in a write future whil… #13973

Merged
merged 2 commits into from Apr 14, 2024

Conversation

normanmaurer
Copy link
Member

…e processing inbound frames.

Motiviation:

Due a bug in netty we would send a RST frame in some cases even tho we correctly received the endOfStream already. This is not necessary and might even confuse the remote peer.

Modifications:

  • Keep track of if we received endOfStream and send endOfStream in our Channel implementation and only send a RST frame if this is not the case during close
  • Add unit tests

Result:

Don't send RST frame if we received endOfStream and send endOfStream.

…e processing inbound frames.

Motiviation:

Due a bug in netty we would send a RST frame in some cases even tho we correctly received the endOfStream already. This is not necessary and might even confuse the remote peer.

Modifications:

- Keep track of if we received endOfStream and send endOfStream in our Channel implementation and only send a RST frame if this is not the case during close
- Add unit tests

Result:

Don't send RST frame if we received endOfStream and send endOfStream.
@normanmaurer
Copy link
Member Author

Special shoutout to @thomdev for reporting to me and also providing one of the test cases

@normanmaurer normanmaurer added this to the 4.1.109.Final milestone Apr 12, 2024
@normanmaurer normanmaurer merged commit 4d961d0 into 4.1 Apr 14, 2024
16 checks passed
@normanmaurer normanmaurer deleted the rst_during_close branch April 14, 2024 18:17
normanmaurer added a commit that referenced this pull request Apr 14, 2024
#13973)

…e processing inbound frames.

Motiviation:

Due a bug in netty we would send a RST frame in some cases even tho we
correctly received the endOfStream already. This is not necessary and
might even confuse the remote peer.

Modifications:

- Keep track of if we received endOfStream and send endOfStream in our
Channel implementation and only send a RST frame if this is not the case
during close
- Add unit tests

Result:

Don't send RST frame if we received endOfStream and send endOfStream.
Copy link
Member

@idelpivnitskiy idelpivnitskiy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

dongjoon-hyun pushed a commit to apache/spark that referenced this pull request Apr 18, 2024
### What changes were proposed in this pull request?
The pr aims to upgrade `netty` from `4.1.108.Final` to `4.1.109.Final`.

### Why are the changes needed?
https://netty.io/news/2024/04/15/4-1-109-Final.html
This version has brought some bug fixes and improvements, such as:
- Fix DefaultChannelId#asLongText NPE ([#13971](netty/netty#13971))
- Rewrite ZstdDecoder to remove the need of allocate a huge byte[] internally ([#13928](netty/netty#13928))
- Don't send a RST frame when closing the stream in a write future while processing inbound frames ([#13973](netty/netty#13973))

### Does this PR introduce _any_ user-facing change?
No.

### How was this patch tested?
Pass GA.

### Was this patch authored or co-authored using generative AI tooling?
No.

Closes #46112 from panbingkun/netty_for_spark4.

Authored-by: panbingkun <panbingkun@baidu.com>
Signed-off-by: Dongjoon Hyun <dhyun@apple.com>
FMX pushed a commit to apache/celeborn that referenced this pull request Apr 22, 2024
### What changes were proposed in this pull request?

Bump Netty from 4.1.107.Final to 4.1.109.Final.

### Why are the changes needed?

Netty has released v4.1.108.Final, v4.1.109.Final, which release note refers to [4.1.108.Final](https://netty.io/news/2024/03/21/4-1-108-Final.html), [4.1.109.Final](https://netty.io/news/2024/04/15/4-1-109-Final.html). This version includes some bugfixes and improvements including:

- 4.1.108.Final
  - Epoll: Correctly handle splice tasks when Channel is closed: netty/netty#13848
- 4.1.109.Final
  - Don't send a RST frame when closing the stream in a write future while processing inbound frames: netty/netty#13973
  - Fix DefaultChannelId#asLongText NPE: netty/netty#13971
  - Rewrite ZstdDecoder to remove the need of allocate a huge byte[] internally: netty/netty#13928

### Does this PR introduce _any_ user-facing change?

No.

### How was this patch tested?

No.

Closes #2474 from SteNicholas/CELEBORN-1396.

Authored-by: SteNicholas <programgeek@163.com>
Signed-off-by: mingji <fengmingxiao.fmx@alibaba-inc.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants