grav
grav copied to clipboard
chore(deps): update module github.com/twmb/franz-go to v1.6.0
This PR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
github.com/twmb/franz-go | require | minor | v1.5.2 -> v1.6.0 |
Release Notes
twmb/franz-go
v1.6.0
===
This release contains two new APIs, a minor bugfix, and other notable improvements and stabilizations.
The kadm package is now stabilized as a separate, v1.0 module. This module will remain separate from the top level franz-go so that it can have independent minor releases, and has more freedom to have major version bumps if necessary. I took stabilization as an opportunity to break & fix some infrequently used APIs; this can be seen in the commit linked below.
I have also created a new package for the schema registry, sr. This will likely live as a separate module for similar reasons to kmsg and kadm: to have more freedom to make major-version-changing breaking changes if Confluent decides to change some of their HTTP API. I expect to stabilize sr once I know of at least one use case that helps double check the API is alright.
Bugfix
Previously, if you consumed a topic that had record timestamps generated by the
broker per LogAppendTime
, this client would not set the timestamp properly
when consumed. We now set the timestamp properly.
Improvements
The client now allows the user to set a timestamp when producing: if a record's timestamp is non-zero, the client will not override it.
The default partitioner has been changed to the new UniformBytesPartitioner
.
This is an improvement on the previous StickyKeyPartitioner
in a few ways and
can be read about in KIP-794. The implementation in this client is
slightly different from KIP-794 in ways that are documented on the
UniformBytesPartitioner
itself. This new partitioner can result in more
balanced load over a long period of producing to your brokers. Note: the new
default partitioner partitions keys the same as the old default partitioner,
so this is not a behavior change.
Features
-
UniformBytesPartitioner
exists, which can be used for more balanced producing over long time periods. The default batch size switch is 64KiB, and you may want to tune this up or down if you produce in high or low throughput. -
kversion.V3_2_0()
now officially exists, and kversion correctly detects v3.2 brokers. -
kmsg has a new
UnsafeReadFrom
interface to help reduce garbage in some advanced scenarios (requires [email protected]).
Relevant commits
-
b279658
kadm: break APIs for 1.0 -
a23a076
bugfix source: properly set Timestamp for LogAppendTime records -
653010d
improvement producer: allow the user to set Timestamp -
d53c0fe
feature kmsg: add new UnsafeReadFrom interface -
5536ec1
feature kversion: addV3_2_0
-
0f65bb1
feature kgo: expose UniformBytesPartitioner -
82af4a1
and followup commits: add package sr, providing a client for the schema registry
v1.5.3
===
This bugfix release fixes a problem I noticed when reading Kafka source code last week. KIP-98 never specified what a sequence number wrapping meant when producing with idempotency enabled / with transactions, so I implemented this to wrap to negative. As it turns out, there is validation in the Kafka code that the sequence number must wrap to 0.
Thus, using this client, if an application produced 2**31
records to a single
partition with idempotent production or with transactions without restarting,
this client would enter a fatal state.
I'm not sure how common this use case is considering this bug has not been reported in 2 years, but this patch release is to ensure people do not encounter this bug after this point.
I've tested this by producing >2.147bil records to a single-partition Kafka topic
before this patch, which eventually results in INVALID_RECORD
errors, and
then producing >2.2 records to a single-partition Kafka topic after this
patch. The patch allows the client to produce indefinitely.
This release also includes a few commits that eliminate two external dependencies, and contains a patch in kadm to avoid a panic on nil input to a function.
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- [ ] If you want to rebase/retry this PR, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.