You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2014/04/19 01:13:32 UTC

svn commit: r1588590 - in /lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store: LockStressTest.java VerifyingLockFactory.java

Author: uschindler
Date: Fri Apr 18 23:13:32 2014
New Revision: 1588590

URL: http://svn.apache.org/r1588590
Log:
LUCENE-5612: Reuse the socket's input/output

Modified:
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/LockStressTest.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/VerifyingLockFactory.java

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/LockStressTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/LockStressTest.java?rev=1588590&r1=1588589&r2=1588590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/LockStressTest.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/LockStressTest.java Fri Apr 18 23:13:32 2014
@@ -19,6 +19,7 @@ package org.apache.lucene.store;
 
 import java.io.IOException;
 import java.io.File;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.InetSocketAddress;
 import java.net.Socket;
@@ -89,46 +90,46 @@ public class LockStressTest {
     final InetSocketAddress addr = new InetSocketAddress(verifierHost, verifierPort);
     System.out.println("Connecting to server " + addr +
         " and registering as client " + myID + "...");
-    Socket socket = new Socket();
-    socket.setReuseAddress(true);
-    socket.connect(addr, 500);
-
-    OutputStream os = socket.getOutputStream();
-    os.write(myID);
-    os.flush();
-
-    lockFactory.setLockPrefix("test");
-    final LockFactory verifyLF = new VerifyingLockFactory(lockFactory, socket);
-    final Lock l = verifyLF.makeLock("test.lock");
-    final Random rnd = new Random();
-    
-    // wait for starting gun
-    if (socket.getInputStream().read() != 43) {
-      throw new IOException("Protocol violation");
-    }
-    
-    for (int i = 0; i < count; i++) {
-      boolean obtained = false;
-
-      try {
-        obtained = l.obtain(rnd.nextInt(100) + 10);
-      } catch (LockObtainFailedException e) {
-      }
+    try (Socket socket = new Socket()) {
+      socket.setReuseAddress(true);
+      socket.connect(addr, 500);
+      final OutputStream out = socket.getOutputStream();
+      final InputStream in = socket.getInputStream();
       
-      if (obtained) {
-        Thread.sleep(sleepTimeMS);
-        l.close();
-      }
+      out.write(myID);
+      out.flush();
+  
+      lockFactory.setLockPrefix("test");
+      final LockFactory verifyLF = new VerifyingLockFactory(lockFactory, in, out);
+      final Lock l = verifyLF.makeLock("test.lock");
+      final Random rnd = new Random();
       
-      if (i % 500 == 0) {
-        System.out.println((i * 100. / count) + "% done.");
+      // wait for starting gun
+      if (in.read() != 43) {
+        throw new IOException("Protocol violation");
       }
       
-      Thread.sleep(sleepTimeMS);
+      for (int i = 0; i < count; i++) {
+        boolean obtained = false;
+  
+        try {
+          obtained = l.obtain(rnd.nextInt(100) + 10);
+        } catch (LockObtainFailedException e) {
+        }
+        
+        if (obtained) {
+          Thread.sleep(sleepTimeMS);
+          l.close();
+        }
+        
+        if (i % 500 == 0) {
+          System.out.println((i * 100. / count) + "% done.");
+        }
+        
+        Thread.sleep(sleepTimeMS);
+      } 
     }
     
-    IOUtils.closeWhileHandlingException(socket);
-    
     System.out.println("Finished " + count + " tries.");
   }
 }

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/VerifyingLockFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/VerifyingLockFactory.java?rev=1588590&r1=1588589&r2=1588590&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/VerifyingLockFactory.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/store/VerifyingLockFactory.java Fri Apr 18 23:13:32 2014
@@ -19,6 +19,7 @@ package org.apache.lucene.store;
 
 import java.net.Socket;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 
 /**
@@ -38,7 +39,8 @@ import java.io.OutputStream;
 public class VerifyingLockFactory extends LockFactory {
 
   final LockFactory lf;
-  final Socket socket;
+  final InputStream in;
+  final OutputStream out;
 
   private class CheckedLock extends Lock {
     private final Lock lock;
@@ -48,10 +50,9 @@ public class VerifyingLockFactory extend
     }
 
     private void verify(byte message) throws IOException {
-      final OutputStream out = socket.getOutputStream();
       out.write(message);
       out.flush();
-      final int ret = socket.getInputStream().read();
+      final int ret = in.read();
       if (ret < 0) {
         throw new IllegalStateException("Lock server died because of locking error.");
       }
@@ -84,11 +85,13 @@ public class VerifyingLockFactory extend
 
   /**
    * @param lf the LockFactory that we are testing
-   * @param socket the socket connected to {@link LockVerifyServer}
+   * @param in the socket's input to {@link LockVerifyServer}
+   * @param out the socket's output to {@link LockVerifyServer}
   */
-  public VerifyingLockFactory(LockFactory lf, Socket socket) {
+  public VerifyingLockFactory(LockFactory lf, InputStream in, OutputStream out) throws IOException {
     this.lf = lf;
-    this.socket = socket;
+    this.in = in;
+    this.out = out;
   }
 
   @Override