Author: peter_firmstone
Date: Thu Nov 22 06:45:50 2012
New Revision: 1412436

URL: http://svn.apache.org/viewvc?rev=1412436&view=rev
Log:
Attempt to fix socket issue on FreeBSD

Modified:
    river/jtsk/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java

Modified: river/jtsk/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java?rev=1412436&r1=1412435&r2=1412436&view=diff
==============================================================================
--- river/jtsk/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java 
(original)
+++ river/jtsk/trunk/qa/src/com/sun/jini/qa/harness/MasterHarness.java Thu Nov 
22 06:45:50 2012
@@ -51,8 +51,10 @@ import java.util.TreeSet;
 import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
 import java.lang.reflect.Field;
+import java.net.BindException;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
+import java.net.Socket;
 import java.net.SocketAddress;
 
 //Should there be an 'AbortTestRequest' ?
@@ -249,16 +251,39 @@ class MasterHarness {
     private class KeepAlivePort implements Runnable {
 
        public void run() {
-           ArrayList socketList = new ArrayList(); // keep references
+           ArrayList<Socket> socketList = new ArrayList<Socket>(); // keep 
references
+            SocketAddress add = new InetSocketAddress(KEEPALIVE_PORT);
            try {
-                SocketAddress add = new InetSocketAddress(KEEPALIVE_PORT);
+                
                ServerSocket socket = new ServerSocket();
-//                if (!socket.getReuseAddress()) socket.setReuseAddress(true);
                 socket.bind(add);
                while (true) {
                    socketList.add(socket.accept());
                }
-           } catch (Exception e) {
+           } catch (BindException e){
+                try {
+                        Thread.sleep(240000); // Wait 4 minutes for TCP 2MSL 
TIME_WAIT
+                        ServerSocket socket = new ServerSocket();
+                        socket.bind(add);
+                        while (true) {
+                            socketList.add(socket.accept());
+                        }
+                } catch (InterruptedException ex){
+                    outStream.println("Interruped while opening ServerSocket 
with KEEPALIVE_PORT:" + KEEPALIVE_PORT );
+                    outStream.println("Unexpected exception after waiting 4 
minutes for port to become available:\n");
+                    ex.printStackTrace(outStream);
+                    outStream.println("Initial attempt failed:\n");
+                    e.printStackTrace(outStream);
+                    System.exit(1);
+                }catch (Exception ex){
+                    outStream.println("Error occurred while attempting to open 
ServerSocket with KEEPALIVE_PORT:" + KEEPALIVE_PORT );
+                    outStream.println("Unexpected exception after waiting 4 
minutes for port to become available:\n");
+                    ex.printStackTrace(outStream);
+                    outStream.println("Initial attempt failed:\n");
+                    e.printStackTrace(outStream);
+                    System.exit(1);
+                }
+            }catch (Exception e) {
                outStream.println("Problem with KEEPALIVE_PORT:" + 
KEEPALIVE_PORT );
                outStream.println("Unexpected exception:");
                e.printStackTrace(outStream);


Reply via email to