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