Skip to content

Commit 3639bf4

Browse files
authored
Merge branch 'master' into feat/aot
2 parents 7b658c5 + 5be2102 commit 3639bf4

File tree

293 files changed

+19355
-2789
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

293 files changed

+19355
-2789
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @confluentinc/clients @confluentinc/data-governance

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ obj/
66
*.dylib
77
*.csproj.user
88
*.xproj.user
9+
*.sln.*.user
10+
.idea
911
.vs
1012
.vscode
1113
todo.txt

.semaphore/semaphore.yml

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,19 @@ blocks:
7070
- wget https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1
7171
- powershell -ExecutionPolicy ByPass -File dotnet-install.ps1 -Version 6.0.403 -InstallDir C:\dotnet
7272
- $Env:Path += ";C:\dotnet"
73-
- dotnet tool update -g docfx
7473
- dotnet restore
7574
- dotnet build Confluent.Kafka.sln -c ${Env:CONFIGURATION}
7675
- dotnet pack src/Confluent.Kafka/Confluent.Kafka.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
7776
- dotnet pack src/Confluent.SchemaRegistry/Confluent.SchemaRegistry.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
77+
- dotnet pack src/Confluent.SchemaRegistry.Encryption/Confluent.SchemaRegistry.Encryption.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
78+
- dotnet pack src/Confluent.SchemaRegistry.Encryption.Aws/Confluent.SchemaRegistry.Encryption.Aws.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
79+
- dotnet pack src/Confluent.SchemaRegistry.Encryption.Azure/Confluent.SchemaRegistry.Encryption.Azure.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
80+
- dotnet pack src/Confluent.SchemaRegistry.Encryption.Gcp/Confluent.SchemaRegistry.Encryption.Gcp.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
81+
- dotnet pack src/Confluent.SchemaRegistry.Encryption.HcVault/Confluent.SchemaRegistry.Encryption.HcVault.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
82+
- dotnet pack src/Confluent.SchemaRegistry.Rules/Confluent.SchemaRegistry.Rules.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
7883
- dotnet pack src/Confluent.SchemaRegistry.Serdes.Avro/Confluent.SchemaRegistry.Serdes.Avro.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
7984
- dotnet pack src/Confluent.SchemaRegistry.Serdes.Protobuf/Confluent.SchemaRegistry.Serdes.Protobuf.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
8085
- dotnet pack src/Confluent.SchemaRegistry.Serdes.Json/Confluent.SchemaRegistry.Serdes.Json.csproj -c ${Env:CONFIGURATION} --version-suffix ci-${Env:SEMAPHORE_JOB_ID} --output artifacts
81-
- docfx doc/docfx.json
82-
- tar.exe -cvzf docs-${Env:SEMAPHORE_JOB_ID}.zip doc/_site/*
83-
- move docs-${Env:SEMAPHORE_JOB_ID}.zip artifacts
8486
- artifact push workflow artifacts
8587
- name: 'Windows Artifacts on tagged commits'
8688
run:
@@ -97,17 +99,19 @@ blocks:
9799
- wget https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1
98100
- powershell -ExecutionPolicy ByPass -File dotnet-install.ps1 -Version 6.0.403 -InstallDir C:\dotnet
99101
- $Env:Path += ";C:\dotnet"
100-
- dotnet tool update -g docfx
101102
- dotnet restore
102103
- dotnet build Confluent.Kafka.sln -c ${Env:CONFIGURATION}
103104
- dotnet pack src/Confluent.Kafka/Confluent.Kafka.csproj -c ${Env:CONFIGURATION} --output artifacts
104105
- dotnet pack src/Confluent.SchemaRegistry/Confluent.SchemaRegistry.csproj -c ${Env:CONFIGURATION} --output artifacts
106+
- dotnet pack src/Confluent.SchemaRegistry.Encryption/Confluent.SchemaRegistry.Encryption.csproj -c ${Env:CONFIGURATION} --output artifacts
107+
- dotnet pack src/Confluent.SchemaRegistry.Encryption.Aws/Confluent.SchemaRegistry.Encryption.Aws.csproj -c ${Env:CONFIGURATION} --output artifacts
108+
- dotnet pack src/Confluent.SchemaRegistry.Encryption.Azure/Confluent.SchemaRegistry.Encryption.Azure.csproj -c ${Env:CONFIGURATION} --output artifacts
109+
- dotnet pack src/Confluent.SchemaRegistry.Encryption.Gcp/Confluent.SchemaRegistry.Encryption.Gcp.csproj -c ${Env:CONFIGURATION} --output artifacts
110+
- dotnet pack src/Confluent.SchemaRegistry.Encryption.HcVault/Confluent.SchemaRegistry.Encryption.HcVault.csproj -c ${Env:CONFIGURATION} --output artifacts
111+
- dotnet pack src/Confluent.SchemaRegistry.Rules/Confluent.SchemaRegistry.Rules.csproj -c ${Env:CONFIGURATION} --output artifacts
105112
- dotnet pack src/Confluent.SchemaRegistry.Serdes.Avro/Confluent.SchemaRegistry.Serdes.Avro.csproj -c ${Env:CONFIGURATION} --output artifacts
106113
- dotnet pack src/Confluent.SchemaRegistry.Serdes.Protobuf/Confluent.SchemaRegistry.Serdes.Protobuf.csproj -c ${Env:CONFIGURATION} --output artifacts
107114
- dotnet pack src/Confluent.SchemaRegistry.Serdes.Json/Confluent.SchemaRegistry.Serdes.Json.csproj -c ${Env:CONFIGURATION} --output artifacts
108-
- docfx doc/docfx.json
109-
- tar.exe -cvzf docs-${Env:SEMAPHORE_JOB_ID}.zip doc/_site/*
110-
- move docs-${Env:SEMAPHORE_JOB_ID}.zip artifacts
111115
- artifact push workflow artifacts
112116
- name: 'Integration tests'
113117
dependencies: [ ]
@@ -117,14 +121,27 @@ blocks:
117121
type: s1-prod-ubuntu20-04-amd64-2
118122
prologue:
119123
commands:
120-
- docker login --username $DOCKERHUB_USER --password $DOCKERHUB_APIKEY
124+
- '[[ -z $DOCKERHUB_APIKEY ]] || docker login --username $DOCKERHUB_USER --password $DOCKERHUB_APIKEY'
121125
jobs:
122-
- name: 'Build and test'
126+
- name: 'Build documentation'
127+
commands:
128+
- dotnet tool update -g docfx
129+
- docfx doc/docfx.json
130+
- name: 'Build and test with "classic" protocol'
123131
commands:
124132
- cd test/docker && docker-compose up -d && sleep 30 && cd ../..
125-
- export SEMAPHORE_SKIP_FLAKY_TETSTS='true'
133+
- export SEMAPHORE_SKIP_FLAKY_TESTS='true'
134+
- dotnet restore
135+
- cd test/Confluent.Kafka.IntegrationTests && dotnet test -l "console;verbosity=normal" && cd ../..
136+
- name: 'Build and test with "consumer" protocol'
137+
commands:
138+
- cd test/docker && docker-compose -f docker-compose-kraft.yaml up -d && cd ../..
139+
- sleep 300
140+
- export SEMAPHORE_SKIP_FLAKY_TESTS='true'
141+
- export TEST_CONSUMER_GROUP_PROTOCOL=consumer
126142
- dotnet restore
127143
- cd test/Confluent.Kafka.IntegrationTests && dotnet test -l "console;verbosity=normal" && cd ../..
144+
128145
- name: 'Schema registry and serdes integration tests'
129146
dependencies: [ ]
130147
task:
@@ -133,12 +150,12 @@ blocks:
133150
type: s1-prod-ubuntu20-04-amd64-2
134151
prologue:
135152
commands:
136-
- docker login --username $DOCKERHUB_USER --password $DOCKERHUB_APIKEY
153+
- '[[ -z $DOCKERHUB_APIKEY ]] || docker login --username $DOCKERHUB_USER --password $DOCKERHUB_APIKEY'
137154
jobs:
138155
- name: 'Build and test'
139156
commands:
140157
- cd test/docker && docker-compose up -d && cd ../..
141-
- export SEMAPHORE_SKIP_FLAKY_TETSTS='true'
158+
- export SEMAPHORE_SKIP_FLAKY_TESTS='true'
142159
- dotnet restore
143160
- cd test/Confluent.SchemaRegistry.Serdes.IntegrationTests && dotnet test -l "console;verbosity=normal" && cd ../..
144161
# - cd test/Confluent.SchemaRegistry.IntegrationTests && dotnet test -l "console;verbosity=normal" && cd ../..

3RD_PARTY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ To add your project, open a pull request!
99
- [Chr.Avro](https://github.com/ch-robinson/dotnet-avro) - A modern and flexible Avro implementation for .NET. Integrates seamlessly with Confluent.Kafka and Schema Registry.
1010
- [Multi Schema Avro Deserializer](https://github.com/ycherkes/multi-schema-avro-desrializer) - Avro deserializer for reading messages serialized with multiple schemas.
1111
- [OpenSleigh.Transport.Kafka](https://github.com/mizrael/OpenSleigh/tree/develop/src/OpenSleigh.Transport.Kafka) - A Kafka Transport for OpenSleigh, a distributed saga management library.
12+
- [SlimMessageBus.Host.Kafka](https://github.com/zarusz/SlimMessageBus) - Apache Kafka transport for SlimMessageBus (lightweight message bus for .NET)

CHANGELOG.md

Lines changed: 83 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,75 @@
1+
# 2.5.3
2+
3+
v2.5.3 is a maintenance release with the following fixes and enhancements:
4+
5+
## Enhancements
6+
7+
* References librdkafka.redist 2.5.3. Refer to the [librdkafka v2.5.3 release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.5.3) for more information.
8+
9+
## Fixes
10+
11+
* Properly handle messages with well-known types in Protobuf serializer
12+
* Use AES128_GCM in the Local KMS client, for consistency with Java/go
13+
* Include deleted schemas when getting schemas by subject and version
14+
* Handle signed ints when transforming Protobuf payloads
15+
* Allow null SchemaRegistryClient in AsyncSerde constructor
16+
17+
# 2.5.2
18+
19+
> [!WARNING]
20+
Versions 2.5.0, 2.5.1 and 2.5.2 have a regression in which an assert is triggered during **PushTelemetry** call. This happens when no metric is matched on the client side among those requested by broker subscription.
21+
>
22+
> You won't face any problem if:
23+
> * Broker doesn't support [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability).
24+
> * [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) feature is disabled on the broker side.
25+
> * [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) feature is disabled on the client side. This is enabled by default. Set configuration `enable.metrics.push` to `false`.
26+
> * If [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) is enabled on the broker side and there is no subscription configured there.
27+
> * If [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) is enabled on the broker side with subscriptions that match the [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) metrics defined on the client.
28+
>
29+
> Having said this, we strongly recommend using `v2.5.3` and above to not face this regression at all.
30+
31+
## Fixes
32+
33+
- Fix CSFLE (client-side field-level encryption) to use the Google Tink format for DEKs for interoperability with clients in other languages (Java, go, etc.).
34+
- Improve error when specifying an invalid KMS type for CSFLE
35+
- Enhance CSFLE examples with KMS configuration settings
36+
37+
38+
# 2.5.1
39+
40+
## Fixes
41+
42+
- Fix CSFLE (client-side field-level encryption) when using Azure Key Vault by specifying RsaOaep256 (instead of RsaOaep) for interoperability with clients in other languages (Java, go, etc.).
43+
- Fix AvroSerializer configuration to allow using schema normalization.
44+
- Upgrade Azure Identity library to 1.11.4 to address a vulnerability in previous versions.
45+
46+
47+
# 2.5.0
48+
49+
## Enhancements
50+
51+
- References librdkafka.redist 2.5.0. Refer to the [librdkafka v2.5.0 release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.5.0) for more information.
52+
- Add support for metadata and ruleSet in the schema registry client, which together support data
53+
contracts.
54+
- Add support for CSFLE (client-side field-level encryption) for AWS, Azure, GCP, and HashiCorp
55+
Vault. See the encryption examples in the examples directory.
56+
- Add support for CEL, CEL_FIELD, and JSONata rules.
57+
58+
## Fixes
59+
60+
- Switch license expression and other repo information. (#2192, @thompson-tomo)
61+
62+
63+
# 2.4.0
64+
65+
## Enhancements
66+
67+
- References librdkafka.redist 2.4.0. Refer to the [librdkafka v2.4.0 release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.4.0) for more information.
68+
- [KIP-848 EA](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol): Added KIP-848 based new consumer group rebalance protocol.
69+
Integration tests running with the new consumer group protocol. The feature is an **Early Access**: not production ready. Please refer
70+
[detailed doc](https://github.com/confluentinc/librdkafka/blob/master/INTRODUCTION.md#next-generation-of-the-consumer-group-protocol-kip-848) for more information. (#2212).
71+
72+
173
# 2.3.0
274

375
## Enhancements
@@ -6,7 +78,7 @@
678
- [KIP-430](https://cwiki.apache.org/confluence/display/KAFKA/KIP-430+-+Return+Authorized+Operations+in+Describe+Responses):
779
Return authorized operations in describe responses (#2021, @jainruchir).
880
- [KIP-396](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=97551484): Added support for ListOffsets Admin API (#2086).
9-
- Add `Rack` to the `Node` type, so AdminAPI calls can expose racks for brokers (currently, all Describe
81+
- Add `Rack` to the `Node` type, so AdminAPI calls can expose racks for brokers (currently, all Describe
1082
Responses) (#2021, @jainruchir).
1183
- Added support for external JSON schemas in `JsonSerializer` and `JsonDeserializer` (#2042).
1284
- Added compatibility methods to CachedSchemaRegistryClient ([ISBronny](https://github.com/ISBronny), #2097).
@@ -89,15 +161,15 @@ OpenSSL 3.0.x upgrade in librdkafka requires a major version bump, as some legac
89161
**Note: There were no 2.0.0 and 2.0.1 releases.**
90162

91163

92-
# 1.9.3
164+
# 1.9.3
93165

94166
## Enhancements
95167

96168
- Added `NormalizeSchemas` configuration property to the Avro, Json and Protobuf serdes.
97169

98170
## Fixes
99171

100-
- Schema Registry authentication now works with passwords that contain the ':' character ([luismedel](https://github.com/luismedel)).
172+
- Schema Registry authentication now works with passwords that contain the ':' character ([luismedel](https://github.com/luismedel)).
101173
- Added missing librdkafka internal and broker error codes to the `ErrorCode` enum.
102174

103175

@@ -160,7 +232,7 @@ for a complete list of changes, enhancements, fixes and upgrade considerations.
160232

161233
# 1.8.1
162234

163-
## Enhancements
235+
## Enhancements
164236

165237
- Updated `NJsonSchema` to v10.5.2.
166238

@@ -309,7 +381,7 @@ Version 1.6.0 and 1.6.1 were not released.
309381
## Changes
310382

311383
- Some internal improvements to the `Consmer` (thanks to [@andypook](https://github.com/AndyPook)).
312-
- BREAKING CHANGE: `net452` is no longer a target framework of `Confluent.SchemaRegistry` or `Confluent.SchemaRegistry.Serdes` due to the switch to the official Apache Avro package which only targets `netstandard2.0`.
384+
- BREAKING CHANGE: `net452` is no longer a target framework of `Confluent.SchemaRegistry` or `Confluent.SchemaRegistry.Serdes` due to the switch to the official Apache Avro package which only targets `netstandard2.0`.
313385
- Marked properties on `ConsumeResult` that simply delegate to the corresponding properties on `ConsumeResult.Message` as obsolete.
314386

315387
## Fixes
@@ -351,7 +423,7 @@ Version 1.6.0 and 1.6.1 were not released.
351423
## Bugs
352424

353425
**WARNING: There is an issue with SASL GSSAPI authentication on Windows with this release. This is resolved in v1.2.1.**
354-
426+
355427
## Enhancements
356428

357429
- References librdkafka v1.2.0. Refer to the [release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.2.0) for more information. Headline feature is consumer side support for transactions.
@@ -415,7 +487,7 @@ Feature highlights:
415487
- Non-blocking support for async serializers.
416488
- Very flexible:
417489
- e.g. can be easily extended to support header serialization.
418-
- Capability to specify custom timestamps when producing messages.
490+
- Capability to specify custom timestamps when producing messages.
419491
- Message persistence status support.
420492
- Renamed ProduceAsync variants with a callback to Produce.
421493
- Consumer improvements:
@@ -532,7 +604,7 @@ Feature highlights:
532604

533605
- Revamped producer and consumer serialization functionality.
534606
- There are now two types of serializer and deserializer: `ISerializer<T>` / `IAsyncSerializer<T>` and `IDeserializer<T>` / `IAsyncDeserializer<T>`.
535-
- `ISerializer<T>`/`IDeserializer<T>` are appropriate for most use cases.
607+
- `ISerializer<T>`/`IDeserializer<T>` are appropriate for most use cases.
536608
- `IAsyncSerializer<T>`/`IAsyncDeserializer<T>` are async friendly, but less performant (they return `Task`s).
537609
- Changed the name of `Confluent.Kafka.Avro` to `Confluent.SchemaRegistry.Serdes` (Schema Registry may support other serialization formats in the future).
538610
- Added an example demonstrating working with protobuf serialized data.
@@ -548,7 +620,7 @@ Feature highlights:
548620
- Notable features: idempotent producer, sparse connections, KIP-62 (max.poll.interval.ms).
549621
- Note: End of partition notification is now disabled by default (enable using the `EnablePartitionEof` config property).
550622
- Removed the `Consumer.OnPartitionEOF` event in favor notifying of partition eof via `ConsumeResult.IsPartitionEOF`.
551-
- Removed `ErrorEvent` class and added `IsFatal` to `Error` class.
623+
- Removed `ErrorEvent` class and added `IsFatal` to `Error` class.
552624
- The `IsFatal` flag is now set appropriately for all errors (previously it was always set to `false`).
553625
- Added `PersistenceStatus` property to `DeliveryResult`, which provides information on the persitence status of the message.
554626

@@ -586,7 +658,7 @@ Feature highlights:
586658
- Producers can utilize the underlying librdkafka handle from other Producers (replaces the 0.11.x `GetSerializingProducer` method on the `Producer` class).
587659
- `AdminClient` can utilize the underlying librdkafka handle from other `AdminClient`s, `Producer`s or `Consumer`s.
588660
- `IDeserializer` now exposes message data via `ReadOnlySpan<byte>`, directly referencing librdkafka allocated memory. This results in a considerable (up to 2x) performance increase and reduced memory.
589-
- Most blocking operations now accept a `CancellationToken` parameter.
661+
- Most blocking operations now accept a `CancellationToken` parameter.
590662
- TODO: in some cases there is no backing implementation yet.
591663
- .NET Specific configuration parameters are all specified/documented in the `ConfigPropertyNames` class.
592664

@@ -612,7 +684,7 @@ Feature highlights:
612684
- `Commit` errors are reported via an exception and method return values have correspondingly changed.
613685
- `ListGroups`, `ListGroup`, `GetWatermarkOffsets`, `QueryWatermarkOffsets`, and `GetMetadata` have been removed from `Producer` and `Consumer` and exposed only via `AdminClient`.
614686
- Added `Consumer.Close`.
615-
- Various methods that formerly returned `TopicPartitionOffsetError` / `TopicPartitionError` now return `TopicPartitionOffset` / `TopicPartition` and throw an exception in
687+
- Various methods that formerly returned `TopicPartitionOffsetError` / `TopicPartitionError` now return `TopicPartitionOffset` / `TopicPartition` and throw an exception in
616688
case of error (with a `Result` property of type `TopicPartitionOffsetError` / `TopicPartitionError`).
617689

618690

0 commit comments

Comments
 (0)