Commit Graph

1037 Commits

Author SHA1 Message Date
Oliver Gierke
31947789f4 DATAREDIS-297 - Updated changelog. 2014-05-02 14:41:00 +02:00
Oliver Gierke
ec10cb40f6 DATAREDIS-297 - Improve changelog to make sure we can automate additions.
Moved the = line below the additional informations to make sure we find the right spot to add additional changelog entries when automating the release preparations.
2014-04-30 16:38:55 +02:00
Christoph Strobl
ce8d932a46 DATAREDIS-226 - Syntax exceptions using lettuce should be reported immediately.
If running in transaction mode we now do a rudimentary check if the provided number of arguments matches the ones defined for the RedisCommand to execute.

If the command passes this first check and causes an error on redis server one has to check results for Command.getOutput().hasError().

Original Pull Request: #66.
2014-04-29 13:23:20 +02:00
Christoph Strobl
bc1bbd1d39 DATAREDIS-73 - Add support for spring managed transactions.
RedisTemplate now supports enabling of transaction support, which is disabled by default.

In case of enabled transaction support the RedisConnections will be bound to the current thread during ongoing outer transactions. We call MULTI at the beginning and depending on transaction state EXEC or DISCARD at its end.

To support read operations during the transaction we wrap a proxy around the bound connection piping read operations to a new (non thread bound) connection obtained by the underlying RedisConnectionFactory.

Transaction support is available for jedis, lettuce and srp, while had to be skipped for jredis due to the lack of support for MULTI.

Original pull request: #64.
2014-04-25 13:53:36 +02:00
Christoph Strobl
4e4a2961da DATAREDIS-294 - TypedTuple should allow sorting using java sort().
Updated Comparable type information to allow usage with standard java sort.
2014-04-25 13:12:18 +02:00
icedrake
6d7c5ce9cd DATAREDIS-293 - JedisConnection, allow bulk addition with same score.
Added version check for jedis library as the operation had been introduced in 2.4.

Original Pull Request: #63
2014-04-11 11:02:31 +02:00
Spring Buildmaster
db2da6dd50 DATAREDIS-292 - Prepare next development iteration. 2014-03-31 05:40:24 -07:00
Spring Buildmaster
2040a12a8c DATAREDIS-292 - Release version 1.3.0.M1. 2014-03-31 05:40:22 -07:00
Thomas Darimont
05db8749d4 DATAREDIS-292 - Prepare release 1.3.0 M1.
Update release notes, changelog and readme.

Original pull request: #61.
2014-03-31 13:39:27 +02:00
reta
aa739f4135 DATAREDIS-289 - Avoid NPE in DefaultValueOperations#append() in case of pipelining or/and multi/exec calls.
We now return null if DefaultValueOperations#append() was applied to a non-existing list and thus returned null. Previously a NPE was thrown in case of pipelining or/and multi/exec calls.

Original pull request: #48.
2014-03-26 14:00:16 +01:00
Christoph Strobl
f366ffc94e DATAREDIS-284 - Add support for zCard to ZSetOperations.
'zCard' has been introduced in addition to 'size' as it feels more natural for people using redis. 'size' in 'ZSetOperations' / 'BoundZsetOperations' now delegate to 'zCard'.

Original Pull Request: #55
2014-03-26 13:22:55 +01:00
Christoph Strobl
d35375ec74 DATAREDIS-277 - Add support for 'SLAVEOF'.
'SLAVEOF' and 'SLAVEOF NO ONE' are available via 'RedisConnection' and 'RedisOperations' for 'jedis', 'jredis', 'lettuce' and 'srp'.

Original Pull Request: #57
2014-03-26 13:15:33 +01:00
Christoph Strobl
2b280e57e8 DATAREDIS-287 - 'setBit' should return boolean value.
SetBit now returns the original bit value stored at the offset. The result will also be added in pipeline and transaction mode which means that the final result collection may now contain more entries than in prior versions.

