From 7f8a2944784578b60c71746e946bdb5bbb18f3db Mon Sep 17 00:00:00 2001
From: Travis Bischel <travis.bischel+github@gmail.com>
Date: Sun, 28 Jul 2024 23:16:30 -0600
Subject: [PATCH] CHANGELOG: update for 1.17.1

---
 CHANGELOG.md | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index fe67d2da..77fd3908 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,65 @@
+v1.17.1
+===
+
+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](https://github.com/twmb/franz-go/pull/781#issuecomment-2248563542)
+  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](https://github.com/twmb/franz-go/issues/769#issuecomment-2235707417)
+  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 `FetchResponse` `AbortedTransactions` 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.
+
+## Relevant commits
+
+* [`305d8dc`](https://github.com/twmb/franz-go/commit/305d8dc) kgo: allow record ctx cancelation to propagate a bit more
+* [`24fbb0f`](https://github.com/twmb/franz-go/commit/24fbb0f) **bugfix** kgo: fix deadlock in Produce when using MaxBufferedBytes
+* [`1827add`](https://github.com/twmb/franz-go/commit/1827add) **bugfix** kgo sink: fix read/write race for recBatch.canFailFromLoadErrs
+* [`d7ea2c3`](https://github.com/twmb/franz-go/commit/d7ea2c3) **bugfix** fix setting lz4 compression levels (thanks [@asg0451](https://github.com/asg0451)!)
+* [`5809dec`](https://github.com/twmb/franz-go/commit/5809dec) optimise: use byteBuffer pool in decompression (thanks [@kalbhor](https://github.com/kalbhor)!)
+* [`cda897d`](https://github.com/twmb/franz-go/commit/cda897d) kgo: add log for preferred replicas
+* [`e62b402`](https://github.com/twmb/franz-go/commit/e62b402) **improvement** kgo sink: do not back off on certain edge case
+* [`9e32bf9`](https://github.com/twmb/franz-go/commit/9e32bf9) kgo: ignore aborted txns if using `READ_UNCOMMITTED`
+
 v1.17.0
 ===