-
Notifications
You must be signed in to change notification settings - Fork 14k
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
MINOR: clarify message ordering with max in-flight requests and idempotent producer #10690
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -201,7 +201,8 @@ public class ProducerConfig extends AbstractConfig { | |
public static final String MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION = "max.in.flight.requests.per.connection"; | ||
private static final String MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION_DOC = "The maximum number of unacknowledged requests the client will send on a single connection before blocking." | ||
+ " 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."; | ||
|
||
/** <code>retries</code> */ | ||
public static final String RETRIES_CONFIG = CommonClientConfigs.RETRIES_CONFIG; | ||
|
@@ -247,9 +248,10 @@ public class ProducerConfig extends AbstractConfig { | |
public static final String ENABLE_IDEMPOTENCE_DOC = "When set to 'true', the producer will ensure that exactly one copy of each message is written in the stream. If 'false', producer " | ||
+ "retries due to broker failures, etc., may write duplicates of the retried message in the stream. " | ||
+ "Note that enabling idempotence requires <code>" + MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION + "</code> to be less than or equal to 5, " | ||
+ "<code>" + RETRIES_CONFIG + "</code> to be greater than 0 and <code>" + ACKS_CONFIG + "</code> must be 'all'. If these values " | ||
+ "<code>" + RETRIES_CONFIG + "</code> to be greater than 0, and <code>" + ACKS_CONFIG + "</code> must be 'all'. If these values " | ||
+ "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. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: max-in-flight cannot be larger than 5 if idempotent producer is enabled. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 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. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Instead of an additional sentence at the end, could we modify the first sentence to also mention ordering? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. will do |
||
|
||
/** <code> transaction.timeout.ms </code> */ | ||
public static final String TRANSACTION_TIMEOUT_CONFIG = "transaction.timeout.ms"; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
enable.idempotence
will be true by default in 3.0, so we should perhaps have the "up to 5" thing first.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ijuma done