Original Pull Request: #58
2014-03-26 12:54:38 +01:00
Christoph Strobl
2679405e96 DATAREDIS-268 - Add support for 'CLIENT LIST'.
'RedisConnection' and 'RedisTemplate' have been extended by 'getClientList' retrieving client informations from redis. 'RedisClientInfo' provides access via specified getters as well as an more general approach directly using the keys (like 'qubuf').

The operation is available for 'jedis', 'lettuce' and 'srp'.

Original Pull Request: #53
2014-03-26 12:42:09 +01:00
Christoph Strobl
4bf438f563 DATAREDIS-270 - Add support for 'CLIENT GETNAME'.
Support for getting client connection name has been added for 'jedis', 'jredis' and 'srp' drivers.

Using 'jredis' will throw 'UnsupportedOperationException'.

Original Pull Request: #51
2014-03-26 12:05:28 +01:00
Christoph Strobl
e280a23550 DATAREDIS-269 - Add support for 'CLIENT SETNAME'.
Setting client name is possible for 'jedis', 'lettuce' and 'srp'.
Using 'jredis' throws 'UnspupportedOperationException'.

Original Pull Request: #54
2014-03-26 11:44:01 +01:00
Christoph Strobl
6a6d03eb4c DATAREDIS-267 - Add support for 'CLIENT KILL'.
Killing a client connection can be done via 'RedisConnection' and 'RedisOperations' using 'jedis', 'lettuce' and 'srp'.

We use dedicated parameters for host and port building up the redis format (host:port) for connection identification.

Original Pull Request: #56
2014-03-26 11:33:35 +01:00
Christoph Strobl
1c47330ec9 DATAREDIS-286 - Avoid overflow in JedisConnection#expire / #pexpire.
Added unit test to verify that 'time()' is called prior to 'pExpireAt'.
2014-03-24 11:29:53 +01:00
Thomas Darimont
59582f1910 DATAREDIS-286 - Avoid overflow in JedisConnection#expire / #pexpire.
Workaround Jedis issue https://github.com/xetorthio/jedis/pull/575.
We now delegate calls to expire(...) to pExpireAt(...) in case the seconds parameter is > than Integer.MAX_VALUE.
We query the server time to compute the new expiration date.

Original pull request: #52.
2014-03-24 11:28:40 +01:00
Christoph Strobl
408b52a449 DATAREDIS-261 - Upgrade to commons-pool2.
'JRedisPool' and 'DefaultLettucePool' have been migrated to 'commons-pool2'.

'PoolConfig' has been deprecated, and will be removed in '1.4', as all required operations are available via 'GenericObjectPoolConfig'.

Along the way a minor bug within 'LettuceConnection' has been resolved, which prevented 'RedisAsyncConnections' from being properly closed/returned to pool.

Original Pull Request: #50
2014-03-20 13:07:05 +01:00
Christoph Strobl
d116d3825a DATAREDIS-184 - Add support for 'SAVE/NOSAVE' to shutdown.
Created and added 'ShutdownOptions' to 'RedisServerCommands'. The full implementation is available for 'lettuce' and 'srp'.

When using 'jedis' the command is emulated using lua script via 'eval'.

For 'jredis' the method is not available and will throw 'UnsupportedOperationException'.

Original Pull Request: #47
2014-03-20 12:49:41 +01:00
Christoph Strobl
4b2ccbecb9 DATAREDIS-271 - Add support for 'pSetEx'.
Support for 'pSetEx' has been added for 'jedis' & 'srp'.
For 'lettuce' the command is emulated using 'eval'.

There is no support for 'pSetEx' when using 'jredis'.

'DefaultValueOperations.set' used with 'TimeUnit.MILLISECONDS' will fallback to 'setEx' in case 'pSetEx' is not supported by the driver in use.

Original pull request: #46.
2014-03-20 12:36:09 +01:00
Christoph Strobl
a3ac8d0899 DATAREDIS-285 - LettuceConnection.execute should fully read response.
'LettuceConnection' used 'ByteArrayOutput' as default for execute which did not fully read all values that might be included in the response.

