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

Fix DefaultChannelId#asLongText NPE #13971

Merged
merged 1 commit into from Apr 15, 2024
Merged

Conversation

jchrys
Copy link
Contributor

@jchrys jchrys commented Apr 12, 2024

Motivation:
The DefaultChannelId class is serializable, but it does not account for variations in the length of machineId.

Modifications:
Adjusted code to accommodate varying lengths of MachineId.

Result:
Fixed NPE.
Respects varying length of machineId.

public void testDeserialization() throws Exception {
// deseiralize DefaultChannelId with 8 byte machineId
final ObjectInputStream in8 = new ObjectInputStream(new ByteArrayInputStream(EIGHT_BYTES_MACHINE_ID));
final DefaultChannelId c8 = (DefaultChannelId) in8.readObject();
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd prefer to see a @VisibleForTesting package-private constructor where you can pass in either the values or a finished byte array. Keeping the binaries around is troublesome for maintenance and debugging.

Copy link
Contributor Author

@jchrys jchrys Apr 12, 2024

Choose a reason for hiding this comment

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

I agree, Let me implement it :D

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done. Could you please take a look?

@jchrys jchrys force-pushed the 4.1-fix-dcid-npe branch 3 times, most recently from 1b966c3 to 9c3590f Compare April 12, 2024 23:23
final int machineIdLen = len - nonMachineIdLen;
final int otherMachineIdLen = otherLen - nonMachineIdLen;
final int minMachineIdLen = Math.min(machineIdLen, otherMachineIdLen);
assert machineIdLen != otherMachineIdLen;
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this is over-thinking it. As long as the sort order is consistent, it should be fine. No need to make it match the long-text sorting, IMO.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure. Let me fix it

@jchrys jchrys force-pushed the 4.1-fix-dcid-npe branch 2 times, most recently from b2361c0 to 9d8d2ae Compare April 15, 2024 01:26
Motivation:
The DefaultChannelId class is serializable, but it does not account for variations in the length of machineId.

Modifications:
Adjusted code to accommodate varying lengths of MachineId.

Result:
Fixed NPE.
Respects varying length of machineId.
@jchrys
Copy link
Contributor Author

jchrys commented Apr 15, 2024

I've just changed to use PlatformDependent.threadLocalRandom().

Copy link
Member

@normanmaurer normanmaurer left a comment

Choose a reason for hiding this comment

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

Thanks a lot!

@jchrys please also port to main

@normanmaurer normanmaurer merged commit 9f44b97 into netty:4.1 Apr 15, 2024
16 checks passed
@normanmaurer normanmaurer added this to the 4.1.109.Final milestone Apr 15, 2024
@jchrys jchrys deleted the 4.1-fix-dcid-npe branch April 15, 2024 06:35
@jchrys
Copy link
Contributor Author

jchrys commented Apr 15, 2024

Sure! I will check

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