This is an automated email from the ASF dual-hosted git repository.
elecharny pushed a commit to branch 2.2.X
in repository https://gitbox.apache.org/repos/asf/mina.git
The following commit(s) were added to refs/heads/2.2.X by this push:
new 50be71e31 Protected the selector againts concurrent access in a few
more places
50be71e31 is described below
commit 50be71e31997d6565c750e9422714ca92fd6f4be
Author: Emmanuel Lécharny <[email protected]>
AuthorDate: Sat Nov 15 08:57:13 2025 +0100
Protected the selector againts concurrent access in a few more places
---
.../mina/transport/socket/nio/NioProcessor.java | 27 +++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git
a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioProcessor.java
b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioProcessor.java
index 1dc8d2efe..4678721f2 100644
---
a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioProcessor.java
+++
b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioProcessor.java
@@ -163,7 +163,14 @@ public class NioProcessor extends
AbstractPollingIoProcessor<NioSession> {
@Override
protected int allSessionsCount()
{
- return selector.keys().size();
+ selectorLock.readLock().lock();
+
+ try {
+ return selector.keys().size();
+ } finally {
+ selectorLock.readLock().unlock();
+ }
+
}
@SuppressWarnings("synthetic-access")
@@ -345,7 +352,14 @@ public class NioProcessor extends
AbstractPollingIoProcessor<NioSession> {
}
if (oldInterestOps != newInterestOps) {
- key.interestOps(newInterestOps);
+ // Protect the selector against concurrent accesses
+ selectorLock.readLock().lock();
+
+ try {
+ key.interestOps(newInterestOps);
+ } finally {
+ selectorLock.readLock().unlock();
+ }
}
}
@@ -368,7 +382,14 @@ public class NioProcessor extends
AbstractPollingIoProcessor<NioSession> {
newInterestOps &= ~SelectionKey.OP_WRITE;
}
- key.interestOps(newInterestOps);
+ // Protect the selector against concurrent accesses
+ selectorLock.readLock().lock();
+
+ try {
+ key.interestOps(newInterestOps);
+ } finally {
+ selectorLock.readLock().unlock();
+ }
}
@Override