Commit Graph

854 Commits

Author SHA1 Message Date
Christoph Strobl
c95d54732a Fix null return value of GEODIST command.
Relates to: #1797
2021-01-26 16:53:17 +01:00
Mark Paluch
501de9c1fa Update copyright year to 2021.
Closes #1942
2021-01-12 10:44:09 +01:00
Greg L. Turnquist
995931cee2 DATAREDIS-1263 - Include proper import statements.
To ensure Kotlin builds work properly, certain types need explicit import statements.
2020-12-09 11:40:39 -06:00
Mark Paluch
a5700ba71a DATAREDIS-1230 - Revise error handling in StreamReceiver and StreamMessageListenerContainer.
Reading and deserialization in StreamReceiver and StreamMessageListener is now decoupled from each other to allow fine-grained control over errors and resumption.

Previously, we used the Template API to read and deserialize stream records. Now the actual read happens before the deserialization so that errors during deserialization of individual messages can be handled properly. This split also allows advancing in the stream read. Previously, the failed deserialization prevented of getting hold of the non-serialized Stream record which caused the stream receiver to remain at the offset that fetched the offending record which effectively lead to an infinite loop.

We also support a resume function in StreamReceiver to control whether stream reads should be resumed or terminated.

Original Pull Request: #576
2020-12-07 11:10:50 +01:00
Christoph Strobl
7d2bf8f852 DATAREDIS-891 - Update documentation.
Update since tags, add issue reference and fix new line issues in reference documentation.

Original Pull Request: #573
2020-12-07 10:12:52 +01:00
Mark Paluch
1912d0c999 DATAREDIS-891 - Revise RedisConnection transaction/closure resource binding.
We now correctly consider the transactional state along with the requested bindings scope when binding RedisConnection for reuse.

Previously, enabling transaction support on RedisTemplate registered the connection unconditionally with TransactionSynchronizationManager expecting a TransactionManager to close/unbind the connection upon transaction cleanup. This behavior could easily lead to lingering connections when a transactional RedisTemplate was used outside of a managed transaction.

We now distinguish between closure-scope binding and transaction binding.

Closure-scoped bindings (RedisTemplate.execute(SessionCallback)) do not interfere with transactional resources if there's no transactionally bound RedisConnection.

Closure-scope however reuses a transactionally bound connection.

Transaction-scoped binding binds only a connection to the transaction if there's an active transaction. Without an ongoing transaction, RedisTemplate does no longer bind connections to TransactionSynchronizationManager.

Original Pull Request: #573
2020-12-07 10:12:19 +01:00
Mark Paluch
3823da8f18 DATAREDIS-1246 - Use Queue.offer(…) instead of Queue.add(…) to buffer Stream subscription overflow.
Using now the method implemented by SpscArrayQueue instead of the not implemented one.
2020-11-11 09:56:33 +01:00
Christoph Strobl
a4c2965d81 DATAREDIS-1245 - Use ClassUtils for assignable check in connection.ReturnType.
Original Pull Request: #571
2020-11-10 14:16:11 +01:00
Mark Paluch
cf5ce41ee0 DATAREDIS-1245 - Polishing.
Fix Javadoc and generics.

Original Pull Request: #571
2020-11-10 14:15:53 +01:00
Mark Paluch
366b5ffd25 DATAREDIS-1245 - Consider List subtypes used with RedisScript as MULTI return type.
We now consider List and subtypes of List to be returned as MULTI return type. Previously, List subtypes were considered to represent the value type.

Original Pull Request: #571
2020-11-10 12:03:51 +01:00
Greg L. Turnquist
7dc5a2033f DATAREDIS-1220 - Add support for JDK 15 testing. 2020-11-03 15:26:04 -06:00
Mark Paluch
fff1d3e691 DATAREDIS-1233 - Introduce and use Junit5 based ParameterizedRedisTest. 2020-10-26 10:43:24 +01:00
Mark Paluch
8e4f796309 DATAREDIS-1234 - Consistently return List<Long> from LPOS command.
We now convert pipeline/transaction results to List<Long> to ensure a consistent return type.

Original Pull Request: #570
2020-10-23 13:02:39 +02:00
Mark Paluch
7f9de716c8 DATAREDIS-1212 - Polishing.
Remove overly pessimistic null checks. Use constant when channel/body are empty to avoid allocations. Remove superfluous final keywords.

