The issue has already been fixed in DATAREDIS-242 (see PR: #25), which now allows to reenable the previously failing test.
Additionally the tests now run against all supported client libraries except JRedis which does not support 'publish'.
Original pull request: #30
RedisMessageListenerContainer did not properly close connections if the subscription was canceled immediately after staring the container. Since DARAREDIS-242 the container waits for the subscription to complete and therefor no more connections remain open.
Additionally added missing parameters to run tests with JRedis.
Original pull request: #29
We run into an infinite loop in org.springframework.data.redis.support.collections.CollectionUtils.rename(K, K, RedisOperations<K, ?>) if no value was associated with the key which leads to operations.hasKey(...) always returning false which prevents the actual renaming. RedisCollections will only send rename command if values are present as empty collections cannot be stored and therefor cannot be renamed.
Original pull request: #28
DefaultLettucePool manages a RedisClient instance that's created
when afterPropertiesSet is called. The client was not being shutdown
as part of the pool's destroy() processing leading to a resource leak.
On OS X this would manifest itself as a growing number of kqueue file
descriptors being consumed eventually leading to a failure when
something tries to get a file descriptor and is unable to do so.
This commit updates destroy() to call the client's shutdown() method.
Original pull request: #26
We now wait for the subscription to be present in the connection in case of async connections by periodically checking whether the subscription is available in 100ms intervals. The max time to wait for the async subscription can be configured and is set to 2 seconds by default.
Moved SpinBarrier and TestCondition from test packages as static inner classes into RedisMessageListenerContainer. Included ConnectionUtils from tests into official API.
Since Redis 2.8.x keyOps#getExpire() returns -2 for empty collections (RedisList/RedisSet/RedisMap).
We're now adding a dummy entry to keep the test version agnostic. Previously getExpire() returned -1.
We also have to set the RedisAtomic(Integer|Long) to a value other than 0 to get the value stored appropriately.
For reference see the discussion in http://redis.io/commands/ttl
Due to some missing cleanup procedures excessive thread creation lead to JVM crashes during a full test run on some machines.
Improved test harness in order to properly shutdown unused threads.
Rewritten testPubSubWithNamedChannels in order to make it pass reliably by keeping the original test semantics.
Rewritten testPubSubWithPatterns in order to make it pass reliably by keeping the original test semantics.
Updated dependency of XStream since Spring framework 4.0 requires a newer version.
Spring 4 added another method to get cached object to the Cache interface. The method has been added to RedisCache in order to provide compatibility, while calling get internally and casting values to required type.
Updated dev team information.
Updated external site links (redis.io).
Updated project version information to latest GA (1.1.0.RELEASE) and latest BUILD-SNAPSHOT 1.2.0.BUILD-SNAPSHOT.
DATAREDIS-231
- Do not stop the container on Exception, as it
will attempt unnecessary unsubscribe
- Retry connect indefinitely until container is
stopped
- Ensure connection is closed after subscription
failure
- Set listening to false if SubscriptionTask errors
out for any reason
- Change default recovery interval to 5 seconds
DATAREDIS-153
- Return conn to pool as broken resource if NPE
occurs (for example if a null key or value is given),
preventing later flush of OutputStream with incomplete
data
- Workaround Jedis issue in pub/sub tests that prevents
subscribing with a pooled connection
- Continue not using pool in conn tests, as they
are too brittle with potentially unclosed pipelines,
unexecuted txs, etc
DATAREDIS-195
- Make expire and expireAt use pExpire and pExpireAt,
falling back to expire and expireAt if not available
(driver does not support or using Redis 2.4)
- Add new getExpire method that will return mills
if requested, using pTTL if supported
Can't specify a resource location for script as a
String in Spring app context, as it would get
injected as script text instead. Switched to property
injection for clarity.