Fix NPEs on Jedis closePipeline/exec after move
DATAREDIS-218
This commit is contained in:
@@ -1611,6 +1611,21 @@ public abstract class AbstractConnectionIntegrationTests {
|
||||
Arrays.asList(new String[] { "foo", "bar" }) }), actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMove() {
|
||||
connection.set("foo", "bar");
|
||||
actual.add(connection.move("foo", 1));
|
||||
verifyResults(Arrays.asList(new Object[] { true}), actual);
|
||||
connection.select(1);
|
||||
try {
|
||||
assertEquals("bar",connection.get("foo"));
|
||||
} finally {
|
||||
if(connection.exists("foo")) {
|
||||
connection.del("foo");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void verifyResults(List<Object> expected, List<Object> actual) {
|
||||
assertEquals(expected, convertResults(true));
|
||||
}
|
||||
|
||||
@@ -1043,6 +1043,21 @@ abstract public class AbstractConnectionPipelineIntegrationTests extends
|
||||
verifyResults(Arrays.asList(new Object[] {Arrays.asList(new Object[] { 0l })}), actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMove() {
|
||||
connection.set("foo", "bar");
|
||||
actual.add(connection.move("foo", 1));
|
||||
verifyResults(Arrays.asList(new Object[] { 1l }), actual);
|
||||
connection.select(1);
|
||||
try {
|
||||
assertEquals("bar",connection.get("foo"));
|
||||
} finally {
|
||||
if(connection.exists("foo")) {
|
||||
connection.del("foo");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void initConnection() {
|
||||
connection.openPipeline();
|
||||
}
|
||||
|
||||
@@ -33,8 +33,10 @@ import org.springframework.data.redis.RedisConnectionFailureException;
|
||||
import org.springframework.data.redis.SettingsUtils;
|
||||
import org.springframework.data.redis.connection.AbstractConnectionIntegrationTests;
|
||||
import org.springframework.data.redis.connection.DefaultSortParameters;
|
||||
import org.springframework.data.redis.connection.DefaultStringRedisConnection;
|
||||
import org.springframework.data.redis.connection.RedisConnection;
|
||||
import org.springframework.data.redis.connection.SortParameters.Order;
|
||||
import org.springframework.data.redis.connection.StringRedisConnection;
|
||||
import org.springframework.test.annotation.IfProfileValue;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
@@ -626,4 +628,24 @@ public class JRedisConnectionIntegrationTests extends AbstractConnectionIntegrat
|
||||
assertEquals("bar", stringSerializer.deserialize(response.getBulkData()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMove() {
|
||||
connection.set("foo", "bar");
|
||||
actual.add(connection.move("foo", 1));
|
||||
verifyResults(Arrays.asList(new Object[] { true}), actual);
|
||||
// JRedis does not support select() on existing conn, create new one
|
||||
JredisConnectionFactory factory2 = new JredisConnectionFactory();
|
||||
factory2.setDatabase(1);
|
||||
factory2.afterPropertiesSet();
|
||||
StringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection());
|
||||
try {
|
||||
assertEquals("bar",conn2.get("foo"));
|
||||
} finally {
|
||||
if(conn2.exists("foo")) {
|
||||
conn2.del("foo");
|
||||
}
|
||||
conn2.close();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -22,6 +22,7 @@ import static org.junit.Assert.fail;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
import static org.springframework.data.redis.SpinBarrier.waitFor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -36,6 +37,7 @@ import org.springframework.data.redis.connection.DefaultStringRedisConnection;
|
||||
import org.springframework.data.redis.connection.RedisConnection;
|
||||
import org.springframework.data.redis.connection.RedisStringCommands.BitOperation;
|
||||
import org.springframework.data.redis.connection.ReturnType;
|
||||
import org.springframework.data.redis.connection.StringRedisConnection;
|
||||
import org.springframework.test.annotation.IfProfileValue;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
@@ -261,4 +263,24 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra
|
||||
}
|
||||
}, 3000l));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMove() {
|
||||
connection.set("foo", "bar");
|
||||
actual.add(connection.move("foo", 1));
|
||||
verifyResults(Arrays.asList(new Object[] { true}), actual);
|
||||
// Lettuce does not support select when using shared conn, use a new conn factory
|
||||
LettuceConnectionFactory factory2 = new LettuceConnectionFactory();
|
||||
factory2.setDatabase(1);
|
||||
factory2.afterPropertiesSet();
|
||||
StringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection());
|
||||
try {
|
||||
assertEquals("bar",conn2.get("foo"));
|
||||
} finally {
|
||||
if(conn2.exists("foo")) {
|
||||
conn2.del("foo");
|
||||
}
|
||||
conn2.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,8 +42,9 @@ import org.springframework.data.redis.TestCondition;
|
||||
import org.springframework.data.redis.connection.AbstractConnectionPipelineIntegrationTests;
|
||||
import org.springframework.data.redis.connection.DefaultStringRedisConnection;
|
||||
import org.springframework.data.redis.connection.DefaultStringTuple;
|
||||
import org.springframework.data.redis.connection.ReturnType;
|
||||
import org.springframework.data.redis.connection.RedisStringCommands.BitOperation;
|
||||
import org.springframework.data.redis.connection.ReturnType;
|
||||
import org.springframework.data.redis.connection.StringRedisConnection;
|
||||
import org.springframework.data.redis.connection.StringRedisConnection.StringTuple;
|
||||
import org.springframework.test.annotation.IfProfileValue;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
@@ -449,6 +450,26 @@ public class LettuceConnectionPipelineIntegrationTests extends
|
||||
}, 3000l));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMove() {
|
||||
connection.set("foo", "bar");
|
||||
actual.add(connection.move("foo", 1));
|
||||
verifyResults(Arrays.asList(new Object[] { true}), actual);
|
||||
// Lettuce does not support select when using shared conn, use a new conn factory
|
||||
LettuceConnectionFactory factory2 = new LettuceConnectionFactory();
|
||||
factory2.setDatabase(1);
|
||||
factory2.afterPropertiesSet();
|
||||
StringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection());
|
||||
try {
|
||||
assertEquals("bar",conn2.get("foo"));
|
||||
} finally {
|
||||
if(conn2.exists("foo")) {
|
||||
conn2.del("foo");
|
||||
}
|
||||
conn2.close();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
protected Object convertResult(Object result) {
|
||||
Object convertedResult = super.convertResult(result);
|
||||
|
||||
Reference in New Issue
Block a user