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

Reply via email to