To overcome this issue 'TypeHints' have been added which map a given 'CommandType' to the most recent 'CommandOutput'.  As not all commands could be mapped that way due to the result depending on input parameters in some cases, it might be required to manually provide the type hint when calling execute.

Additional tests have been added to assert 'execute' works properly for 'jedis', 'jredis' and 'srp'.

Original Pull Request: #49
2014-03-19 11:26:19 +01:00
Thomas Darimont
9cf484d25a DATAREDIS-283 - RedisCacheManager.loadCaches overrides already defined cache names in afterPropertiesSet().
We now retain the potentially already configured caches during the initialisation of the RedisCacheManager bean. Previously we discarded the already configured caches which was an undesired side-effect.

Original pull request: #45.
2014-03-13 06:33:37 +01:00
Thomas Darimont
ec2a760dd6 DATAREDIS-275 - Rename RedisServerCommands.bgWriteAof to bgReWriteAof.
Renamed method and placed @Deprecated delegate-Methods in order to avoid breaking clients.

Original pull request: #44.
2014-03-10 09:00:01 +01:00
Spring Buildmaster
86205e3b67 DATAREDIS-256 - Prepare next development iteration. 2014-03-03 05:48:34 -08:00
Thomas Darimont
0f8c68c251 DATAREDIS-282 - PubSubResubscribeTests should use jedis without pool.
Disabled jedis pooling in PubSubResubscribeTests since all the other tests also don't use a pool.

Original pull request #43.
2014-03-03 14:36:06 +01:00
Christoph Strobl
1881e626d0 DATAREDIS-256 - Prepare 1.2 GA Release.
Update readme and changelog.

Original Pull Request: #42
2014-03-03 10:31:09 +01:00
Christoph Strobl
bc31655417 DATAREDIS-279 - Update documentation
Corrected typos and added copyright information.
Updated sync nature for subscriptions using RMLC.
Added RedisTemplate command reference.
Added include-fallback to appendix-schema reference.

Original pull request: #41.
2014-02-27 13:54:14 +01:00
Spring Buildmaster
c6c38180f3 DATAREDIS-262 - Prepare next development iteration. 2014-02-19 03:36:35 -08:00
Spring Buildmaster
84698127bf DATAREDIS-262 - Release version 1.2.0.RC1. 2014-02-19 03:36:29 -08:00
Christoph Strobl
9215f6c139 DATAREDIS-262 - Prepare 1.2.0.RC1 release.
Update changelog, notice, readme.
Renamed apache-license to license.
2014-02-19 10:40:32 +01:00
Christoph Strobl
c2f2febb81 DATAREDIS-259 - Upgrade Spring Framework to latest 3.2.x.
Upgraded to Spring 3.2.8.RELEASE.

Original pull request: #39
2014-02-19 10:08:56 +01:00
Christoph Strobl
3a49fd14e5 DATAREDIS-266 - Update Documentation.
Updated links in javadoc. Added API javadoc with references to the redis commands. Updated reference manual. Updated Readme and contributing guide.
Updated (SCM and developer information in) gradle build and template.mf bundle manifest.

Original pull request: #38
2014-02-18 10:35:30 +01:00
Christoph Strobl
e003ef6ca3 DATAREDIS-206 - Add support for TIME operation.
Enhanced RedisServerCommands to reflect time operation and added empty implementation to recent RedisConnection abstractions.
Added implementation of time() for Srp, Jedis, Lettuce (emulated via eval).
Added UnsupportedOperation of time() JRedis since it doesn't support time command or sending scripts or sending raw commands via the underlying connection.
Added implementation for DefaultStringRedisConnection to delegate time() operation to native connection.
Added integration test to abstract base class. Ignored the test for those connections not supporting time command.