Original pull request: #559.
2020-10-16 13:49:55 +02:00
Thomas Heigl
588bf0a7ea DATAREDIS-1212 - Remove redundant null-check in RedisKeyValueAdapter.
Original pull request: #559.
2020-10-16 13:47:15 +02:00
Mark Paluch
1964ed15c6 DATAREDIS-729 - Polishing.
Reorder methods so lexCount(…) comes after count(…). Tweak Javadoc wording. Simplify tests.

Original pull request: #569.
2020-10-14 09:49:04 +02:00
anshlykov
bd1332ec5c DATAREDIS-729 - Add support for ZLEXCOUNT.
Original pull request: #569.
2020-10-14 09:47:14 +02:00
Mark Paluch
4b33a62f64 DATAREDIS-1231 - Polishing.
Add author tag.

Fix typos in test method names.

Original pull request: #568.
2020-10-13 16:07:53 +02:00
jot.zhao
ead954a743 DATAREDIS-1231 - Use Jedis command routing if multiple BRPOP keys map to a single slot.
Original pull request: #568.
2020-10-13 16:07:41 +02:00
Mark Paluch
41136c6934 DATAREDIS-729 - Expose reverseRangeByLex methods on Template API.
Also, switch methods to default methods where applicable.

Original pull request: #566.
2020-10-13 12:38:28 +02:00
Mark Paluch
df37dc812b DATAREDIS-729 - Polishing.
Tweak assertion messages and consistently use constants. Reformat code. Join assertions in tests.

Original pull request: #566.
2020-10-13 12:14:01 +02:00
anshlykov
da81275c4d DATAREDIS-729 - Add support for ZREVRANGEBYLEX command.
Original pull request: #566.
2020-10-13 12:13:43 +02:00
Christoph Strobl
0f54fcf796 DATAREDIS-1103 - Polishing.
Move keepTTL to Expiration and remove superfluous methods from interfaces. Add tests for reactive variant and work around an open issue in Jedis to support KEEPTTL though the API does not offer that option directly.

Original Pull Request: #562
2020-10-08 16:29:20 +02:00
dengliming
232c8a5dd4 DATAREDIS-1103 - Support new KEEPTTL option of the SET operation
Original Pull Request: #562
2020-10-08 16:14:09 +02:00
Christoph Strobl
3920890c01 DATAREDIS-1226 - Polishing.
Remove justId from XClaimOptions and set the flag inside xClaimJustId to avoid errors when processing justId inside xClaim having a different return type.

Original Pull Request: #567
2020-10-07 12:25:23 +02:00
dengliming
d2dce680cc DATAREDIS-1226 - Add support for xClaimJustId using Lettuce.
Original Pull Request: #567
2020-10-07 12:25:15 +02:00
Yanming Zhou
248b62430e DATAREDIS-1225 - Fix typos in Javadoc.
RedisStandaloneConfiguration should be RedisSentinelConfiguration.

Original pull request: #531.
2020-10-05 14:42:27 +02:00
Christoph Strobl
67fc916512 DATAREDIS-1214 - Fix null return value of GEODIST command.
Original pull request: #565.
2020-10-05 13:59:33 +02:00
Mark Paluch
b26a93280a DATAREDIS-1223 - Upgrade to Lettuce 6.0 GA.
Adopt HashCommands to changed HGETALL method signature returning Flux<KeyValue> instead of Mono<Map>.
2020-10-05 11:43:03 +02:00
Christoph Strobl
f1d88484fd DATAREDIS-1222 - Polishing.
Replace limit != null checks with limit.isUnlimited() for non nullable parameters and adapt constructor visibility to owning class level.

Original Pull Request: #564
2020-09-28 15:01:00 +02:00
anshlykov
446e58c505 DATAREDIS-1222 - Fix limit parameter in DefaultStringRedisConnection#zRangeByLex(String,Range,Limit)
Original Pull Request: #564
2020-09-28 14:59:32 +02:00
Mark Paluch
c16e13ae75 DATAREDIS-1085 - Polishing.
Add author and since tags. Introduce separate approximate() method instead of changing count(…) to retain backwards compatibility.

Original pull request: #561.
2020-09-16 09:56:27 +02:00
dengliming
99cf4a2238 DATAREDIS-1085 - Support approximate trimming using XTRIM.
Original pull request: #561.
2020-09-16 09:50:08 +02:00
Mark Paluch
c72a84885c DATAREDIS-1196 - Polishing.
Tweak Redis 6.0.6 requirement wording. Join assertions where possible and use more concise assertions.

