MINOR: clarify message ordering with max in-flight requests and idempotent producer#10690
Conversation
| + "are not explicitly set by the user, suitable values will be chosen. If incompatible values are set, " | ||
| + "a <code>ConfigException</code> will be thrown."; | ||
| + "a <code>ConfigException</code> will be thrown. With an idempotent producer, setting the <code>" + MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION | ||
| + "</code> greater than 1 will not break ordering guarantees."; |
There was a problem hiding this comment.
nit: max-in-flight cannot be larger than 5 if idempotent producer is enabled.
There was a problem hiding this comment.
That requirement is covered a few sentences before this one, it might be cut off by Github. I think it's clear that by "greater than 1", we just mean "between 1 and 5, the maximum allowable limit as stated above"
There was a problem hiding this comment.
Instead of an additional sentence at the end, could we modify the first sentence to also mention ordering?
|
Wow, all checks actually passed! That's the second completely green build I've seen in 24 hours, must be my lucky day 😄 |
| + " Note that if this setting is set to be greater than 1 and there are failed sends, there is a risk of" | ||
| + " message re-ordering due to retries (i.e., if retries are enabled)."; | ||
| + " message re-ordering due to retries (i.e., if retries are enabled). With an idempotent producer, this" | ||
| + " can be up to 5 and still provide ordering guarantees."; |
There was a problem hiding this comment.
The enable.idempotence will be true by default in 3.0, so we should perhaps have the "up to 5" thing first.
|
From my side: ship it. |
|
Some unrelated test failures in Will merge to trunk |
…e-allocations-lz4 * apache-github/trunk: (43 commits) KAFKA-12800: Configure generator to fail on trailing JSON tokens (apache#10717) MINOR: clarify message ordering with max in-flight requests and idempotent producer (apache#10690) MINOR: Add log identifier/prefix printing in Log layer static functions (apache#10742) MINOR: update java doc for deprecated methods (apache#10722) MINOR: Fix deprecation warnings in SlidingWindowedCogroupedKStreamImplTest (apache#10703) KAFKA-12499: add transaction timeout verification (apache#10482) KAFKA-12620 Allocate producer ids on the controller (apache#10504) MINOR: Kafka Streams code samples formating unification (apache#10651) KAFKA-12808: Remove Deprecated Methods under StreamsMetrics (apache#10724) KAFKA-12522: Cast SMT should allow null value records to pass through (apache#10375) KAFKA-12820: Upgrade maven-artifact dependency to resolve CVE-2021-26291 HOTFIX: fix checkstyle issue in KAFKA-12697 KAFKA-12697: Add OfflinePartitionCount and PreferredReplicaImbalanceCount metrics to Quorum Controller (apache#10572) KAFKA-12342: Remove MetaLogShim and use RaftClient directly (apache#10705) KAFKA-12779: KIP-740, Clean up public API in TaskId and fix TaskMetadata#taskId() (apache#10735) KAFKA-12814: Remove Deprecated Method StreamsConfig getConsumerConfigs (apache#10737) MINOR: Eliminate redundant functions in LogTest suite (apache#10732) MINOR: Remove unused maxProducerIdExpirationMs parameter in Log constructor (apache#10723) MINOR: Updating files with release 2.7.1 (apache#10660) KAFKA-12809: Remove deprecated methods of Stores factory (apache#10729) ...
The docs for the
max.in.flight.requests.per.connectionandenable.idempotenceconfigs currently imply that setting the max in-flight request greater than 1 will break the message ordering guarantee, but that is only true ifenable.idempotenceis false. When using an idempotent producer, the max in-flight request can be up to 5 without re-ordering messages.See this discussion