Original pull request: #34
2014-02-18 10:14:46 +01:00
Thomas Darimont
b4cc33a24c DATAREDIS-241 - Updated jedis to version 2.4.1.
Original pull request: #37
2014-02-18 10:10:08 +01:00
Christoph Strobl
82578066e8 DATAREDIS-246 - RedisCacheManager.getCache() does not match the logical of CompositeCacheManager.
By default RedisCacheManager lazily initializes RedisCaches when requested. To put it into static mode a defined set of cache names has to be passed to the CacheManager.

We changed the implementation so it  makes use of AbstractTransactionalCache introduced in Spring 3.2 which properly registers caches. Additionally the loadRemoteCachesOnStartup switch allows to retrieve and initialize existing caches by loading keys form redis server.

Further on RedisCacheManager can be set in transaction aware mode so that values are only put into cache after successful commit of surrounding transaction.

Original pull request: #33
2014-02-17 13:39:18 +01:00
Thomas Darimont
11f94b0810 DATAREDIS-265 - Update Java source and target compatibility to Java 6.
Updated build.gradle accordingly.

Original pull request: #36
2014-02-12 10:33:59 +01:00
Thomas Darimont
3750dbba31 DATAREDIS-264 - Update gradle version.
Updated gradle version to most recent one 1.11.

Original pull request: #35
2014-02-12 10:25:50 +01:00
Thomas Darimont
9a416fbcf7 DATAREDIS-259 - Upgrade to Spring 3.2.7.RELEASE.
Original pull request: #32
2014-02-06 18:33:58 +01:00
Christoph Strobl
5466a70034 DATAREDIS-260 - Upgrade to jedis 2.3.1.
Jedis upgraded from commons-pool to commons-pool2. Required changes have been introduced. Currently there are both commons-pool and commons-pool2 in class-path which is no problem as those dependencies are optional.

Original pull request: #31
2014-02-06 18:26:05 +01:00
Christoph Strobl
dea6403c24 DATAREDIS-166 - Corrupted i/o streams subscribing to both patterns and channels.
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
2014-02-06 09:54:24 +01:00
Christoph Strobl
d4c5990831 DATAREDIS-170 - Cancel SubscriptionTask can leave connection open.
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
2014-02-05 18:22:27 +01:00
Thomas Darimont
eaf249af90 DATAREDIS-188 - Infinite loop renaming a non-existent Collection when using Lettuce.
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
2014-02-05 09:50:32 +01:00
Christoph Strobl
e42e803603 DATAREDIS-254 - Clean up codebase to match spring-data conventions
Remove orphaned test context files.
Update documentation to reflect new version dependencies.
2014-01-28 10:55:12 +01:00
Christoph Strobl
e0524379d6 DATAREDIS-254 - Clean up codebase to match spring-data conventions
format code with spring data formatter
2014-01-28 10:55:00 +01:00
Andy Wilkinson
b99992a8f5 DATAREDIS-257 - Shutdown the client when DefaultLettucePool is destroyed.
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
2014-01-23 09:54:40 +01:00
Thomas Darimont
b5adde7430 DATAREDIS-242 - Listener Container start() Returns Before Container is Really Started.
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.
2014-01-20 14:23:18 +01:00
Thomas Darimont
c6d2d7f9c9 DATAREDIS-241 - Add a Jackson2 based RedisSerializer.
Introduced Jackson2JsonRedisSerializer and added optional dependency for Jackson2 core/databind (fasterxml) library.
Added additional parameterised test cases. Needed to increase the max active connections limit for the connection pools used in RedisMapTests.
2014-01-17 12:04:05 +01:00
Jennifer Hickey
e1b421f942 DATAREDIS-237 - Upgrade to Jedis 2.2.1.
Update to Jedis 2.2.1 and Implement newly supported Operations.
Handle removed BinaryTransaction class.
Handle some Jedis return types changed from String to bytes.
Handle some Jedis arg types changed from int to long by removing casting.
Remove ignored tests for issues fixed in Jedis 2.2.1
Throw UnsupportedOpException on multi-arg bitOp NOT
Ensure consistent results across all drivers when bitOp is called with NOT and more than one arg.
2014-01-16 14:34:02 +01:00