This patch release fixes four bugs (two are fixed in one commit), contains two
internal improvements, and adds two other minor changes.
Bug fixes
If you were using the MaxBufferedBytes option and ever hit the max, odds are
likely that you would experience a deadlock eventually. That has been fixed.
If you ever produced a record with no topic field and without using DefaultProduceTopic,
or if you produced a transactional record while not in a transaction, AND if the client
was at the maximum buffered records, odds are you would eventually deadlock.
This has been fixed.
It was previously not possible to set lz4 compression levels.
There was a data race on a boolean field if a produce request was being
written at the same time a metadata update happened, and if the metadata
update has an error on the topic or partition that is actively being written.
Note that the race was unlikely and if you experienced it, you would have noticed
an OutOfOrderSequenceNumber error. See this comment
for more details.
Improvements
Canceling the context you pass to Produce now propagates in two more areas:
the initial InitProducerID request that occurs the first time you produce,
and if the client is internally backing off due to a produce request failure.
Note that there is no guarantee on which context is used for cancelation if
you produce many records, and the client does not allow canceling if it is
currently unsafe to do so. However, this does mean that if your cluster is
somewhat down such that InitProducerID is failing on your new client, you
can now actually cause the Produce to quit. See this comment
for what it means for a record to be "safe" to fail.
The client now ignores aborted records while consuming only if you have
configured FetchIsolationLevel(ReadCommitted()). Previously, the client relied
entirely on the FetchResponseAbortedTransactions field, but it's possible
that brokers could send aborted transactions even when not using read committed.
Specifically, this was a behavior difference in Redpanda, and the KIP that introduced
transactions and all relevant documents do not mention what the broker behavior
actually should be here. Redpanda itself was also changed to not send aborted
transactions when using read committed, but we may as well improve franz-go as well.
Decompression now better reuses buffers under the hood, reducing allocations.
Brokers that return preferred replicas to fetch from now causes an info level
log in the client.
... (truncated)
Commits
8b955b4 Merge pull request #793 from twmb/changelog-v1.17.1
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/twmb/franz-go from 1.17.0 to 1.17.1.
Changelog
Sourced from github.com/twmb/franz-go's changelog.
... (truncated)
Commits
8b955b4
Merge pull request #793 from twmb/changelog-v1.17.17f8a294
CHANGELOG: update for 1.17.1afcb32b
Merge pull request #792 from twmb/769305d8dc
kgo: allow record ctx cancelation to propagate a bit mored4982d7
kgo: add failure for 769718591a
Merge pull request #787 from twmb/7774e14d75
Merge pull request #786 from twmb/785e16c46c
Merge pull request #781 from asg0451/fix-lz4-compression-levels187266a
Merge pull request #774 from kalbhor/master940ed68
Merge pull request #762 from twmb/preferred_logDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show