You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2014/12/30 15:04:16 UTC

incubator-nifi git commit: NIFI-211: Use ServerSocket.accept instead of ServerSocketChannel.accept so that timeout is taken into account

Repository: incubator-nifi
Updated Branches:
  refs/heads/develop d27d2e303 -> 0a0b7e05a


NIFI-211: Use ServerSocket.accept instead of ServerSocketChannel.accept so that timeout is taken into account


Project: http://git-wip-us.apache.org/repos/asf/incubator-nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-nifi/commit/0a0b7e05
Tree: http://git-wip-us.apache.org/repos/asf/incubator-nifi/tree/0a0b7e05
Diff: http://git-wip-us.apache.org/repos/asf/incubator-nifi/diff/0a0b7e05

Branch: refs/heads/develop
Commit: 0a0b7e05a08428a5e6e78e9f8c204cd05991b4b3
Parents: d27d2e3
Author: Mark Payne <ma...@hotmail.com>
Authored: Tue Dec 30 08:59:10 2014 -0500
Committer: Mark Payne <ma...@hotmail.com>
Committed: Tue Dec 30 08:59:10 2014 -0500

----------------------------------------------------------------------
 .../nifi/remote/SocketRemoteSiteListener.java   | 22 +++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-nifi/blob/0a0b7e05/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java
----------------------------------------------------------------------
diff --git a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java
index a0a3ed6..ec169ad 100644
--- a/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java
+++ b/nar-bundles/framework-bundle/framework/site-to-site/src/main/java/org/apache/nifi/remote/SocketRemoteSiteListener.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.InetSocketAddress;
+import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketTimeoutException;
 import java.nio.channels.ServerSocketChannel;
@@ -43,7 +44,6 @@ import org.apache.nifi.remote.io.socket.ssl.SSLSocketChannelCommunicationsSessio
 import org.apache.nifi.remote.protocol.CommunicationsSession;
 import org.apache.nifi.remote.protocol.RequestType;
 import org.apache.nifi.remote.protocol.ServerProtocol;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -99,11 +99,20 @@ public class SocketRemoteSiteListener implements RemoteSiteListener {
                         continue;
                     }
                     
+                    
                     LOG.trace("Accepting Connection...");
-                    final SocketChannel socketChannel;
+                    Socket acceptedSocket = null;
                     try {
-                        serverSocketChannel.socket().setSoTimeout(5000);
-                        socketChannel = serverSocketChannel.accept();
+                        serverSocketChannel.configureBlocking(false);
+                        final ServerSocket serverSocket = serverSocketChannel.socket();
+                        serverSocket.setSoTimeout(2000);
+                        while ( !stopped.get() && acceptedSocket == null ) {
+                            try {
+                                acceptedSocket = serverSocket.accept();
+                            } catch (final SocketTimeoutException ste) {
+                                continue;
+                            }
+                        }
                     } catch (final IOException e) {
                         LOG.error("RemoteSiteListener Unable to accept connection due to {}", e.toString());
                         if ( LOG.isDebugEnabled() ) {
@@ -113,12 +122,11 @@ public class SocketRemoteSiteListener implements RemoteSiteListener {
                     }
                     LOG.trace("Got connection");
                     
-                    
+                    final Socket socket = acceptedSocket;
+                    final SocketChannel socketChannel = socket.getChannel();
                     final Thread thread = new Thread(new Runnable() {
                         @Override
                         public void run() {
-                            final Socket socket = socketChannel.socket();
-                            
                             String hostname = socket.getInetAddress().getHostName();
                             final int slashIndex = hostname.indexOf("/");
                             if ( slashIndex == 0 ) {