throw a JedisConnectionException if unsubscribing from a not subscribed JedisPubSub instance
This commit is contained in:
@@ -10,6 +10,7 @@ import static redis.clients.jedis.Protocol.Keyword.UNSUBSCRIBE;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import redis.clients.jedis.exceptions.JedisConnectionException;
|
||||||
import redis.clients.jedis.exceptions.JedisException;
|
import redis.clients.jedis.exceptions.JedisException;
|
||||||
import redis.clients.util.SafeEncoder;
|
import redis.clients.util.SafeEncoder;
|
||||||
|
|
||||||
@@ -31,6 +32,10 @@ public abstract class JedisPubSub {
|
|||||||
public abstract void onPSubscribe(String pattern, int subscribedChannels);
|
public abstract void onPSubscribe(String pattern, int subscribedChannels);
|
||||||
|
|
||||||
public void unsubscribe() {
|
public void unsubscribe() {
|
||||||
|
if (client == null) {
|
||||||
|
throw new JedisConnectionException(
|
||||||
|
"JedisPubSub was not subscribed to a Jedis instance.");
|
||||||
|
}
|
||||||
client.unsubscribe();
|
client.unsubscribe();
|
||||||
client.flush();
|
client.flush();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import org.junit.Test;
|
|||||||
import redis.clients.jedis.BinaryJedisPubSub;
|
import redis.clients.jedis.BinaryJedisPubSub;
|
||||||
import redis.clients.jedis.Jedis;
|
import redis.clients.jedis.Jedis;
|
||||||
import redis.clients.jedis.JedisPubSub;
|
import redis.clients.jedis.JedisPubSub;
|
||||||
|
import redis.clients.jedis.exceptions.JedisConnectionException;
|
||||||
import redis.clients.jedis.exceptions.JedisDataException;
|
import redis.clients.jedis.exceptions.JedisDataException;
|
||||||
import redis.clients.util.SafeEncoder;
|
import redis.clients.util.SafeEncoder;
|
||||||
|
|
||||||
@@ -501,4 +502,29 @@ public class PublishSubscribeCommandsTest extends JedisCommandTestBase {
|
|||||||
// this is OK because we are not sending AUTH command
|
// this is OK because we are not sending AUTH command
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = JedisConnectionException.class)
|
||||||
|
public void unsubscribeWhenNotSusbscribed() throws InterruptedException {
|
||||||
|
JedisPubSub pubsub = new JedisPubSub() {
|
||||||
|
public void onMessage(String channel, String message) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPMessage(String pattern, String channel,
|
||||||
|
String message) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onSubscribe(String channel, int subscribedChannels) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onUnsubscribe(String channel, int subscribedChannels) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPUnsubscribe(String pattern, int subscribedChannels) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPSubscribe(String pattern, int subscribedChannels) {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
pubsub.unsubscribe();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user