232 lines
10 KiB
Diff
232 lines
10 KiB
Diff
|
From 7d51d715e71585e71cd5a0d1ea32519e2e9ea156 Mon Sep 17 00:00:00 2001
|
||
|
From: Norman Maurer <norman_maurer@apple.com>
|
||
|
Date: Fri, 15 Dec 2023 16:45:32 +0100
|
||
|
Subject: [PATCH] Default value of MAX_MESSAGES_PER_READ not used for native
|
||
|
DatagramChanne
|
||
|
|
||
|
Motivation:
|
||
|
|
||
|
Due of how we did set up the RecvByteBufAllocator we did not set the correct default value for the max message per read.
|
||
|
|
||
|
Modifications:
|
||
|
|
||
|
Pass the RecvByteBufAllocator in the constructor so its setup correctly.
|
||
|
|
||
|
Result:
|
||
|
|
||
|
Fix https://github.com/netty/netty/issues/13733
|
||
|
---
|
||
|
.../epoll/EpollDatagramChannelConfig.java | 3 +-
|
||
|
.../EpollDomainDatagramChannelConfig.java | 3 +-
|
||
|
.../kqueue/KQueueDatagramChannelConfig.java | 3 +-
|
||
|
.../KQueueDomainDatagramChannelConfig.java | 3 +-
|
||
|
.../epoll/EpollDatagramChannelTest.java | 7 ++++
|
||
|
.../epoll/EpollDomainDatagramChannelTest.java | 36 +++++++++++++++++++
|
||
|
.../kqueue/KqueueDatagramChannelTest.java | 36 +++++++++++++++++++
|
||
|
.../KqueueDomainDatagramChannelTest.java | 36 +++++++++++++++++++
|
||
|
8 files changed, 119 insertions(+), 8 deletions(-)
|
||
|
create mode 100644 transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDomainDatagramChannelTest.java
|
||
|
create mode 100644 transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KqueueDatagramChannelTest.java
|
||
|
create mode 100644 transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KqueueDomainDatagramChannelTest.java
|
||
|
|
||
|
diff --git a/transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDatagramChannelConfig.java b/transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDatagramChannelConfig.java
|
||
|
index 850da1381508..4af835878cc9 100644
|
||
|
--- a/transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDatagramChannelConfig.java
|
||
|
+++ b/transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDatagramChannelConfig.java
|
||
|
@@ -36,8 +36,7 @@ public final class EpollDatagramChannelConfig extends EpollChannelConfig impleme
|
||
|
private volatile int maxDatagramSize;
|
||
|
|
||
|
EpollDatagramChannelConfig(EpollDatagramChannel channel) {
|
||
|
- super(channel);
|
||
|
- setRecvByteBufAllocator(new FixedRecvByteBufAllocator(2048));
|
||
|
+ super(channel, new FixedRecvByteBufAllocator(2048));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
diff --git a/transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDomainDatagramChannelConfig.java b/transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDomainDatagramChannelConfig.java
|
||
|
index bd06fe34e740..01380951a9d4 100644
|
||
|
--- a/transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDomainDatagramChannelConfig.java
|
||
|
+++ b/transport-classes-epoll/src/main/java/io/netty/channel/epoll/EpollDomainDatagramChannelConfig.java
|
||
|
@@ -37,8 +37,7 @@ public final class EpollDomainDatagramChannelConfig extends EpollChannelConfig i
|
||
|
private boolean activeOnOpen;
|
||
|
|
||
|
EpollDomainDatagramChannelConfig(EpollDomainDatagramChannel channel) {
|
||
|
- super(channel);
|
||
|
- setRecvByteBufAllocator(new FixedRecvByteBufAllocator(2048));
|
||
|
+ super(channel, new FixedRecvByteBufAllocator(2048));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
diff --git a/transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDatagramChannelConfig.java b/transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDatagramChannelConfig.java
|
||
|
index d15e56cf0114..7ce2406a7f1b 100644
|
||
|
--- a/transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDatagramChannelConfig.java
|
||
|
+++ b/transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDatagramChannelConfig.java
|
||
|
@@ -47,8 +47,7 @@ public final class KQueueDatagramChannelConfig extends KQueueChannelConfig imple
|
||
|
private boolean activeOnOpen;
|
||
|
|
||
|
KQueueDatagramChannelConfig(KQueueDatagramChannel channel) {
|
||
|
- super(channel);
|
||
|
- setRecvByteBufAllocator(new FixedRecvByteBufAllocator(2048));
|
||
|
+ super(channel, new FixedRecvByteBufAllocator(2048));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
diff --git a/transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDomainDatagramChannelConfig.java b/transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDomainDatagramChannelConfig.java
|
||
|
index c79f097f4bf9..ee3fae8f1571 100644
|
||
|
--- a/transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDomainDatagramChannelConfig.java
|
||
|
+++ b/transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDomainDatagramChannelConfig.java
|
||
|
@@ -38,8 +38,7 @@ public final class KQueueDomainDatagramChannelConfig
|
||
|
private boolean activeOnOpen;
|
||
|
|
||
|
KQueueDomainDatagramChannelConfig(KQueueDomainDatagramChannel channel) {
|
||
|
- super(channel);
|
||
|
- setRecvByteBufAllocator(new FixedRecvByteBufAllocator(2048));
|
||
|
+ super(channel, new FixedRecvByteBufAllocator(2048));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
diff --git a/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDatagramChannelTest.java b/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDatagramChannelTest.java
|
||
|
index e83fb4ba016c..ab40ec582f96 100644
|
||
|
--- a/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDatagramChannelTest.java
|
||
|
+++ b/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDatagramChannelTest.java
|
||
|
@@ -43,6 +43,13 @@ public void setUp() {
|
||
|
Epoll.ensureAvailability();
|
||
|
}
|
||
|
|
||
|
+ @Test
|
||
|
+ public void testDefaultMaxMessagePerRead() {
|
||
|
+ EpollDatagramChannel channel = new EpollDatagramChannel();
|
||
|
+ assertEquals(16, channel.config().getMaxMessagesPerRead());
|
||
|
+ channel.unsafe().closeForcibly();
|
||
|
+ }
|
||
|
+
|
||
|
@Test
|
||
|
public void testNotActiveNoLocalRemoteAddress() throws IOException {
|
||
|
checkNotActiveNoLocalRemoteAddress(new EpollDatagramChannel());
|
||
|
diff --git a/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDomainDatagramChannelTest.java b/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDomainDatagramChannelTest.java
|
||
|
new file mode 100644
|
||
|
index 000000000000..60eb72c90886
|
||
|
--- /dev/null
|
||
|
+++ b/transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDomainDatagramChannelTest.java
|
||
|
@@ -0,0 +1,36 @@
|
||
|
+/*
|
||
|
+ * Copyright 2023 The Netty Project
|
||
|
+ *
|
||
|
+ * The Netty Project licenses this file to you under the Apache License,
|
||
|
+ * version 2.0 (the "License"); you may not use this file except in compliance
|
||
|
+ * with the License. You may obtain a copy of the License at:
|
||
|
+ *
|
||
|
+ * https://www.apache.org/licenses/LICENSE-2.0
|
||
|
+ *
|
||
|
+ * Unless required by applicable law or agreed to in writing, software
|
||
|
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
+ * License for the specific language governing permissions and limitations
|
||
|
+ * under the License.
|
||
|
+ */
|
||
|
+package io.netty.channel.epoll;
|
||
|
+
|
||
|
+import org.junit.jupiter.api.BeforeEach;
|
||
|
+import org.junit.jupiter.api.Test;
|
||
|
+
|
||
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
||
|
+
|
||
|
+public class EpollDomainDatagramChannelTest {
|
||
|
+
|
||
|
+ @BeforeEach
|
||
|
+ public void setUp() {
|
||
|
+ Epoll.ensureAvailability();
|
||
|
+ }
|
||
|
+
|
||
|
+ @Test
|
||
|
+ public void testDefaultMaxMessagePerRead() {
|
||
|
+ EpollDomainDatagramChannel channel = new EpollDomainDatagramChannel();
|
||
|
+ assertEquals(16, channel.config().getMaxMessagesPerRead());
|
||
|
+ channel.unsafe().closeForcibly();
|
||
|
+ }
|
||
|
+}
|
||
|
diff --git a/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KqueueDatagramChannelTest.java b/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KqueueDatagramChannelTest.java
|
||
|
new file mode 100644
|
||
|
index 000000000000..4b0d82243e4d
|
||
|
--- /dev/null
|
||
|
+++ b/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KqueueDatagramChannelTest.java
|
||
|
@@ -0,0 +1,36 @@
|
||
|
+/*
|
||
|
+ * Copyright 2023 The Netty Project
|
||
|
+ *
|
||
|
+ * The Netty Project licenses this file to you under the Apache License,
|
||
|
+ * version 2.0 (the "License"); you may not use this file except in compliance
|
||
|
+ * with the License. You may obtain a copy of the License at:
|
||
|
+ *
|
||
|
+ * https://www.apache.org/licenses/LICENSE-2.0
|
||
|
+ *
|
||
|
+ * Unless required by applicable law or agreed to in writing, software
|
||
|
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
+ * License for the specific language governing permissions and limitations
|
||
|
+ * under the License.
|
||
|
+ */
|
||
|
+package io.netty.channel.kqueue;
|
||
|
+
|
||
|
+import org.junit.jupiter.api.BeforeEach;
|
||
|
+import org.junit.jupiter.api.Test;
|
||
|
+
|
||
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
||
|
+
|
||
|
+public class KqueueDatagramChannelTest {
|
||
|
+
|
||
|
+ @BeforeEach
|
||
|
+ public void setUp() {
|
||
|
+ KQueue.ensureAvailability();
|
||
|
+ }
|
||
|
+
|
||
|
+ @Test
|
||
|
+ public void testDefaultMaxMessagePerRead() {
|
||
|
+ KQueueDatagramChannel channel = new KQueueDatagramChannel();
|
||
|
+ assertEquals(16, channel.config().getMaxMessagesPerRead());
|
||
|
+ channel.unsafe().closeForcibly();
|
||
|
+ }
|
||
|
+}
|
||
|
diff --git a/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KqueueDomainDatagramChannelTest.java b/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KqueueDomainDatagramChannelTest.java
|
||
|
new file mode 100644
|
||
|
index 000000000000..b96915078ee0
|
||
|
--- /dev/null
|
||
|
+++ b/transport-native-kqueue/src/test/java/io/netty/channel/kqueue/KqueueDomainDatagramChannelTest.java
|
||
|
@@ -0,0 +1,36 @@
|
||
|
+/*
|
||
|
+ * Copyright 2023 The Netty Project
|
||
|
+ *
|
||
|
+ * The Netty Project licenses this file to you under the Apache License,
|
||
|
+ * version 2.0 (the "License"); you may not use this file except in compliance
|
||
|
+ * with the License. You may obtain a copy of the License at:
|
||
|
+ *
|
||
|
+ * https://www.apache.org/licenses/LICENSE-2.0
|
||
|
+ *
|
||
|
+ * Unless required by applicable law or agreed to in writing, software
|
||
|
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
+ * License for the specific language governing permissions and limitations
|
||
|
+ * under the License.
|
||
|
+ */
|
||
|
+package io.netty.channel.kqueue;
|
||
|
+
|
||
|
+import org.junit.jupiter.api.BeforeEach;
|
||
|
+import org.junit.jupiter.api.Test;
|
||
|
+
|
||
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
||
|
+
|
||
|
+public class KqueueDomainDatagramChannelTest {
|
||
|
+
|
||
|
+ @BeforeEach
|
||
|
+ public void setUp() {
|
||
|
+ KQueue.ensureAvailability();
|
||
|
+ }
|
||
|
+
|
||
|
+ @Test
|
||
|
+ public void testDefaultMaxMessagePerRead() {
|
||
|
+ KQueueDomainDatagramChannel channel = new KQueueDomainDatagramChannel();
|
||
|
+ assertEquals(16, channel.config().getMaxMessagesPerRead());
|
||
|
+ channel.unsafe().closeForcibly();
|
||
|
+ }
|
||
|
+}
|