Addded default socket timeout of 2000 ms

This commit is contained in:
Jonathan Leibiusky
2010-08-08 14:52:35 -03:00
parent 8372092b96
commit 048d87d26c
4 changed files with 53 additions and 9 deletions

View File

@@ -5,6 +5,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import java.net.Socket; import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -18,6 +19,31 @@ public class Connection {
private DataOutputStream outputStream; private DataOutputStream outputStream;
private DataInputStream inputStream; private DataInputStream inputStream;
private int pipelinedCommands = 0; private int pipelinedCommands = 0;
private int timeout = 2000;
public int getTimeout() {
return timeout;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
public void setTimeoutInfinite() {
try {
socket.setSoTimeout(0);
} catch (SocketException ex) {
throw new JedisException(ex);
}
}
public void rollbackTimeout() {
try {
socket.setSoTimeout(timeout);
} catch (SocketException ex) {
throw new JedisException(ex);
}
}
public Connection(String host) { public Connection(String host) {
super(); super();
@@ -61,6 +87,7 @@ public class Connection {
public void connect() throws UnknownHostException, IOException { public void connect() throws UnknownHostException, IOException {
if (!connected) { if (!connected) {
socket = new Socket(host, port); socket = new Socket(host, port);
socket.setSoTimeout(timeout);
connected = socket.isConnected(); connected = socket.isConnected();
outputStream = new DataOutputStream(socket.getOutputStream()); outputStream = new DataOutputStream(socket.getOutputStream());
inputStream = new DataInputStream(new BufferedInputStream(socket inputStream = new DataInputStream(new BufferedInputStream(socket

View File

@@ -21,6 +21,11 @@ public class Jedis {
client = new Client(host, port); client = new Client(host, port);
} }
public Jedis(String host, int port, int timeout) {
client = new Client(host, port);
client.setTimeout(timeout);
}
public String ping() { public String ping() {
client.ping(); client.ping();
return client.getStatusCodeReply(); return client.getStatusCodeReply();
@@ -485,7 +490,10 @@ public class Jedis {
args.add(String.valueOf(timeout)); args.add(String.valueOf(timeout));
client.blpop(args.toArray(new String[args.size()])); client.blpop(args.toArray(new String[args.size()]));
return client.getMultiBulkReply(); client.setTimeoutInfinite();
List<String> multiBulkReply = client.getMultiBulkReply();
client.rollbackTimeout();
return multiBulkReply;
} }
public int sort(String key, SortingParams sortingParameters, String dstkey) { public int sort(String key, SortingParams sortingParameters, String dstkey) {
@@ -506,7 +514,11 @@ public class Jedis {
args.add(String.valueOf(timeout)); args.add(String.valueOf(timeout));
client.brpop(args.toArray(new String[args.size()])); client.brpop(args.toArray(new String[args.size()]));
return client.getMultiBulkReply(); client.setTimeoutInfinite();
List<String> multiBulkReply = client.getMultiBulkReply();
client.rollbackTimeout();
return multiBulkReply;
} }
public String auth(String password) { public String auth(String password) {
@@ -521,7 +533,9 @@ public class Jedis {
} }
public void subscribe(JedisPubSub jedisPubSub, String... channels) { public void subscribe(JedisPubSub jedisPubSub, String... channels) {
client.setTimeoutInfinite();
jedisPubSub.proceed(client, channels); jedisPubSub.proceed(client, channels);
client.rollbackTimeout();
} }
public void publish(String channel, String message) { public void publish(String channel, String message) {
@@ -529,7 +543,9 @@ public class Jedis {
} }
public void psubscribe(JedisPubSub jedisPubSub, String... patterns) { public void psubscribe(JedisPubSub jedisPubSub, String... patterns) {
client.setTimeoutInfinite();
jedisPubSub.proceedWithPatterns(client, patterns); jedisPubSub.proceedWithPatterns(client, patterns);
client.rollbackTimeout();
} }
public int zcount(String key, double min, double max) { public int zcount(String key, double min, double max) {

View File

@@ -11,4 +11,4 @@ public class JedisTest {
Jedis jedis = new Jedis("localhost"); Jedis jedis = new Jedis("localhost");
jedis.dbSize(); jedis.dbSize();
} }
} }

View File

@@ -9,6 +9,7 @@ import org.junit.After;
import org.junit.Before; import org.junit.Before;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
import redis.clients.jedis.Protocol;
public abstract class JedisCommandTestBase extends Assert { public abstract class JedisCommandTestBase extends Assert {
@@ -20,7 +21,7 @@ public abstract class JedisCommandTestBase extends Assert {
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
jedis = new Jedis("localhost"); jedis = new Jedis("localhost", Protocol.DEFAULT_PORT, 500);
jedis.connect(); jedis.connect();
jedis.auth("foobared"); jedis.auth("foobared");
jedis.flushDB(); jedis.flushDB();
@@ -32,10 +33,10 @@ public abstract class JedisCommandTestBase extends Assert {
} }
protected Jedis createJedis() throws UnknownHostException, IOException { protected Jedis createJedis() throws UnknownHostException, IOException {
Jedis j = new Jedis("localhost"); Jedis j = new Jedis("localhost");
j.connect(); j.connect();
j.auth("foobared"); j.auth("foobared");
j.flushAll(); j.flushAll();
return j; return j;
} }
} }