grav icon indicating copy to clipboard operation
grav copied to clipboard

chore(deps): update module github.com/twmb/franz-go to v1.6.0

Open renovate[bot] opened this issue 2 years ago • 0 comments

Mend Renovate

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

Compare Source

===

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: add V3_2_0
  • 0f65bb1 feature kgo: expose UniformBytesPartitioner
  • 82af4a1 and followup commits: add package sr, providing a client for the schema registry

v1.5.3

Compare Source

===

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.

  • 4e2fa3f sticky: vendor go-rbtree, drop external dep
  • 6c0756d drop go-cmp dep
  • 27880b4 bugfix sink: sequence number wrapping for EOS
  • afc9017 kadm.CalculateGroupLag: avoid panic if input maps are nil

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.

renovate[bot] avatar May 21 '22 22:05 renovate[bot]