Skip to content

Releases: fd4s/fs2-kafka

fs2-kafka v3.5.1

25 Apr 07:32
81bee4e
Compare
Choose a tag to compare

Important Notice: Producer performance regression fixed ⚠️

Changes introduced in #1126 cause a significant performance drop in Producer (you can find more details with some nice graphs in #1321).

Users are encouraged to use v3.5.1 and avoid v3.5.0 for this reason.

Many thanks to @atnoya for noticing and seeking the root cause 🎉 (and mention to @abestel for confirming he was experiencing the same issues).

What's Changed

New Contributors

Full Changelog: v3.5.0...v3.5.1

fs2-kafka v3.5.0

18 Apr 04:22
fb082a0
Compare
Choose a tag to compare

Important Notice: Memory leak found 🐛

A leak in the fetch loop caused by a misuse of the CE Fiber API has been found and fixed (more info in #1318). Of course, all users are encouraged to upgrade ⬆️

All credits to @abestel who took the time to investigate the root cause a propose a fix for it! 🙇🏽 🥇 Awesome contribution! 🎉

Depending on the usage, the leak advances slowly or faster. As an example, here's the graph of one of our services for the last 12h in Staging (with the SNAPSHOT that includes #1318) and Prod (with v3.4.0) (both envs share exactly the same load) 👇🏽

Staging

image

Prod

image

Relevant Changes

Other Changes

Full Changelog: v3.4.0...v3.5.0

fs2-kafka v3.4.0

18 Mar 18:20
f16b999
Compare
Choose a tag to compare

This release contains mostly version bumps for the library dependencies, but some of them are important enough to create a minor version 👇🏽

Relevant changes

  • Latest Scala libs for 2.12, 2.13 and 3.3
  • Latest Kafka Clients 3.7.x lineage (updated from 3.6.x in previous versions)
  • Latest Kafka Avro Serializer 7.6.x lineage (updated from 7.5.x in previous versions)

What's Changed

Full Changelog: v3.3.1...v3.4.0

fs2-kafka v3.3.1

16 Feb 15:50
849906f
Compare
Choose a tag to compare

Important Notice: Binary Incompatibilities ⚠️

This release fixes v3.3.0 by bringing back the binary incompatible changes.

Users are encouraged to use v3.3.1 and avoid v3.3.0 for this reason.

What's Changed

Full Changelog: v3.3.0...v3.3.1

fs2-kafka v3.3.0

16 Feb 10:06
b4dd5a4
Compare
Choose a tag to compare

This is the fifth stable fs2-kafka release to be based on the 3.x series of the Apache Kafka client library. It is available for Scala 2.12, 2.13, and 3.3; all users are encouraged to upgrade.

Thanks for the effort of the new contributors @cwholmes and @L7R7 🎉 We hope to see more nice contributions in the future! 💪🏽 🙌🏽

Important Notice: Binary Incompatibilities ⚠️

This release introduced binary incompatibilities in #1268. Users are encouraged to use v.3.3.1 instead 🙏🏽

Relevant Changes

  • Support consumer offsets for times and list topics by @cwholmes
  • Add chunk-based consumer API by @L7R7

What's Changed

New Contributors

Full Changelog: v3.2.0...v3.3.0

fs2-kafka v3.2.0

21 Oct 10:41
4f51f27
Compare
Choose a tag to compare

This is the fourth stable fs2-kafka release to be based on the 3.x series of the Apache Kafka client library. It is available for Scala 2.12, 2.13, and 3.3; all users are encouraged to upgrade.

Relevant Changes

  • Latest Scala libs for 2.12 and 2.13
  • Latest Kafka Clients 3.6.x lineage (updated from 3.5.x in previous versions)
  • MUnit Vulcan integration improvements by @keirlawson

What's Changed

Full Changelog: v3.1.0...v3.2.0

fs2-kafka v3.1.0

01 Oct 08:43
2a1a3d7
Compare
Choose a tag to compare

This is the third stable fs2-kafka release to be based on the 3.x series of the Apache Kafka client library. It is available for Scala 2.12, 2.13, and 3.3; all users are encouraged to upgrade.

Development of the 2.x series is now discontinued. All new pull requests should target the 3.x branch.

This release bumps all third party dependencies to latest effective version (targeting JDK 8 as the base), fixes some transitive vulnerabilities and consolidates the build for Cats Effect 3.5.x and fs2 3.9.x.

Thanks everyone involved in the release and congrats to first-time contributors! 🥳 We hope to see more of your nice PRs in the near future! 💪🏽

What's Changed

New Contributors

Full Changelog: v3.0.1...v3.1.0

fs2-kafka v3.0.1

05 May 15:39
e4376d1
Compare
Choose a tag to compare

This release makes some internal changes in preparation for changes to cancelation semantics forthcoming in cats-effect 3.5.0; it also updates some dependencies.

What's Changed

Full Changelog: v3.0.0...v3.0.1

fs2-kafka v2.6.1

05 May 14:58
eb859e3
Compare
Choose a tag to compare

This release makes some internal changes in preparation for changes to cancelation semantics forthcoming in cats-effect 3.5.0; it also updates some dependencies.

What's Changed

Full Changelog: v2.6.0...v2.6.1

fs2-kafka v3.0.0

11 Apr 13:02
2953ada
Compare
Choose a tag to compare

This is the first stable fs2-kafka release to be based on the 3.x series of the Apache Kafka client library. It is available for Scala 2.12, 2.13, and 3.2; all users are encouraged to upgrade. There are some backwards-incompatible API changes, set out below; for further details, see release notes for 3.0.0-RC1 and previous milestone versions.

Development of the 2.x series will now start to wind down, and the 1.x series will be discontinued. New pull requests that make substantial changes should target the 3.x branch.

Apologies to those whose outstanding pull requests weren't merged in time for this release - it was already very overdue. The intention is to start a 4.x branch in the near future to make further backwards-incompatible improvements.

Backwards-incompatible changes

Serializers and Deserializers

Some changes have been made to how fs2-kafka represents Serializers and Deserializers. The following references Serializers but the same changes have been made to Deserializers.

Typed KeySerializer and ValueSerializer

In some cases, such as when using a schema registry with the fs2-kafka-vulcan module, a given serializer will only be valid either for keys or for values, but not both. This is now represented by the KeySerializer type, representing the ability to serialize a key, and the ValueSerializer type, representing the ability to serialize a value. These are supertypes of the plain Serializer type, which can serialize either a key or a value.

Implementation note: KeySerializer, ValueSerializer and Serializer are aliased subtypes of a new GenericSerializer class, which is contravariantly parameterized with a marker trait KeyOrValue with subtypes Key and Value. User code usually won't need to be concerned with these details.

Replacement of RecordSerializer (and RecordDeserializer) with Resource

RecordSerializer served two purposes: to distinguish between key and value serializers when summoning them implicitly, and to wrap effectful instantiation of serializers. The former purpose is now served by the KeySerializer and ValueSerializer types; the latter, by cats-effect's Resource type. Usages of RecordSerializer[F, A] are thus now replaced by Resource[F, KeySerializer[F, A]] or Resource[F, ValueSerializer[F, A]].

Change to Vulcan module's API

The AvroSerializer class no longer has a using method that returns RecordSerializer; instead it has two methods, forKey and forValue, that respectively return KeySerializer and ValueSerializer inside Resource. (Equivalent changes have been made to AvroDeserializer.)

Simplified representation of producer records (#901)

The ProducerRecords, TransactionalProducerRecords and ProducerResult classes have been replaced with type aliases for different kinds of fs2.Chunk, which they previously wrapped. This was enabled by removal of "passthrough" functionality, which can instead be implemented in user code if needed.

What's Changed since v3.0.0-RC1

Full Changelog since v2.6.0: v2.6.0...v3.0.0