Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from lettuce-io:master #1

Open
wants to merge 808 commits into
base: master
Choose a base branch
from
Open

Conversation

pull[bot]
Copy link

@pull pull bot commented Jun 14, 2019

See Commits and Changes for more details.


Created by pull[bot]. Want to support this open source service? Please star it : )

mp911de and others added 30 commits November 12, 2018 16:29
Add author and since tags. Add excludeCommandArgsFromSpanTags(…) builder method to reflect default nature of args inclusion in tracing.
Fix visibility for API generator as JUnit 4 requires public types. *sigh*.
Lettuce now considers declared parameters when bound by using annotations. Previously, DefaultCommandMethodVerifier counted method arguments and bind markers as individual parameters which doubled the number of command args so command validation failed.
…sageRatio #906

We now allow configuration of when ByteBuf.discardReadBytes() gets called. Memory freeing can be useful during decoding of large responses instead of waiting until decoding is finished.

Original pull request: #916
Improve documentation. Add author tags. Precompute expected-to-discard buffer usage ratio instead of computing it on each discard. Add override to ClusterClientOptions Builder. Add and fix tests. Reformat code.

Original pull request: #916
Lettuce now makes sure to properly release temporary buffers after encoding keys and values. This avoids memory leaks caused by encoding errors.
…ASTER #923

Lettuce now reuses master connections when ReadFrom is configured to MASTER (which is the default configuration). By reusing the master connection, we can reduce the number of used connections by up to 50% as we don't need an additional read connection while talking to the same node.
Lettuce now emits ReconnectFailedEvent if a reconnect attempt fails along the cause and the retry counter. This event allows detection of persistent reconnect failures.
Refactor CompressionCodec into utility class.
Emission of data and completion signals using the reactive API can now use Lettuce's EventExecutorGroup instead of the I/O thread. Scheduler usage allows multiplexing of threads and early I/O thread release.

Using a single Redis connection in a reactive context can cause effectively single-threaded behavior as processing of downstream operators happens typically on the I/O thread. Compute-intensive processing consumes I/O thread capacity and results in performance decrease.
PubSubCommandHandler now considers correctly chunked Pub/Sub messages if a previous chunk was used to decode an out of band response (message/pmessage) while a command was sent. Previously, decoding got stuck because the command was attempted to be decoded with the next chunk.
Lettuce now listens to events raised from routing requests to uncovered slots. Command dispatch for read/write commands that terminates with PartitionSelectorException (Cannot determine a partition …) is now the trigger for uncovered slot events.

Uncovered slots can be a late indicator for a topology change in which a number of command fails before the topology is updated to recover operations.
Topology refresh scheduling by an adaptive trigger now emits a AdaptiveRefreshTriggeredEvent that allows applications to get notified about an adaptive refresh so application can track the state of the topology view and potentially register another topology update.
Add author and since tags. Reorder method to align with alphabetical ordering. Simplify test.

Original pull request: #867.
ReadFrom can now express whether it is order-sensitive or non-sensitive. This allows the using code to apply optimizations such as caching for order-sensitive implementation or randomization for non-sensitive implementations.

ReadFrom.ANY is an implementation that allows reads from any node without considering the actual node ordering.


Netty has deprecated ConcurrentSet and so we're moving to the Java-provided alternative.
mp911de and others added 29 commits April 16, 2020 21:04
XINFO, XLEN, XPENDING, XRANGE, XREVRANGE, and XREAD can now be issued to replicas.
Forward-port of GEO read-only commands.
Because it contains a stupid compiler bug that was fixed only in later versions.
We now eagerly attempt to obtain a PauseDetector instance to avoid additional locks leading to cyclic locks by using computeIfAbsent(…).

DefaultPauseDetectorWrapper.release/retain methods now ensure that these methods cannot be called concurrently and getPauseDetector() uses now a busy-spin instead of Thread.sleep(…).
Correctly bubble InterruptedExceptions
Exceptions are unwrapped now in a single utility. Future synchronization properly creates exception wrappers to associate the local stack trace with the exception.
Reduce thread count as the number of blocking tasks was reduced in the past releases.
…easier customization #1243

We now allow customization of the ThreadFactory when using DefaultEventLoopGroupProvider.
* Brave 5.10.2 -> 5.11.2
* Log4j 2.13.1 -> 2.13.2
* Netty 4.1.48.Final -> 4.1.49.Final
When ASK redirect is executed, command is executed twice. So it was modified to remove duplicates.
Reformat code. Tweak Javadoc. Add author tag.
Reformat code. Forward existing match(…) implementation to new method. Add since and author tags.
Previously, PauseDetectorWrapper was initialized once and a later loop attempted to retrieve the PauseDetector assuming that the previous code would had initialized the PauseDetector.

Due to concurrency it is possible that the PauseDetector instance is being released while another thread wants to obtain the PauseDetector. This gap could lead to infinite loops as the instance is never allocated. The refactored code include now the initialization so concurrent initialization/release are now properly guarded.
xpending with Range and Limit aims for a range format of the XPENDING command output. Previously, calling this method without Limit appended just the consumer name which is not a valid combination for that command. We now apply a synthetic limit of Long.MAX_VALUE to obtain the range format to avoid format changes or syntax errors.
* AssertJ 3.15.0 -> 3.16.1
* CDI API 2.0 -> 2.0.SP1
* JUnit 5.6.1 -> 5.6.2
* Log4j 2.13.2 -> 2.13.3
* Netty 4.1.49.Final -> 4.1.50.Final
* RxJava 3.0.2 -> 3.0.4
Fix compiler warnings
@mp911de mp911de deleted the master branch June 13, 2020 10:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⤵️ pull merge-conflict Resolve conflicts manually
Projects
None yet
Development

Successfully merging this pull request may close these issues.