@platformatic/rdkafka 4.0.1 → 4.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/bench/seed.sh +0 -0
- package/binding.gyp +8 -1
- package/ci/prepublish.js +4 -4
- package/config.d.ts +126 -10
- package/configure +0 -0
- package/deps/librdkafka/.semaphore/run-all-tests.yml +77 -0
- package/deps/librdkafka/.semaphore/semaphore-integration.yml +250 -0
- package/deps/librdkafka/.semaphore/semaphore.yml +67 -44
- package/deps/librdkafka/.semaphore/verify-linux-packages.yml +41 -0
- package/deps/librdkafka/CHANGELOG.md +471 -1
- package/deps/librdkafka/CONFIGURATION.md +29 -9
- package/deps/librdkafka/INTRODUCTION.md +909 -601
- package/deps/librdkafka/LICENSES.txt +592 -1
- package/deps/librdkafka/Makefile +2 -1
- package/deps/librdkafka/configure +0 -0
- package/deps/librdkafka/debian/rules +0 -0
- package/deps/librdkafka/dev-conf.sh +0 -0
- package/deps/librdkafka/examples/consumer.c +18 -8
- package/deps/librdkafka/examples/describe_consumer_groups.c +25 -6
- package/deps/librdkafka/examples/incremental_alter_configs.c +4 -5
- package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +26 -42
- package/deps/librdkafka/examples/openssl_engine_example.cpp +3 -4
- package/deps/librdkafka/examples/producer.cpp +2 -2
- package/deps/librdkafka/examples/user_scram.c +4 -5
- package/deps/librdkafka/examples/win_ssl_cert_store.cpp +4 -3
- package/deps/librdkafka/lds-gen.py +0 -0
- package/deps/librdkafka/mklove/Makefile.base +0 -0
- package/deps/librdkafka/packaging/RELEASE.md +8 -0
- package/deps/librdkafka/packaging/alpine/build-alpine.sh +0 -0
- package/deps/librdkafka/packaging/cp/README.md +4 -1
- package/deps/librdkafka/packaging/cp/check_features.c +12 -4
- package/deps/librdkafka/packaging/cp/verify-deb.sh +6 -6
- package/deps/librdkafka/packaging/cp/verify-packages.sh +52 -31
- package/deps/librdkafka/packaging/cp/verify-rpm.sh +6 -13
- package/deps/librdkafka/packaging/debian/rules +0 -0
- package/deps/librdkafka/packaging/get_version.py +0 -0
- package/deps/librdkafka/packaging/homebrew/brew-update-pr.sh +0 -0
- package/deps/librdkafka/packaging/mingw-w64/{travis-before-install.sh → export-variables.sh} +0 -7
- package/deps/librdkafka/packaging/mingw-w64/semaphoreci-build.sh +1 -1
- package/deps/librdkafka/packaging/nuget/artifact.py +0 -0
- package/deps/librdkafka/packaging/nuget/cleanup-s3.py +0 -0
- package/deps/librdkafka/packaging/nuget/nuget.sh +0 -0
- package/deps/librdkafka/packaging/nuget/packaging.py +0 -0
- package/deps/librdkafka/packaging/nuget/push-to-nuget.sh +0 -0
- package/deps/librdkafka/packaging/nuget/release.py +0 -0
- package/deps/librdkafka/packaging/nuget/requirements.txt +3 -3
- package/deps/librdkafka/packaging/rpm/mock-on-docker.sh +0 -0
- package/deps/librdkafka/packaging/rpm/tests/run-test.sh +0 -0
- package/deps/librdkafka/packaging/rpm/tests/test-on-docker.sh +0 -0
- package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +3 -1
- package/deps/librdkafka/packaging/tools/build-deb-package.sh +0 -0
- package/deps/librdkafka/packaging/tools/build-debian.sh +0 -0
- package/deps/librdkafka/packaging/tools/build-manylinux.sh +0 -0
- package/deps/librdkafka/packaging/tools/build-release-artifacts.sh +0 -0
- package/deps/librdkafka/packaging/tools/distro-build.sh +0 -0
- package/deps/librdkafka/packaging/tools/gh-release-checksums.py +0 -0
- package/deps/librdkafka/packaging/tools/rdutcoverage.sh +0 -0
- package/deps/librdkafka/packaging/tools/run-in-docker.sh +28 -0
- package/deps/librdkafka/packaging/tools/run-integration-tests.sh +31 -0
- package/deps/librdkafka/packaging/tools/run-style-check.sh +4 -0
- package/deps/librdkafka/packaging/tools/style-format.sh +6 -5
- package/deps/librdkafka/packaging/tools/update_rpcs_max_versions.py +100 -0
- package/deps/librdkafka/service.yml +154 -0
- package/deps/librdkafka/src/generate_proto.sh +0 -0
- package/deps/librdkafka/src/rd.h +145 -2
- package/deps/librdkafka/src/rdaddr.h +6 -7
- package/deps/librdkafka/src/rdatomic.h +15 -11
- package/deps/librdkafka/src/rdavg.h +3 -2
- package/deps/librdkafka/src/rdbase64.c +33 -2
- package/deps/librdkafka/src/rdbase64.h +2 -0
- package/deps/librdkafka/src/rdendian.h +10 -9
- package/deps/librdkafka/src/rdhttp.c +418 -100
- package/deps/librdkafka/src/rdhttp.h +23 -5
- package/deps/librdkafka/src/rdkafka.c +299 -145
- package/deps/librdkafka/src/rdkafka.h +89 -6
- package/deps/librdkafka/src/rdkafka_admin.c +482 -105
- package/deps/librdkafka/src/rdkafka_admin.h +42 -0
- package/deps/librdkafka/src/rdkafka_broker.c +463 -312
- package/deps/librdkafka/src/rdkafka_broker.h +68 -10
- package/deps/librdkafka/src/rdkafka_buf.c +8 -5
- package/deps/librdkafka/src/rdkafka_buf.h +4 -3
- package/deps/librdkafka/src/rdkafka_cert.c +25 -1
- package/deps/librdkafka/src/rdkafka_cert.h +4 -3
- package/deps/librdkafka/src/rdkafka_cgrp.c +468 -143
- package/deps/librdkafka/src/rdkafka_cgrp.h +36 -2
- package/deps/librdkafka/src/rdkafka_conf.c +526 -102
- package/deps/librdkafka/src/rdkafka_conf.h +68 -4
- package/deps/librdkafka/src/rdkafka_feature.c +472 -35
- package/deps/librdkafka/src/rdkafka_feature.h +2 -0
- package/deps/librdkafka/src/rdkafka_fetcher.c +22 -2
- package/deps/librdkafka/src/rdkafka_fetcher.h +2 -2
- package/deps/librdkafka/src/rdkafka_int.h +84 -46
- package/deps/librdkafka/src/rdkafka_metadata.c +221 -136
- package/deps/librdkafka/src/rdkafka_metadata.h +15 -11
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +279 -73
- package/deps/librdkafka/src/rdkafka_mock.c +795 -19
- package/deps/librdkafka/src/rdkafka_mock.h +119 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1298 -132
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +345 -49
- package/deps/librdkafka/src/rdkafka_mock_int.h +180 -61
- package/deps/librdkafka/src/rdkafka_msg.c +35 -19
- package/deps/librdkafka/src/rdkafka_msg.h +3 -3
- package/deps/librdkafka/src/rdkafka_msgset_writer.c +14 -10
- package/deps/librdkafka/src/rdkafka_offset.c +33 -5
- package/deps/librdkafka/src/rdkafka_op.c +1 -1
- package/deps/librdkafka/src/rdkafka_op.h +45 -21
- package/deps/librdkafka/src/rdkafka_partition.c +118 -23
- package/deps/librdkafka/src/rdkafka_partition.h +16 -7
- package/deps/librdkafka/src/rdkafka_proto.h +4 -1
- package/deps/librdkafka/src/rdkafka_protocol.h +1 -0
- package/deps/librdkafka/src/rdkafka_queue.c +125 -48
- package/deps/librdkafka/src/rdkafka_queue.h +19 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1 -1
- package/deps/librdkafka/src/rdkafka_request.c +336 -64
- package/deps/librdkafka/src/rdkafka_request.h +24 -1
- package/deps/librdkafka/src/rdkafka_sasl.c +5 -3
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +14 -10
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1166 -89
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +13 -3
- package/deps/librdkafka/src/rdkafka_sasl_plain.c +3 -3
- package/deps/librdkafka/src/rdkafka_sasl_scram.c +4 -3
- package/deps/librdkafka/src/rdkafka_ssl.c +306 -81
- package/deps/librdkafka/src/rdkafka_ssl.h +22 -0
- package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +80 -23
- package/deps/librdkafka/src/rdkafka_telemetry_encode.c +5 -1
- package/deps/librdkafka/src/rdkafka_telemetry_encode.h +20 -20
- package/deps/librdkafka/src/rdkafka_topic.c +220 -137
- package/deps/librdkafka/src/rdkafka_topic.h +14 -8
- package/deps/librdkafka/src/rdkafka_transport.c +59 -47
- package/deps/librdkafka/src/rdkafka_transport.h +5 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.c +6 -1
- package/deps/librdkafka/src/rdmap.c +6 -1
- package/deps/librdkafka/src/rdrand.c +11 -1
- package/deps/librdkafka/src/rdtime.h +48 -17
- package/deps/librdkafka/src/rdunittest.c +42 -25
- package/deps/librdkafka/src/rdunittest.h +2 -0
- package/deps/librdkafka/src/rdwin32.h +1 -1
- package/deps/librdkafka/src/regexp.c +47 -42
- package/deps/librdkafka/src/tinycthread_extra.c +45 -21
- package/deps/librdkafka/src/tinycthread_extra.h +7 -3
- package/deps/librdkafka/src-cpp/rdkafkacpp.h +28 -2
- package/deps/librdkafka/tests/0001-multiobj.c +4 -0
- package/deps/librdkafka/tests/0004-conf.c +103 -36
- package/deps/librdkafka/tests/0009-mock_cluster.c +1 -0
- package/deps/librdkafka/tests/0011-produce_batch.c +2 -1
- package/deps/librdkafka/tests/0016-client_swname.c +18 -3
- package/deps/librdkafka/tests/0017-compression.c +6 -8
- package/deps/librdkafka/tests/0018-cgrp_term.c +8 -3
- package/deps/librdkafka/tests/0021-rkt_destroy.c +1 -0
- package/deps/librdkafka/tests/0022-consume_batch.c +4 -1
- package/deps/librdkafka/tests/0026-consume_pause.c +12 -14
- package/deps/librdkafka/tests/0028-long_topicnames.c +1 -1
- package/deps/librdkafka/tests/0029-assign_offset.c +6 -8
- package/deps/librdkafka/tests/0030-offset_commit.c +2 -2
- package/deps/librdkafka/tests/0033-regex_subscribe.c +33 -17
- package/deps/librdkafka/tests/0034-offset_reset.c +25 -4
- package/deps/librdkafka/tests/0036-partial_fetch.c +1 -0
- package/deps/librdkafka/tests/0038-performance.c +1 -0
- package/deps/librdkafka/tests/0040-io_event.c +11 -5
- package/deps/librdkafka/tests/0041-fetch_max_bytes.c +1 -0
- package/deps/librdkafka/tests/0044-partition_cnt.c +3 -2
- package/deps/librdkafka/tests/0045-subscribe_update.c +284 -20
- package/deps/librdkafka/tests/0047-partial_buf_tmout.c +1 -0
- package/deps/librdkafka/tests/0048-partitioner.c +1 -1
- package/deps/librdkafka/tests/0050-subscribe_adds.c +1 -0
- package/deps/librdkafka/tests/0051-assign_adds.c +1 -0
- package/deps/librdkafka/tests/0052-msg_timestamps.c +22 -4
- package/deps/librdkafka/tests/0053-stats_cb.cpp +12 -20
- package/deps/librdkafka/tests/0055-producer_latency.c +176 -3
- package/deps/librdkafka/tests/0056-balanced_group_mt.c +6 -2
- package/deps/librdkafka/tests/0058-log.cpp +3 -3
- package/deps/librdkafka/tests/0059-bsearch.cpp +8 -4
- package/deps/librdkafka/tests/0061-consumer_lag.cpp +25 -5
- package/deps/librdkafka/tests/0067-empty_topic.cpp +3 -0
- package/deps/librdkafka/tests/0068-produce_timeout.c +21 -23
- package/deps/librdkafka/tests/0069-consumer_add_parts.c +3 -7
- package/deps/librdkafka/tests/0075-retry.c +38 -1
- package/deps/librdkafka/tests/0076-produce_retry.c +2 -0
- package/deps/librdkafka/tests/0077-compaction.c +8 -2
- package/deps/librdkafka/tests/0080-admin_ut.c +34 -4
- package/deps/librdkafka/tests/0081-admin.c +455 -155
- package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +4 -0
- package/deps/librdkafka/tests/0083-cb_event.c +8 -3
- package/deps/librdkafka/tests/0084-destroy_flags.c +14 -18
- package/deps/librdkafka/tests/0085-headers.cpp +4 -0
- package/deps/librdkafka/tests/0086-purge.c +40 -7
- package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +1 -1
- package/deps/librdkafka/tests/0089-max_poll_interval.c +12 -7
- package/deps/librdkafka/tests/0090-idempotence.c +1 -2
- package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +5 -7
- package/deps/librdkafka/tests/0092-mixed_msgver.c +6 -0
- package/deps/librdkafka/tests/0093-holb.c +8 -5
- package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +1 -0
- package/deps/librdkafka/tests/0097-ssl_verify.cpp +262 -70
- package/deps/librdkafka/tests/0098-consumer-txn.cpp +16 -16
- package/deps/librdkafka/tests/0099-commit_metadata.c +1 -1
- package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +1 -1
- package/deps/librdkafka/tests/0102-static_group_rebalance.c +317 -16
- package/deps/librdkafka/tests/0103-transactions.c +7 -7
- package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +1 -0
- package/deps/librdkafka/tests/0105-transactions_mock.c +18 -11
- package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +35 -14
- package/deps/librdkafka/tests/0107-topic_recreate.c +2 -2
- package/deps/librdkafka/tests/0109-auto_create_topics.cpp +86 -26
- package/deps/librdkafka/tests/0110-batch_size.cpp +1 -2
- package/deps/librdkafka/tests/0112-assign_unknown_part.c +3 -14
- package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +248 -104
- package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +3 -3
- package/deps/librdkafka/tests/0115-producer_auth.cpp +4 -1
- package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +7 -5
- package/deps/librdkafka/tests/0117-mock_errors.c +15 -5
- package/deps/librdkafka/tests/0118-commit_rebalance.c +41 -8
- package/deps/librdkafka/tests/0119-consumer_auth.cpp +20 -1
- package/deps/librdkafka/tests/0120-asymmetric_subscription.c +8 -3
- package/deps/librdkafka/tests/0125-immediate_flush.c +1 -1
- package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +323 -8
- package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +1 -0
- package/deps/librdkafka/tests/0132-strategy_ordering.c +12 -4
- package/deps/librdkafka/tests/0133-ssl_keys.c +28 -6
- package/deps/librdkafka/tests/0137-barrier_batch_consume.c +24 -14
- package/deps/librdkafka/tests/0139-offset_validation_mock.c +510 -2
- package/deps/librdkafka/tests/0140-commit_metadata.cpp +1 -1
- package/deps/librdkafka/tests/0142-reauthentication.c +37 -17
- package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +39 -40
- package/deps/librdkafka/tests/0146-metadata_mock.c +76 -15
- package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +952 -0
- package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +563 -0
- package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
- package/deps/librdkafka/tests/0150-telemetry_mock.c +9 -6
- package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
- package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
- package/deps/librdkafka/tests/0153-memberid.c +128 -0
- package/deps/librdkafka/tests/CMakeLists.txt +6 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +34 -9
- package/deps/librdkafka/tests/autotest.sh +0 -0
- package/deps/librdkafka/tests/broker_version_tests.py +0 -0
- package/deps/librdkafka/tests/buildbox.sh +0 -0
- package/deps/librdkafka/tests/cleanup-checker-tests.sh +0 -0
- package/deps/librdkafka/tests/cluster_testing.py +0 -0
- package/deps/librdkafka/tests/delete-test-topics.sh +0 -0
- package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.intermediate.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +42 -101
- package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.key +41 -29
- package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +112 -37
- package/deps/librdkafka/tests/gen-ssl-certs.sh +0 -0
- package/deps/librdkafka/tests/interactive_broker_version.py +0 -0
- package/deps/librdkafka/tests/java/Makefile +2 -1
- package/deps/librdkafka/tests/java/run-class.sh +0 -0
- package/deps/librdkafka/tests/lz4_manual_test.sh +0 -0
- package/deps/librdkafka/tests/multi-broker-version-test.sh +0 -0
- package/deps/librdkafka/tests/parse-refcnt.sh +0 -0
- package/deps/librdkafka/tests/performance_plot.py +0 -0
- package/deps/librdkafka/tests/requirements.txt +1 -1
- package/deps/librdkafka/tests/run-all-tests.sh +79 -0
- package/deps/librdkafka/tests/run-consumer-tests.sh +0 -0
- package/deps/librdkafka/tests/run-producer-tests.sh +0 -0
- package/deps/librdkafka/tests/run-test-batches.py +157 -0
- package/deps/librdkafka/tests/run-test.sh +0 -0
- package/deps/librdkafka/tests/sasl_test.py +0 -0
- package/deps/librdkafka/tests/test.c +478 -18
- package/deps/librdkafka/tests/test.h +62 -13
- package/deps/librdkafka/tests/testcpp.cpp +6 -1
- package/deps/librdkafka/tests/testcpp.h +30 -2
- package/deps/librdkafka/tests/testshared.h +16 -2
- package/deps/librdkafka/tests/tools/stats/graph.py +0 -0
- package/deps/librdkafka/tests/tools/stats/to_csv.py +1 -1
- package/deps/librdkafka/tests/trivup/trivup-0.14.0.tar.gz +0 -0
- package/deps/librdkafka/tests/until-fail.sh +0 -0
- package/deps/librdkafka/tests/xxxx-metadata.cpp +1 -1
- package/deps/librdkafka/vcpkg.json +1 -1
- package/deps/librdkafka/win32/setup-msys2.ps1 +24 -8
- package/deps/librdkafka/win32/setup-vcpkg.ps1 +28 -6
- package/deps/librdkafka/win32/tests/tests.vcxproj +6 -0
- package/deps/librdkafka/win32/wingetopt.h +5 -4
- package/errors.d.ts +27 -1
- package/lib/error.js +29 -3
- package/make_docs.sh +0 -0
- package/package.json +10 -11
- package/run_docker.sh +0 -0
- package/src/callbacks.cc +6 -9
- package/src/callbacks.h +1 -5
- package/test/kafka-consumer-worker.js +10 -7
- package/test/kafka-consumer.spec.js +32 -21
- package/deps/librdkafka/.semaphore/project.yml +0 -43
- package/deps/librdkafka/.semaphore/project_public.yml +0 -20
- package/deps/librdkafka/win32/install-openssl.ps1 +0 -33
|
@@ -1,3 +1,474 @@
|
|
|
1
|
+
# librdkafka v2.12.0
|
|
2
|
+
|
|
3
|
+
librdkafka v2.12.0 is a feature release:
|
|
4
|
+
|
|
5
|
+
## [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) – General Availability
|
|
6
|
+
|
|
7
|
+
Starting with **librdkafka 2.12.0**, the next generation consumer group rebalance protocol defined in **[KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol)** is **production-ready**. Please refer the following [migration guide](INTRODUCTION.md#next-generation-consumer-group-protocol-kip-848) for moving from `classic` to `consumer` protocol.
|
|
8
|
+
|
|
9
|
+
**Note:** The new consumer group protocol defined in [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) is not enabled by default. There are few contract change associated with the new protocol and might cause breaking changes. `group.protocol` configuration property dictates whether to use the new `consumer` protocol or older `classic` protocol. It defaults to `classic` if not provided.
|
|
10
|
+
|
|
11
|
+
## Enhancements and Fixes
|
|
12
|
+
* Support for OAUTHBEARER metadata based authentication types,
|
|
13
|
+
starting with Azure IMDS. [Introduction available](INTRODUCTION.md#oauthbearer-oidc-metadata-authentication) (#5155).
|
|
14
|
+
* Fix compression types read issue in GetTelemetrySubscriptions response
|
|
15
|
+
for big-endian architectures (#5183, @paravoid).
|
|
16
|
+
* Fix for KIP-1102 time based re-bootstrap condition (#5177).
|
|
17
|
+
* Fix for discarding the member epoch in a consumer group heartbeat response when leaving with an inflight HB (#4672).
|
|
18
|
+
* Fix for an error being raised after a commit due to an existing error in the topic partition (#4672).
|
|
19
|
+
* Fix double free of headers in `rd_kafka_produceva` method (@blindspotbounty, #4628).
|
|
20
|
+
* Fix to ensure `rd_kafka_query_watermark_offsets` enforces the specified timeout and does not continue beyond timeout expiry (#5201).
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Fixes
|
|
24
|
+
|
|
25
|
+
### General fixes
|
|
26
|
+
|
|
27
|
+
* Issues: #5178.
|
|
28
|
+
Fix for KIP-1102 time based re-bootstrap condition.
|
|
29
|
+
Re-bootstrap is now triggered only after `metadata.recovery.rebootstrap.trigger.ms`
|
|
30
|
+
have passed since first metadata refresh request after last successful
|
|
31
|
+
metadata response. The calculation was since last successful metadata response
|
|
32
|
+
so it's possible it did overlap with the periodic `topic.metadata.refresh.interval.ms`
|
|
33
|
+
and cause a re-bootstrap even if not needed.
|
|
34
|
+
Happening since 2.11.0 (#5177).
|
|
35
|
+
* Issues: #4878.
|
|
36
|
+
Fix to ensure `rd_kafka_query_watermark_offsets` enforces the specified timeout and does not continue beyond timeout expiry.
|
|
37
|
+
Happening since 2.3.0 (#5201).
|
|
38
|
+
|
|
39
|
+
### Telemetry fixes
|
|
40
|
+
|
|
41
|
+
* Issues: #5179 .
|
|
42
|
+
Fix issue in GetTelemetrySubscriptions with big-endian
|
|
43
|
+
architectures where wrong values are read as
|
|
44
|
+
accepted compression types causing the metrics to be sent uncompressed.
|
|
45
|
+
Happening since 2.5.0. Since 2.10.1 unit tests are failing when run on
|
|
46
|
+
big-endian architectures (#5183, @paravoid).
|
|
47
|
+
|
|
48
|
+
### Consumer fixes
|
|
49
|
+
|
|
50
|
+
* Issues: #5199
|
|
51
|
+
Fixed an issue where topic partition errors were not cleared after a successful
|
|
52
|
+
commit. Previously, a partition could retain a stale error state even though the
|
|
53
|
+
most recent commit succeeded, causing misleading error reporting. Now, successful
|
|
54
|
+
commits correctly clear the error state for the affected partitions
|
|
55
|
+
Happening since 2.4.0 (#4672).
|
|
56
|
+
|
|
57
|
+
### Producer fixes
|
|
58
|
+
|
|
59
|
+
* Issues: #4627.
|
|
60
|
+
Fix double free of headers in `rd_kafka_produceva` method in cases where the partition doesn't exist.
|
|
61
|
+
Happening since 1.x (@blindspotbounty, #4628).
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# librdkafka v2.11.1
|
|
65
|
+
|
|
66
|
+
librdkafka v2.11.1 is a maintenance release:
|
|
67
|
+
|
|
68
|
+
* Made the conditions for enabling the features future proof (#5130).
|
|
69
|
+
* Avoid returning an all brokers down error on planned disconnections (#5126).
|
|
70
|
+
* An "all brokers down" error isn't returned when we haven't tried to connect
|
|
71
|
+
to all brokers since last successful connection (#5126).
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## Fixes
|
|
75
|
+
|
|
76
|
+
### General fixes
|
|
77
|
+
|
|
78
|
+
* Issues: #4948, #4956.
|
|
79
|
+
Made the conditions for enabling the features future proof, allowing to
|
|
80
|
+
remove RPC versions in a subsequent Apache Kafka version without disabling
|
|
81
|
+
features. The existing checks were matching a single version instead of
|
|
82
|
+
a range and were failing if the older version was removed.
|
|
83
|
+
Happening since 1.x (#5130).
|
|
84
|
+
|
|
85
|
+
* Issues: #5142.
|
|
86
|
+
Avoid returning an all brokers down error on planned disconnections.
|
|
87
|
+
This is done by avoiding to count planned disconnections, such as idle
|
|
88
|
+
disconnections, broker host change and similar as events that can cause
|
|
89
|
+
the client to reach the "all brokers down" state, returning an error and
|
|
90
|
+
since 2.10.0 possibly starting a re-bootstrap sequence.
|
|
91
|
+
Happening since 1.x (#5126).
|
|
92
|
+
|
|
93
|
+
* Issues: #5142.
|
|
94
|
+
An "all brokers down" error isn't returned when we haven't tried to connect
|
|
95
|
+
to all brokers since last successful connection. It happened because the down
|
|
96
|
+
state is cached and can be stale when a connection isn't needed to that
|
|
97
|
+
particular broker. Solved by resetting the cached broker down state when any
|
|
98
|
+
broker successfully connects, so that broker needs to be tried again.
|
|
99
|
+
Happening since 1.x (#5126).
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
# librdkafka v2.11.0
|
|
104
|
+
|
|
105
|
+
librdkafka v2.11.0 is a feature release:
|
|
106
|
+
|
|
107
|
+
* [KIP-1102](https://cwiki.apache.org/confluence/display/KAFKA/KIP-1102%3A+Enable+clients+to+rebootstrap+based+on+timeout+or+error+code) Enable clients to rebootstrap based on timeout or error code (#4981).
|
|
108
|
+
* [KIP-1139](https://cwiki.apache.org/confluence/display/KAFKA/KIP-1139%3A+Add+support+for+OAuth+jwt-bearer+grant+type) Add support for OAuth jwt-bearer grant type (#4978).
|
|
109
|
+
* Fix for poll ratio calculation in case the queues are forwarded (#5017).
|
|
110
|
+
* Fix data race when buffer queues are being reset instead of being
|
|
111
|
+
initialized (#4718).
|
|
112
|
+
* Features BROKER_BALANCED_CONSUMER and SASL_GSSAPI don't depend on
|
|
113
|
+
JoinGroup v0 anymore, missing in AK 4.0 and CP 8.0 (#5131).
|
|
114
|
+
* Improve HTTPS CA certificates configuration by probing several paths
|
|
115
|
+
when OpenSSL is statically linked and providing a way to customize their location
|
|
116
|
+
or value (#5133).
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
## Fixes
|
|
120
|
+
|
|
121
|
+
### General fixes
|
|
122
|
+
|
|
123
|
+
* Issues: #4522.
|
|
124
|
+
A data race happened when emptying buffers of a failing broker, in its thread,
|
|
125
|
+
with the statistics callback in main thread gathering the buffer counts.
|
|
126
|
+
Solved by resetting the atomic counters instead of initializing them.
|
|
127
|
+
Happening since 1.x (#4718).
|
|
128
|
+
* Issues: #4948
|
|
129
|
+
Features BROKER_BALANCED_CONSUMER and SASL_GSSAPI don't depend on
|
|
130
|
+
JoinGroup v0 anymore, missing in AK 4.0 and CP 8.0. This PR partially
|
|
131
|
+
fixes the linked issue, a complete fix for all features will follow.
|
|
132
|
+
Rest of fixes are necessary only for a subsequent Apache Kafka major
|
|
133
|
+
version (e.g. AK 5.x).
|
|
134
|
+
Happening since 1.x (#5131).
|
|
135
|
+
|
|
136
|
+
### Telemetry fixes
|
|
137
|
+
|
|
138
|
+
* Issues: #5109
|
|
139
|
+
Fix for poll ratio calculation in case the queues are forwarded.
|
|
140
|
+
Poll ratio is now calculated per-queue instead of per-instance and
|
|
141
|
+
it allows to avoid calculation problems linked to using the same
|
|
142
|
+
field.
|
|
143
|
+
Happens since 2.6.0 (#5017).
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
# librdkafka v2.10.1
|
|
148
|
+
|
|
149
|
+
librdkafka v2.10.1 is a maintenance release:
|
|
150
|
+
|
|
151
|
+
* Fix to add locks when updating the metadata cache for the consumer
|
|
152
|
+
after no broker connection is available (@marcin-krystianc, #5066).
|
|
153
|
+
* Fix to the re-bootstrap case when `bootstrap.servers` is `NULL` and
|
|
154
|
+
brokers were added manually through `rd_kafka_brokers_add` (#5067).
|
|
155
|
+
* Fix an issue where the first message to any topic produced via `producev` or
|
|
156
|
+
`produceva` was delivered late (by up to 1 second) (#5032).
|
|
157
|
+
* Fix for a loop of re-bootstrap sequences in case the client reaches the
|
|
158
|
+
`all brokers down` state (#5086).
|
|
159
|
+
* Fix for frequent disconnections on push telemetry requests
|
|
160
|
+
with particular metric configurations (#4912).
|
|
161
|
+
* Avoid copy outside boundaries when reading metric names in telemetry
|
|
162
|
+
subscription (#5105)
|
|
163
|
+
* Metrics aren't duplicated when multiple prefixes match them (#5104)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
## Fixes
|
|
167
|
+
|
|
168
|
+
### General fixes
|
|
169
|
+
|
|
170
|
+
* Issues: #5088.
|
|
171
|
+
Fix for a loop of re-bootstrap sequences in case the client reaches the
|
|
172
|
+
`all brokers down` state. The client continues to select the
|
|
173
|
+
bootstrap brokers given they have no connection attempt and doesn't
|
|
174
|
+
re-connect to the learned ones. In case it happens a broker restart
|
|
175
|
+
can break the loop for the clients using the affected version.
|
|
176
|
+
Fixed by giving a higher chance to connect to the learned brokers
|
|
177
|
+
even if there are new ones that never tried to connect.
|
|
178
|
+
Happens since 2.10.0 (#5086).
|
|
179
|
+
* Issues: #5057.
|
|
180
|
+
Fix to the re-bootstrap case when `bootstrap.servers` is `NULL` and
|
|
181
|
+
brokers were added manually through `rd_kafka_brokers_add`.
|
|
182
|
+
Avoids a segmentation fault in this case.
|
|
183
|
+
Happens since 2.10.0 (#5067).
|
|
184
|
+
|
|
185
|
+
### Producer fixes
|
|
186
|
+
|
|
187
|
+
* In case of `producev` or `produceva`, the producer did not enqueue a leader
|
|
188
|
+
query metadata request immediately, and rather, waited for the 1 second
|
|
189
|
+
timer to kick in. This could cause delays in the sending of the first message
|
|
190
|
+
by up to 1 second.
|
|
191
|
+
Happens since 1.x (#5032).
|
|
192
|
+
|
|
193
|
+
### Consumer fixes
|
|
194
|
+
|
|
195
|
+
* Issues: #5051.
|
|
196
|
+
Fix to add locks when updating the metadata cache for the consumer.
|
|
197
|
+
It can cause memory corruption or use-after-free in case
|
|
198
|
+
there's no broker connection and the consumer
|
|
199
|
+
group metadata needs to be updated.
|
|
200
|
+
Happens since 2.10.0 (#5066).
|
|
201
|
+
|
|
202
|
+
### Telemetry fixes
|
|
203
|
+
|
|
204
|
+
* Issues: #5106.
|
|
205
|
+
Fix for frequent disconnections on push telemetry requests
|
|
206
|
+
with particular metric configurations.
|
|
207
|
+
A `NULL` payload is sent in a push telemetry request when
|
|
208
|
+
an empty one is needed. This causes disconnections every time the
|
|
209
|
+
push is sent, only when metrics are requested and
|
|
210
|
+
some metrics are matching the producer but none the consumer
|
|
211
|
+
or the other way around.
|
|
212
|
+
Happens since 2.5.0 (#4912).
|
|
213
|
+
* Issues: #5102.
|
|
214
|
+
Avoid copy outside boundaries when reading metric names in telemetry
|
|
215
|
+
subscription. It can cause that some metrics aren't matched.
|
|
216
|
+
Happens since 2.5.0 (#5105).
|
|
217
|
+
* Issues: #5103.
|
|
218
|
+
Telemetry metrics aren't duplicated when multiple prefixes match them.
|
|
219
|
+
Fixed by keeping track of the metrics that already matched.
|
|
220
|
+
Happens since 2.5.0 (#5104).
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
# librdkafka v2.10.0
|
|
225
|
+
|
|
226
|
+
librdkafka v2.10.0 is a feature release:
|
|
227
|
+
|
|
228
|
+
> [!WARNING] it's suggested to upgrade to 2.10.1 or later
|
|
229
|
+
> because of the possibly critical bug #5088
|
|
230
|
+
|
|
231
|
+
## [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) – Now in **Preview**
|
|
232
|
+
|
|
233
|
+
- [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) has transitioned from *Early Access* to *Preview*.
|
|
234
|
+
- Added support for **regex-based subscriptions**.
|
|
235
|
+
- Implemented client-side member ID generation as per [KIP-1082](https://cwiki.apache.org/confluence/display/KAFKA/KIP-1082%3A+Require+Client-Generated+IDs+over+the+ConsumerGroupHeartbeat+RPC).
|
|
236
|
+
- `rd_kafka_DescribeConsumerGroups()` now supports KIP-848-style `consumer` groups. Two new fields have been added:
|
|
237
|
+
- **Group type** – Indicates whether the group is `classic` or `consumer`.
|
|
238
|
+
- **Target assignment** – Applicable only to `consumer` protocol groups (defaults to `NULL`).
|
|
239
|
+
- Group configuration is now supported in `AlterConfigs`, `IncrementalAlterConfigs`, and `DescribeConfigs`. ([#4939](https://github.com/confluentinc/librdkafka/pull/4939))
|
|
240
|
+
- Added **Topic Authorization Error** support in the `ConsumerGroupHeartbeat` response.
|
|
241
|
+
- Removed usage of the `partition.assignment.strategy` property for the `consumer` group protocol. An error will be raised if this is set with `group.protocol=consumer`.
|
|
242
|
+
- Deprecated and disallowed the following properties for the `consumer` group protocol:
|
|
243
|
+
- `session.timeout.ms`
|
|
244
|
+
- `heartbeat.interval.ms`
|
|
245
|
+
- `group.protocol.type`
|
|
246
|
+
Attempting to set any of these will result in an error.
|
|
247
|
+
- Enhanced handling for `subscribe()` and `unsubscribe()` edge cases.
|
|
248
|
+
|
|
249
|
+
> [!Note]
|
|
250
|
+
> The [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) consumer is currently in **Preview** and should not be used in production environments. Implementation is feature complete but contract could have minor changes before General Availability.
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
## Upgrade considerations
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
Starting from this version, brokers not reported in Metadata RPC call are
|
|
257
|
+
removed along with their threads. Brokers and their threads are added back
|
|
258
|
+
when they appear in a Metadata RPC response again. When no brokers are left
|
|
259
|
+
or they're not reachable, the client will start a re-bootstrap sequence
|
|
260
|
+
by default. `metadata.recovery.strategy` controls this,
|
|
261
|
+
which defaults to `rebootstrap`.
|
|
262
|
+
Setting `metadata.recovery.strategy` to `none` avoids any re-bootstrapping and
|
|
263
|
+
leaves only the broker received in last successful metadata response.
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
## Enhancements and Fixes
|
|
267
|
+
|
|
268
|
+
* [KIP-899](https://cwiki.apache.org/confluence/display/KAFKA/KIP-899%3A+Allow+producer+and+consumer+clients+to+rebootstrap) Allow producer and consumer clients to rebootstrap
|
|
269
|
+
* Identify brokers only by broker id (#4557, @mfleming)
|
|
270
|
+
* Remove unavailable brokers and their thread (#4557, @mfleming)
|
|
271
|
+
* Commits during a cooperative incremental rebalance aren't causing
|
|
272
|
+
an assignment lost if the generation id was bumped in between (#4908).
|
|
273
|
+
* Fix for librdkafka yielding before timeouts had been reached (#4970)
|
|
274
|
+
* Removed a 500ms latency when a consumer partition switches to a different
|
|
275
|
+
leader (#4970)
|
|
276
|
+
* The mock cluster implementation removes brokers from Metadata response
|
|
277
|
+
when they're not available, this simulates better the actual behavior of
|
|
278
|
+
a cluster that is using KRaft (#4970).
|
|
279
|
+
* Doesn't remove topics from cache on temporary Metadata errors but only
|
|
280
|
+
on metadata cache expiry (#4970).
|
|
281
|
+
* Doesn't mark the topic as unknown if it had been marked as existent earlier
|
|
282
|
+
and `topic.metadata.propagation.max.ms` hasn't passed still (@marcin-krystianc, #4970).
|
|
283
|
+
* Doesn't update partition leaders if the topic in metadata
|
|
284
|
+
response has errors (#4970).
|
|
285
|
+
* Only topic authorization errors in a metadata response are considered
|
|
286
|
+
permanent and are returned to the user (#4970).
|
|
287
|
+
* The function `rd_kafka_offsets_for_times` refreshes leader information
|
|
288
|
+
if the error requires it, allowing it to succeed on
|
|
289
|
+
subsequent manual retries (#4970).
|
|
290
|
+
* Deprecated `api.version.request`, `api.version.fallback.ms` and
|
|
291
|
+
`broker.version.fallback` configuration properties (#4970).
|
|
292
|
+
* When consumer is closed before destroying the client, the operations queue
|
|
293
|
+
isn't purged anymore as it contains operations
|
|
294
|
+
unrelated to the consumer group (#4970).
|
|
295
|
+
* When making multiple changes to the consumer subscription in a short time,
|
|
296
|
+
no unknown topic error is returned for topics that are in the new subscription but weren't in previous one (#4970).
|
|
297
|
+
* Prevent metadata cache corruption when topic id changes
|
|
298
|
+
(@kwdubuc, @marcin-krystianc, @GerKr, #4970).
|
|
299
|
+
* Fix for the case where a metadata refresh enqueued on an unreachable broker
|
|
300
|
+
prevents refreshing the controller or the coordinator until that broker
|
|
301
|
+
becomes reachable again (#4970).
|
|
302
|
+
* Remove a one second wait after a partition fetch is restarted following a
|
|
303
|
+
leader change and offset validation (#4970).
|
|
304
|
+
* Fix the Nagle algorithm (TCP_NODELAY) on broker sockets to not be enabled
|
|
305
|
+
by default (#4986).
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
## Fixes
|
|
309
|
+
|
|
310
|
+
### General fixes
|
|
311
|
+
|
|
312
|
+
* Issues: #4212
|
|
313
|
+
Identify brokers only by broker id, as happens in Java,
|
|
314
|
+
avoid to find the broker with same hostname and use the same thread
|
|
315
|
+
and connection.
|
|
316
|
+
Happens since 1.x (#4557, @mfleming).
|
|
317
|
+
* Issues: #4557
|
|
318
|
+
Remove brokers not reported in a metadata call, along with their threads.
|
|
319
|
+
Avoids that unavailable brokers are selected for a new connection when
|
|
320
|
+
there's no one available. We cannot tell if a broker was removed
|
|
321
|
+
temporarily or permanently so we always remove it and it'll be added back when
|
|
322
|
+
it becomes available again.
|
|
323
|
+
Happens since 1.x (#4557, @mfleming).
|
|
324
|
+
* Issues: #4970
|
|
325
|
+
librdkafka code using `cnd_timedwait` was yielding before a timeout occurred
|
|
326
|
+
without the condition being fulfilled because of spurious wake-ups.
|
|
327
|
+
Solved by verifying with a monotonic clock that the expected point in time
|
|
328
|
+
was reached and calling the function again if needed.
|
|
329
|
+
Happens since 1.x (#4970).
|
|
330
|
+
* Issues: #4970
|
|
331
|
+
Doesn't remove topics from cache on temporary Metadata errors but only
|
|
332
|
+
on metadata cache expiry. It allows the client to continue working
|
|
333
|
+
in case of temporary problems to the Kafka metadata plane.
|
|
334
|
+
Happens since 1.x (#4970).
|
|
335
|
+
* Issues: #4970
|
|
336
|
+
Doesn't mark the topic as unknown if it had been marked as existent earlier
|
|
337
|
+
and `topic.metadata.propagation.max.ms` hasn't passed still. It achieves
|
|
338
|
+
this property expected effect even if a different broker had
|
|
339
|
+
previously reported the topic as existent.
|
|
340
|
+
Happens since 1.x (@marcin-krystianc, #4970).
|
|
341
|
+
* Issues: #4907
|
|
342
|
+
Doesn't update partition leaders if the topic in metadata
|
|
343
|
+
response has errors. It's in line with what Java client does and allows
|
|
344
|
+
to avoid segmentation faults for unknown partitions.
|
|
345
|
+
Happens since 1.x (#4970).
|
|
346
|
+
* Issues: #4970
|
|
347
|
+
Only topic authorization errors in a metadata response are considered
|
|
348
|
+
permanent and are returned to the user. It's in line with what Java client
|
|
349
|
+
does and avoids returning to the user an error that wasn't meant to be
|
|
350
|
+
permanent.
|
|
351
|
+
Happens since 1.x (#4970).
|
|
352
|
+
* Issues: #4964, #4778
|
|
353
|
+
Prevent metadata cache corruption when topic id for the same topic name
|
|
354
|
+
changes. Solved by correctly removing the entry with the old topic id from metadata cache
|
|
355
|
+
to prevent subsequent use-after-free.
|
|
356
|
+
Happens since 2.4.0 (@kwdubuc, @marcin-krystianc, @GerKr, #4970).
|
|
357
|
+
* Issues: #4970
|
|
358
|
+
Fix for the case where a metadata refresh enqueued on an unreachable broker
|
|
359
|
+
prevents refreshing the controller or the coordinator until that broker
|
|
360
|
+
becomes reachable again. Given the request continues to be retried on that
|
|
361
|
+
broker, the counter for refreshing complete broker metadata doesn't reach
|
|
362
|
+
zero and prevents the client from obtaining the new controller or group or transactional coordinator.
|
|
363
|
+
It causes a series of debug messages like:
|
|
364
|
+
"Skipping metadata request: ... full request already in-transit", until
|
|
365
|
+
the broker the request is enqueued on is up again.
|
|
366
|
+
Solved by not retrying these kinds of metadata requests.
|
|
367
|
+
Happens since 1.x (#4970).
|
|
368
|
+
* The Nagle algorithm (TCP_NODELAY) is now disabled by default. It caused a
|
|
369
|
+
large increase in latency for some use cases, for example, when using an
|
|
370
|
+
SSL connection.
|
|
371
|
+
For efficient batching, the application should use `linger.ms`,
|
|
372
|
+
`batch.size` etc.
|
|
373
|
+
Happens since: 0.x (#4986).
|
|
374
|
+
|
|
375
|
+
### Consumer fixes
|
|
376
|
+
|
|
377
|
+
* Issues: #4059
|
|
378
|
+
Commits during a cooperative incremental rebalance could cause an
|
|
379
|
+
assignment lost if the generation id was bumped by a second join
|
|
380
|
+
group request.
|
|
381
|
+
Solved by not rejoining the group in case an illegal generation error happens
|
|
382
|
+
during a rebalance.
|
|
383
|
+
Happening since v1.6.0 (#4908)
|
|
384
|
+
* Issues: #4970
|
|
385
|
+
When switching to a different leader a consumer could wait 500ms
|
|
386
|
+
(`fetch.error.backoff.ms`) before starting to fetch again. The fetch backoff wasn't reset when joining the new broker.
|
|
387
|
+
Solved by resetting it, given it's not needed to backoff
|
|
388
|
+
the first fetch on a different node. This way faster leader switches are
|
|
389
|
+
possible.
|
|
390
|
+
Happens since 1.x (#4970).
|
|
391
|
+
* Issues: #4970
|
|
392
|
+
The function `rd_kafka_offsets_for_times` refreshes leader information
|
|
393
|
+
if the error requires it, allowing it to succeed on
|
|
394
|
+
subsequent manual retries. Similar to the fix done in 2.3.0 in
|
|
395
|
+
`rd_kafka_query_watermark_offsets`. Additionally, the partition
|
|
396
|
+
current leader epoch is taken from metadata cache instead of
|
|
397
|
+
from passed partitions.
|
|
398
|
+
Happens since 1.x (#4970).
|
|
399
|
+
* Issues: #4970
|
|
400
|
+
When consumer is closed before destroying the client, the operations queue
|
|
401
|
+
isn't purged anymore as it contains operations
|
|
402
|
+
unrelated to the consumer group.
|
|
403
|
+
Happens since 1.x (#4970).
|
|
404
|
+
* Issues: #4970
|
|
405
|
+
When making multiple changes to the consumer subscription in a short time,
|
|
406
|
+
no unknown topic error is returned for topics that are in the new subscription
|
|
407
|
+
but weren't in previous one. This was due to the metadata request relative
|
|
408
|
+
to previous subscription.
|
|
409
|
+
Happens since 1.x (#4970).
|
|
410
|
+
* Issues: #4970
|
|
411
|
+
Remove a one second wait after a partition fetch is restarted following a
|
|
412
|
+
leader change and offset validation. This is done by resetting the fetch
|
|
413
|
+
error backoff and waking up the delegated broker if present.
|
|
414
|
+
Happens since 2.1.0 (#4970).
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
*Note: there was no v2.9.0 librdkafka release,
|
|
419
|
+
it was a dependent clients release only*
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
# librdkafka v2.8.0
|
|
424
|
+
|
|
425
|
+
librdkafka v2.8.0 is a maintenance release:
|
|
426
|
+
|
|
427
|
+
* Socket options are now all set before connection (#4893).
|
|
428
|
+
* Client certificate chain is now sent when using `ssl.certificate.pem`
|
|
429
|
+
or `ssl_certificate` or `ssl.keystore.location` (#4894).
|
|
430
|
+
* Avoid sending client certificates whose chain doesn't match with broker
|
|
431
|
+
trusted root certificates (#4900).
|
|
432
|
+
* Fixes to allow to migrate partitions to leaders with same leader epoch,
|
|
433
|
+
or NULL leader epoch (#4901).
|
|
434
|
+
* Support versions of OpenSSL without the ENGINE component (Chris Novakovic, #3535
|
|
435
|
+
and @remicollet, #4911).
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
## Fixes
|
|
439
|
+
|
|
440
|
+
### General fixes
|
|
441
|
+
|
|
442
|
+
* Socket options are now all set before connection, as [documentation](https://man7.org/linux/man-pages/man7/tcp.7.html)
|
|
443
|
+
says it's needed for socket buffers to take effect, even if in some
|
|
444
|
+
cases they could have effect even after connection.
|
|
445
|
+
Happening since v0.9.0 (#4893).
|
|
446
|
+
* Issues: #3225.
|
|
447
|
+
Client certificate chain is now sent when using `ssl.certificate.pem`
|
|
448
|
+
or `ssl_certificate` or `ssl.keystore.location`.
|
|
449
|
+
Without that, broker must explicitly add any intermediate certification
|
|
450
|
+
authority certificate to its truststore to be able to accept client
|
|
451
|
+
certificate.
|
|
452
|
+
Happens since: 1.x (#4894).
|
|
453
|
+
|
|
454
|
+
### Consumer fixes
|
|
455
|
+
|
|
456
|
+
* Issues: #4796.
|
|
457
|
+
Fix to allow to migrate partitions to leaders with NULL leader epoch.
|
|
458
|
+
NULL leader epoch can happen during a cluster roll with an upgrade to a
|
|
459
|
+
version supporting KIP-320.
|
|
460
|
+
Happening since v2.1.0 (#4901).
|
|
461
|
+
* Issues: #4804.
|
|
462
|
+
Fix to allow to migrate partitions to leaders with same leader epoch.
|
|
463
|
+
Same leader epoch can happen when partition is
|
|
464
|
+
temporarily migrated to the internal broker (#4804), or if broker implementation
|
|
465
|
+
never bumps it, as it's not needed to validate the offsets.
|
|
466
|
+
Happening since v2.4.0 (#4901).
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
*Note: there was no v2.7.0 librdkafka release*
|
|
470
|
+
|
|
471
|
+
|
|
1
472
|
# librdkafka v2.6.1
|
|
2
473
|
|
|
3
474
|
librdkafka v2.6.1 is a maintenance release:
|
|
@@ -19,7 +490,6 @@ librdkafka v2.6.1 is a maintenance release:
|
|
|
19
490
|
* Allow retrying for status code 429 ('Too Many Requests') in HTTP requests for
|
|
20
491
|
OAUTHBEARER OIDC (#4902).
|
|
21
492
|
|
|
22
|
-
|
|
23
493
|
## Fixes
|
|
24
494
|
|
|
25
495
|
### General fixes
|
|
@@ -12,6 +12,8 @@ message.copy.max.bytes | * | 0 .. 1000000000 | 65535
|
|
|
12
12
|
receive.message.max.bytes | * | 1000 .. 2147483647 | 100000000 | medium | Maximum Kafka protocol response message size. This serves as a safety precaution to avoid memory exhaustion in case of protocol hickups. This value must be at least `fetch.max.bytes` + 512 to allow for protocol overhead; the value is adjusted automatically unless the configuration property is explicitly set. <br>*Type: integer*
|
|
13
13
|
max.in.flight.requests.per.connection | * | 1 .. 1000000 | 1000000 | low | Maximum number of in-flight requests per broker connection. This is a generic property applied to all broker communication, however it is primarily relevant to produce requests. In particular, note that other mechanisms limit the number of outstanding consumer fetch request per broker to one. <br>*Type: integer*
|
|
14
14
|
max.in.flight | * | 1 .. 1000000 | 1000000 | low | Alias for `max.in.flight.requests.per.connection`: Maximum number of in-flight requests per broker connection. This is a generic property applied to all broker communication, however it is primarily relevant to produce requests. In particular, note that other mechanisms limit the number of outstanding consumer fetch request per broker to one. <br>*Type: integer*
|
|
15
|
+
metadata.recovery.strategy | * | none, rebootstrap | rebootstrap | low | Controls how the client recovers when none of the brokers known to it is available. If set to `none`, the client doesn't re-bootstrap. If set to `rebootstrap`, the client repeats the bootstrap process using `bootstrap.servers` and brokers added through `rd_kafka_brokers_add()`. Rebootstrapping is useful when a client communicates with brokers so infrequently that the set of brokers may change entirely before the client refreshes metadata. Metadata recovery is triggered when all last-known brokers appear unavailable simultaneously or the client cannot refresh metadata within `metadata.recovery.rebootstrap.trigger.ms` or it's requested in a metadata response. <br>*Type: enum value*
|
|
16
|
+
metadata.recovery.rebootstrap.trigger.ms | * | 0 .. 2147483647 | 300000 | low | If a client configured to rebootstrap using `metadata.recovery.strategy=rebootstrap` is unable to obtain metadata from any of the brokers for this interval, client repeats the bootstrap process using `bootstrap.servers` configuration and brokers added through `rd_kafka_brokers_add()`. <br>*Type: integer*
|
|
15
17
|
topic.metadata.refresh.interval.ms | * | -1 .. 3600000 | 300000 | low | Period of time in milliseconds at which topic and broker metadata is refreshed in order to proactively discover any new brokers, topics, partitions or partition leader changes. Use -1 to disable the intervalled refresh (not recommended). If there are no locally referenced topics (no topic objects created, no messages produced, no subscription or no assignment) then only the broker list will be refreshed every interval but no more often than every 10s. <br>*Type: integer*
|
|
16
18
|
metadata.max.age.ms | * | 1 .. 86400000 | 900000 | low | Metadata cache max age. Defaults to topic.metadata.refresh.interval.ms * 3 <br>*Type: integer*
|
|
17
19
|
topic.metadata.refresh.fast.interval.ms | * | 1 .. 60000 | 100 | low | When a topic loses its leader a new metadata request will be enqueued immediately and then with this initial interval, exponentially increasing upto `retry.backoff.max.ms`, until the topic metadata has been refreshed. If not set explicitly, it will be defaulted to `retry.backoff.ms`. This is used to recover quickly from transitioning leader brokers. <br>*Type: integer*
|
|
@@ -25,12 +27,12 @@ socket.blocking.max.ms | * | 1 .. 60000 | 1000
|
|
|
25
27
|
socket.send.buffer.bytes | * | 0 .. 100000000 | 0 | low | Broker socket send buffer size. System default is used if 0. <br>*Type: integer*
|
|
26
28
|
socket.receive.buffer.bytes | * | 0 .. 100000000 | 0 | low | Broker socket receive buffer size. System default is used if 0. <br>*Type: integer*
|
|
27
29
|
socket.keepalive.enable | * | true, false | false | low | Enable TCP keep-alives (SO_KEEPALIVE) on broker sockets <br>*Type: boolean*
|
|
28
|
-
socket.nagle.disable | * | true, false |
|
|
30
|
+
socket.nagle.disable | * | true, false | true | low | Disable the Nagle algorithm (TCP_NODELAY) on broker sockets. <br>*Type: boolean*
|
|
29
31
|
socket.max.fails | * | 0 .. 1000000 | 1 | low | Disconnect from broker when this number of send failures (e.g., timed out requests) is reached. Disable with 0. WARNING: It is highly recommended to leave this setting at its default value of 1 to avoid the client and broker to become desynchronized in case of request timeouts. NOTE: The connection is automatically re-established. <br>*Type: integer*
|
|
30
32
|
broker.address.ttl | * | 0 .. 86400000 | 1000 | low | How long to cache the broker address resolving results (milliseconds). <br>*Type: integer*
|
|
31
33
|
broker.address.family | * | any, v4, v6 | any | low | Allowed broker IP address families: any, v4, v6 <br>*Type: enum value*
|
|
32
34
|
socket.connection.setup.timeout.ms | * | 1000 .. 2147483647 | 30000 | medium | Maximum time allowed for broker connection setup (TCP connection setup as well SSL and SASL handshake). If the connection to the broker is not fully functional after this the connection will be closed and retried. <br>*Type: integer*
|
|
33
|
-
connections.max.idle.ms | * | 0 .. 2147483647 | 0 | medium | Close broker connections after the specified time of inactivity. Disable with 0. If this property is left at its default value some heuristics are performed to determine a suitable default value, this is currently limited to identifying brokers on Azure (see librdkafka issue #3109 for more info). <br>*Type: integer*
|
|
35
|
+
connections.max.idle.ms | * | 0 .. 2147483647 | 0 | medium | Close broker connections after the specified time of inactivity. Disable with 0. If this property is left at its default value some heuristics are performed to determine a suitable default value, this is currently limited to identifying brokers on Azure (see librdkafka issue #3109 for more info). Actual value can be lower, up to 2s lower, only if `connections.max.idle.ms` >= 4s, as jitter is added to avoid disconnecting all brokers at the same time. <br>*Type: integer*
|
|
34
36
|
reconnect.backoff.jitter.ms | * | 0 .. 3600000 | 0 | low | **DEPRECATED** No longer used. See `reconnect.backoff.ms` and `reconnect.backoff.max.ms`. <br>*Type: integer*
|
|
35
37
|
reconnect.backoff.ms | * | 0 .. 3600000 | 100 | medium | The initial time to wait before reconnecting to a broker after the connection has been closed. The time is increased exponentially until `reconnect.backoff.max.ms` is reached. -25% to +50% jitter is applied to each reconnect backoff. A value of 0 disables the backoff and reconnects immediately. <br>*Type: integer*
|
|
36
38
|
reconnect.backoff.max.ms | * | 0 .. 3600000 | 10000 | medium | The maximum time to wait before reconnecting to a broker after the connection has been closed. <br>*Type: integer*
|
|
@@ -54,10 +56,10 @@ resolve_cb | * | |
|
|
|
54
56
|
opaque | * | | | low | Application opaque (set with rd_kafka_conf_set_opaque()) <br>*Type: see dedicated API*
|
|
55
57
|
default_topic_conf | * | | | low | Default topic configuration for automatically subscribed topics <br>*Type: see dedicated API*
|
|
56
58
|
internal.termination.signal | * | 0 .. 128 | 0 | low | Signal that librdkafka will use to quickly terminate on rd_kafka_destroy(). If this signal is not set then there will be a delay before rd_kafka_wait_destroyed() returns true as internal threads are timing out their system calls. If this signal is set however the delay will be minimal. The application should mask this signal as an internal signal handler is installed. <br>*Type: integer*
|
|
57
|
-
api.version.request | * | true, false | true | high | Request broker's supported API versions to adjust functionality to available protocol features. If set to false, or the ApiVersionRequest fails, the fallback version `broker.version.fallback` will be used. **NOTE**: Depends on broker version >=0.10.0. If the request is not supported by (an older) broker the `broker.version.fallback` fallback is used. <br>*Type: boolean*
|
|
59
|
+
api.version.request | * | true, false | true | high | **DEPRECATED** **Post-deprecation actions: remove this configuration property, brokers < 0.10.0 won't be supported anymore in librdkafka 3.x.** Request broker's supported API versions to adjust functionality to available protocol features. If set to false, or the ApiVersionRequest fails, the fallback version `broker.version.fallback` will be used. **NOTE**: Depends on broker version >=0.10.0. If the request is not supported by (an older) broker the `broker.version.fallback` fallback is used. <br>*Type: boolean*
|
|
58
60
|
api.version.request.timeout.ms | * | 1 .. 300000 | 10000 | low | Timeout for broker API version requests. <br>*Type: integer*
|
|
59
|
-
api.version.fallback.ms | * | 0 .. 604800000 | 0 | medium | Dictates how long the `broker.version.fallback` fallback is used in the case the ApiVersionRequest fails. **NOTE**: The ApiVersionRequest is only issued when a new connection to the broker is made (such as after an upgrade). <br>*Type: integer*
|
|
60
|
-
broker.version.fallback | * | | 0.10.0 | medium | Older broker versions (before 0.10.0) provide no way for a client to query for supported protocol features (ApiVersionRequest, see `api.version.request`) making it impossible for the client to know what features it may use. As a workaround a user may set this property to the expected broker version and the client will automatically adjust its feature set accordingly if the ApiVersionRequest fails (or is disabled). The fallback broker version will be used for `api.version.fallback.ms`. Valid values are: 0.9.0, 0.8.2, 0.8.1, 0.8.0. Any other value >= 0.10, such as 0.10.2.1, enables ApiVersionRequests. <br>*Type: string*
|
|
61
|
+
api.version.fallback.ms | * | 0 .. 604800000 | 0 | medium | **DEPRECATED** **Post-deprecation actions: remove this configuration property, brokers < 0.10.0 won't be supported anymore in librdkafka 3.x.** Dictates how long the `broker.version.fallback` fallback is used in the case the ApiVersionRequest fails. **NOTE**: The ApiVersionRequest is only issued when a new connection to the broker is made (such as after an upgrade). <br>*Type: integer*
|
|
62
|
+
broker.version.fallback | * | | 0.10.0 | medium | **DEPRECATED** **Post-deprecation actions: remove this configuration property, brokers < 0.10.0 won't be supported anymore in librdkafka 3.x.** Older broker versions (before 0.10.0) provide no way for a client to query for supported protocol features (ApiVersionRequest, see `api.version.request`) making it impossible for the client to know what features it may use. As a workaround a user may set this property to the expected broker version and the client will automatically adjust its feature set accordingly if the ApiVersionRequest fails (or is disabled). The fallback broker version will be used for `api.version.fallback.ms`. Valid values are: 0.9.0, 0.8.2, 0.8.1, 0.8.0. Any other value >= 0.10, such as 0.10.2.1, enables ApiVersionRequests. <br>*Type: string*
|
|
61
63
|
allow.auto.create.topics | * | true, false | false | low | Allow automatic topic creation on the broker when subscribing to or assigning non-existent topics. The broker must also be configured with `auto.create.topics.enable=true` for this configuration to take effect. Note: the default value (true) for the producer is different from the default value (false) for the consumer. Further, the consumer default value is different from the Java consumer (true), and this property is not supported by the Java producer. Requires broker version >= 0.11.0.0, for older broker versions only the broker configuration applies. <br>*Type: boolean*
|
|
62
64
|
security.protocol | * | plaintext, ssl, sasl_plaintext, sasl_ssl | plaintext | high | Protocol used to communicate with brokers. <br>*Type: enum value*
|
|
63
65
|
ssl.cipher.suites | * | | | low | A cipher suite is a named combination of authentication, encryption, MAC and key exchange algorithm used to negotiate the security settings for a network connection using TLS or SSL network protocol. See manual page for `ciphers(1)` and `SSL_CTX_set_cipher_list(3). <br>*Type: string*
|
|
@@ -71,6 +73,8 @@ ssl.certificate.location | * | |
|
|
|
71
73
|
ssl.certificate.pem | * | | | low | Client's public key string (PEM format) used for authentication. <br>*Type: string*
|
|
72
74
|
ssl_certificate | * | | | low | Client's public key as set by rd_kafka_conf_set_ssl_cert() <br>*Type: see dedicated API*
|
|
73
75
|
ssl.ca.location | * | | | low | File or directory path to CA certificate(s) for verifying the broker's key. Defaults: On Windows the system's CA certificates are automatically looked up in the Windows Root certificate store. On Mac OSX this configuration defaults to `probe`. It is recommended to install openssl using Homebrew, to provide CA certificates. On Linux install the distribution's ca-certificates package. If OpenSSL is statically linked or `ssl.ca.location` is set to `probe` a list of standard paths will be probed and the first one found will be used as the default CA certificate location path. If OpenSSL is dynamically linked the OpenSSL library's default path will be used (see `OPENSSLDIR` in `openssl version -a`). <br>*Type: string*
|
|
76
|
+
https.ca.location | * | | | low | File or directory path to CA certificate(s) for verifying HTTPS endpoints, like `sasl.oauthbearer.token.endpoint.url` used for OAUTHBEARER/OIDC authentication. Mutually exclusive with `https.ca.pem`. Defaults: On Windows the system's CA certificates are automatically looked up in the Windows Root certificate store. On Mac OSX this configuration defaults to `probe`. It is recommended to install openssl using Homebrew, to provide CA certificates. On Linux install the distribution's ca-certificates package. If OpenSSL is statically linked or `https.ca.location` is set to `probe` a list of standard paths will be probed and the first one found will be used as the default CA certificate location path. If OpenSSL is dynamically linked the OpenSSL library's default path will be used (see `OPENSSLDIR` in `openssl version -a`). <br>*Type: string*
|
|
77
|
+
https.ca.pem | * | | | low | CA certificate string (PEM format) for verifying HTTPS endpoints. Mutually exclusive with `https.ca.location`. Optional: see `https.ca.location`. <br>*Type: string*
|
|
74
78
|
ssl.ca.pem | * | | | low | CA certificate string (PEM format) for verifying the broker's key. <br>*Type: string*
|
|
75
79
|
ssl_ca | * | | | low | CA certificate as set by rd_kafka_conf_set_ssl_cert() <br>*Type: see dedicated API*
|
|
76
80
|
ssl.ca.certificate.stores | * | | Root | low | Comma-separated list of Windows Certificate stores to load CA certificates from. Certificates will be loaded in the same order as stores are specified. If no certificates can be loaded from any of the specified stores an error is logged and the OpenSSL library's default CA location is used instead. Store names are typically one or more of: MY, Root, Trust, CA. <br>*Type: string*
|
|
@@ -98,18 +102,34 @@ enable.sasl.oauthbearer.unsecure.jwt | * | true, false | false
|
|
|
98
102
|
oauthbearer_token_refresh_cb | * | | | low | SASL/OAUTHBEARER token refresh callback (set with rd_kafka_conf_set_oauthbearer_token_refresh_cb(), triggered by rd_kafka_poll(), et.al. This callback will be triggered when it is time to refresh the client's OAUTHBEARER token. Also see `rd_kafka_conf_enable_sasl_queue()`. <br>*Type: see dedicated API*
|
|
99
103
|
sasl.oauthbearer.method | * | default, oidc | default | low | Set to "default" or "oidc" to control which login method to be used. If set to "oidc", the following properties must also be be specified: `sasl.oauthbearer.client.id`, `sasl.oauthbearer.client.secret`, and `sasl.oauthbearer.token.endpoint.url`. <br>*Type: enum value*
|
|
100
104
|
sasl.oauthbearer.client.id | * | | | low | Public identifier for the application. Must be unique across all clients that the authorization server handles. Only used when `sasl.oauthbearer.method` is set to "oidc". <br>*Type: string*
|
|
105
|
+
sasl.oauthbearer.client.credentials.client.id | * | | | low | Alias for `sasl.oauthbearer.client.id`: Public identifier for the application. Must be unique across all clients that the authorization server handles. Only used when `sasl.oauthbearer.method` is set to "oidc". <br>*Type: string*
|
|
106
|
+
sasl.oauthbearer.client.credentials.client.secret | * | | | low | Alias for `sasl.oauthbearer.client.secret`: Client secret only known to the application and the authorization server. This should be a sufficiently random string that is not guessable. Only used when `sasl.oauthbearer.method` is set to "oidc". <br>*Type: string*
|
|
101
107
|
sasl.oauthbearer.client.secret | * | | | low | Client secret only known to the application and the authorization server. This should be a sufficiently random string that is not guessable. Only used when `sasl.oauthbearer.method` is set to "oidc". <br>*Type: string*
|
|
102
108
|
sasl.oauthbearer.scope | * | | | low | Client use this to specify the scope of the access request to the broker. Only used when `sasl.oauthbearer.method` is set to "oidc". <br>*Type: string*
|
|
103
109
|
sasl.oauthbearer.extensions | * | | | low | Allow additional information to be provided to the broker. Comma-separated list of key=value pairs. E.g., "supportFeatureX=true,organizationId=sales-emea".Only used when `sasl.oauthbearer.method` is set to "oidc". <br>*Type: string*
|
|
104
110
|
sasl.oauthbearer.token.endpoint.url | * | | | low | OAuth/OIDC issuer token endpoint HTTP(S) URI used to retrieve token. Only used when `sasl.oauthbearer.method` is set to "oidc". <br>*Type: string*
|
|
111
|
+
sasl.oauthbearer.grant.type | * | client_credentials, urn:ietf:params:oauth:grant-type:jwt-bearer | client_credentials | low | OAuth grant type to use when communicating with the identity provider. <br>*Type: enum value*
|
|
112
|
+
sasl.oauthbearer.assertion.algorithm | * | RS256, ES256 | RS256 | low | Algorithm the client should use to sign the assertion sent to the identity provider and in the OAuth alg header in the JWT assertion. <br>*Type: enum value*
|
|
113
|
+
sasl.oauthbearer.assertion.private.key.file | * | | | low | Path to client's private key (PEM) used for authentication when using the JWT assertion. <br>*Type: string*
|
|
114
|
+
sasl.oauthbearer.assertion.private.key.passphrase | * | | | low | Private key passphrase for `sasl.oauthbearer.assertion.private.key.file` or `sasl.oauthbearer.assertion.private.key.pem`. <br>*Type: string*
|
|
115
|
+
sasl.oauthbearer.assertion.private.key.pem | * | | | low | Client's private key (PEM) used for authentication when using the JWT assertion. <br>*Type: string*
|
|
116
|
+
sasl.oauthbearer.assertion.file | * | | | low | Path to the assertion file. Only used when `sasl.oauthbearer.method` is set to "oidc" and JWT assertion is needed. <br>*Type: string*
|
|
117
|
+
sasl.oauthbearer.assertion.claim.aud | * | | | low | JWT audience claim. Only used when `sasl.oauthbearer.method` is set to "oidc" and JWT assertion is needed. <br>*Type: string*
|
|
118
|
+
sasl.oauthbearer.assertion.claim.exp.seconds | * | 1 .. 2147483647 | 300 | low | Assertion expiration time in seconds. Only used when `sasl.oauthbearer.method` is set to "oidc" and JWT assertion is needed. <br>*Type: integer*
|
|
119
|
+
sasl.oauthbearer.assertion.claim.iss | * | | | low | JWT issuer claim. Only used when `sasl.oauthbearer.method` is set to "oidc" and JWT assertion is needed. <br>*Type: string*
|
|
120
|
+
sasl.oauthbearer.assertion.claim.jti.include | * | true, false | false | low | JWT ID claim. When set to `true`, a random UUID is generated. Only used when `sasl.oauthbearer.method` is set to "oidc" and JWT assertion is needed. <br>*Type: boolean*
|
|
121
|
+
sasl.oauthbearer.assertion.claim.nbf.seconds | * | 0 .. 2147483647 | 60 | low | Assertion not before time in seconds. Only used when `sasl.oauthbearer.method` is set to "oidc" and JWT assertion is needed. <br>*Type: integer*
|
|
122
|
+
sasl.oauthbearer.assertion.claim.sub | * | | | low | JWT subject claim. Only used when `sasl.oauthbearer.method` is set to "oidc" and JWT assertion is needed. <br>*Type: string*
|
|
123
|
+
sasl.oauthbearer.assertion.jwt.template.file | * | | | low | Path to the JWT template file. Only used when `sasl.oauthbearer.method` is set to "oidc" and JWT assertion is needed. <br>*Type: string*
|
|
124
|
+
sasl.oauthbearer.metadata.authentication.type | * | none, azure_imds | none | low | Type of metadata-based authentication to use for OAUTHBEARER/OIDC `azure_imds` authenticates using the Azure IMDS endpoint. Sets a default value for `sasl.oauthbearer.token.endpoint.url` if missing. Configuration values specific of chosen authentication type can be passed through `sasl.oauthbearer.config`. <br>*Type: enum value*
|
|
105
125
|
plugin.library.paths | * | | | low | List of plugin libraries to load (; separated). The library search path is platform dependent (see dlopen(3) for Unix and LoadLibrary() for Windows). If no filename extension is specified the platform-specific extension (such as .dll or .so) will be appended automatically. <br>*Type: string*
|
|
106
126
|
interceptors | * | | | low | Interceptors added through rd_kafka_conf_interceptor_add_..() and any configuration handled by interceptors. <br>*Type: see dedicated API*
|
|
107
127
|
group.id | C | | | high | Client group id string. All clients sharing the same group.id belong to the same group. <br>*Type: string*
|
|
108
128
|
group.instance.id | C | | | medium | Enable static group membership. Static group members are able to leave and rejoin a group within the configured `session.timeout.ms` without prompting a group rebalance. This should be used in combination with a larger `session.timeout.ms` to avoid group rebalances caused by transient unavailability (e.g. process restarts). Requires broker version >= 2.3.0. <br>*Type: string*
|
|
109
|
-
partition.assignment.strategy | C | | range,roundrobin | medium | The name of one or more partition assignment strategies. The elected group leader will use a strategy supported by all members of the group to assign partitions to group members. If there is more than one eligible strategy, preference is determined by the order of this list (strategies earlier in the list have higher priority). Cooperative and non-cooperative (eager)
|
|
110
|
-
session.timeout.ms | C | 1 .. 3600000 | 45000 | high | Client group session and failure detection timeout. The consumer sends periodic heartbeats (heartbeat.interval.ms) to indicate its liveness to the broker. If no hearts are received by the broker for a group member within the session timeout, the broker will remove the consumer from the group and trigger a rebalance. The allowed range is configured with the **broker** configuration properties `group.min.session.timeout.ms` and `group.max.session.timeout.ms`. Also see `max.poll.interval.ms`. <br>*Type: integer*
|
|
111
|
-
heartbeat.interval.ms | C | 1 .. 3600000 | 3000 | low | Group session keepalive heartbeat interval. <br>*Type: integer*
|
|
112
|
-
group.protocol.type | C | | consumer | low | Group protocol type for the `classic` group protocol. NOTE: Currently, the only supported group protocol type is `consumer`. <br>*Type: string*
|
|
129
|
+
partition.assignment.strategy | C | | range,roundrobin | medium | The name of one or more partition assignment strategies. The elected group leader will use a strategy supported by all members of the group to assign partitions to group members. If there is more than one eligible strategy, preference is determined by the order of this list (strategies earlier in the list have higher priority). Cooperative and non-cooperative (eager)strategies must not be mixed. `partition.assignment.strategy` is not supported for `group.protocol=consumer`. Use `group.remote.assignor` instead. Available strategies: range, roundrobin, cooperative-sticky. <br>*Type: string*
|
|
130
|
+
session.timeout.ms | C | 1 .. 3600000 | 45000 | high | Client group session and failure detection timeout. The consumer sends periodic heartbeats (heartbeat.interval.ms) to indicate its liveness to the broker. If no hearts are received by the broker for a group member within the session timeout, the broker will remove the consumer from the group and trigger a rebalance. The allowed range is configured with the **broker** configuration properties `group.min.session.timeout.ms` and `group.max.session.timeout.ms`. `session.timeout.ms` is not supported for `group.protocol=consumer`. It is set with the broker configuration property `group.consumer.session.timeout.ms` by default or can be configured through the AdminClient IncrementalAlterConfigs API. The allowed range is configured with the broker configuration properties `group.consumer.min.session.timeout.ms` and `group.consumer.max.session.timeout.ms`. Also see `max.poll.interval.ms`. <br>*Type: integer*
|
|
131
|
+
heartbeat.interval.ms | C | 1 .. 3600000 | 3000 | low | Group session keepalive heartbeat interval. `heartbeat.interval.ms` is not supported for `group.protocol=consumer`. It is set with the broker configuration property `group.consumer.heartbeat.interval.ms` by default or can be configured through the AdminClient IncrementalAlterConfigs API. The allowed range is configured with the broker configuration properties `group.consumer.min.heartbeat.interval.ms` and `group.consumer.max.heartbeat.interval.ms`. <br>*Type: integer*
|
|
132
|
+
group.protocol.type | C | | consumer | low | Group protocol type for the `classic` group protocol. NOTE: Currently, the only supported group protocol type is `consumer`. `group.protocol.type` is not supported for `group.protocol=consumer` <br>*Type: string*
|
|
113
133
|
group.protocol | C | classic, consumer | classic | high | Group protocol to use. Use `classic` for the original protocol and `consumer` for the new protocol introduced in KIP-848. Available protocols: classic or consumer. Default is `classic`, but will change to `consumer` in next releases. <br>*Type: enum value*
|
|
114
134
|
group.remote.assignor | C | | | medium | Server side assignor to use. Keep it null to make server select a suitable assignor for the group. Available assignors: uniform or range. Default is null <br>*Type: string*
|
|
115
135
|
coordinator.query.interval.ms | C | 1 .. 3600000 | 600000 | low | How often to query for the current client group coordinator. If the currently assigned coordinator is down the configured query interval will be divided by ten to more quickly recover in case of coordinator reassignment. <br>*Type: integer*
|