Original pull request: #563.
2020-09-16 09:28:34 +02:00
Christoph Strobl
76cbe5124d DATAREDIS-1196 - Add support for LPOS command.
Original pull request: #563.
2020-09-16 09:28:16 +02:00
Christoph Strobl
bdbba085da DATAREDIS-1046 - Polishing.
Guard tests to allow execution against single node instance for quick dev turnaround and replace usage of Optional with null and @Nullable annotations.

Original Pull Request: #558
2020-09-11 13:41:32 +02:00
Mark Paluch
717a196da0 DATAREDIS-1145 - Support Sentinel password for Jedis.
We now support password-protected Sentinel configurations when using Jedis.

Original Pull Request: #558
2020-09-11 13:21:31 +02:00
Mark Paluch
d97c5df130 DATAREDIS-1046 - Use ACL authentication when username is configured.
Upgrade to Redis 6 for tests. Introduce support for username in configurations that support authentication.

Original Pull Request: #558
2020-09-11 13:20:48 +02:00
Mark Paluch
da5bab1fb2 DATAREDIS-1197 - Upgrade to Lettuce 6.0 RC1.
Adopt to API changes.

Original Pull Request: #554
2020-09-10 12:34:16 +02:00
Christoph Strobl
51ea73afc6 DATAREDIS-1207 - Fix LettuceStreamCommands.xPending Range conversion..
Original Pull Request: #556
2020-09-03 10:25:39 +02:00
Dejan Jankov
0ee04a7dc6 DATAREDIS-1207 - Fix LettuceStreamCommands.xRevRange Range conversion.
LettuceStreamCommands.xRevRange converts Ranges with a StringCodec that produces Boundary<ByteBuffer>, while Lettuce expects the range's Boundary to include strings. The conversion worked well only in cases where the Range was unbounded (- or +), and failed with ClassCastException on the consuming site for other cases.

Original pull request: #556
2020-09-03 10:25:28 +02:00
kazhang
9b87d3f080 DATAREDIS-1210 - Fix loop in StreamReadOptions toString().
Original Pull Request: #557
2020-09-01 07:24:10 +02:00
Mark Paluch
e37f2f08ee DATAREDIS-1190 - Cluster rename now correctly overwrites existing keys.
rename(…) behavior in cluster-mode is now aligned with standalone Redis behavior that overwrites the target key if it already exists and the renamed key uses a different slot. Previously, the underlying restore command was called without the replace option which caused BUSYKEY failures.

Original Pull Request: #555
2020-08-12 09:48:17 +02:00
Mark Paluch
cfa586a798 DATAREDIS-1198 - Move off deprecated Spring Framework API.
Replace TransactionSynchronizationAdapter with TransactionSynchronization.
2020-08-04 13:43:55 +02:00
Mark Paluch
c148304c7c DATAREDIS-1195 - Polishing.
Simplify Expiration.from(…) construction.

Original pull request: #553.
2020-07-31 09:07:45 +02:00
Andre Prata
2db93e969e DATAREDIS-1195 - Make putIfAbsent atomic when TTL is set.
Original pull request: #553.
2020-07-31 09:07:38 +02:00
Mark Paluch
c57b13ce4a DATAREDIS-1191 - Guard calls to RedisConverter.read(…) to avoid empty objects.
We now check if the RedisBucket is empty to avoid empty objects being materialized from EntityReader.
2020-07-28 14:42:51 +02:00
Mark Paluch
5440bea5c0 DATAREDIS-1189 - Consistently translate Lettuce connection exceptions.
We now translate consistently connection/pooling exceptions in LettuceConnectionFactory by wrapping LettuceConnectionProvider with a variant that considers exception translation.
2020-07-28 14:18:48 +02:00
Mark Paluch
d054e2e5de DATAREDIS-1173 - Polishing.
Add Override annotations and Javadoc. Reformat test.

Original Pull Request: #549
2020-07-21 14:33:28 +02:00
Mark Paluch
e4fd036d81 DATAREDIS-1173 - Correctly unsubscribe from patterns/channels through LettuceSubscription.
doPUnsubscribe(…) and doUnsubscribe(…) now consider the all flag to unsubscribe from all subscribed patterns/channels. Previously, both methods didn't consider all and were invoked with an empty byte array which unsubscribed from an empty pattern/channel name and left subscriptions active.

Original Pull Request: #549
2020-07-21 14:33:02 +02:00