@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
|
@@ -290,17 +290,29 @@ struct rd_kafka_s {
|
|
|
290
290
|
TAILQ_HEAD(, rd_kafka_broker_s) rk_brokers;
|
|
291
291
|
rd_list_t rk_broker_by_id; /* Fast id lookups. */
|
|
292
292
|
rd_atomic32_t rk_broker_cnt;
|
|
293
|
-
|
|
293
|
+
/** Logical brokers count.
|
|
294
|
+
* Used for calculating ERR__ALL_BROKERS_DOWN. */
|
|
295
|
+
rd_atomic32_t rk_logical_broker_cnt;
|
|
296
|
+
/** Number of configured or learned brokers in state >= UP */
|
|
294
297
|
rd_atomic32_t rk_broker_up_cnt;
|
|
295
|
-
|
|
296
|
-
*
|
|
297
|
-
|
|
298
|
-
/**< Number of brokers that are down, only includes brokers
|
|
299
|
-
* that have had at least one connection attempt. */
|
|
298
|
+
/** Number of brokers that are down, only includes brokers
|
|
299
|
+
* that have had at least one connection attempt
|
|
300
|
+
* and are configured or learned. */
|
|
300
301
|
rd_atomic32_t rk_broker_down_cnt;
|
|
301
|
-
|
|
302
|
-
*
|
|
303
|
-
|
|
302
|
+
/** Set to 1 when there's a re-bootstrap in progress.
|
|
303
|
+
* Set to 0 when the re-bootstrap is done.
|
|
304
|
+
* Accessed from the main thread and the broker threads. */
|
|
305
|
+
rd_atomic32_t rk_rebootstrap_in_progress;
|
|
306
|
+
|
|
307
|
+
/**< Additional bootstrap servers list.
|
|
308
|
+
* contains all brokers added through rd_kafka_brokers_add().
|
|
309
|
+
* Doesn't contain the initially configured bootstrap brokers. */
|
|
310
|
+
rd_list_t additional_brokerlists;
|
|
311
|
+
|
|
312
|
+
/** Decommissioned threads to await */
|
|
313
|
+
rd_list_t wait_decommissioned_thrds;
|
|
314
|
+
/** Decommissioned brokers to await */
|
|
315
|
+
rd_list_t wait_decommissioned_brokers;
|
|
304
316
|
|
|
305
317
|
mtx_t rk_internal_rkb_lock;
|
|
306
318
|
rd_kafka_broker_t *rk_internal_rkb;
|
|
@@ -384,16 +396,7 @@ struct rd_kafka_s {
|
|
|
384
396
|
* to avoid reaching
|
|
385
397
|
* max.poll.interval.ms. during that time
|
|
386
398
|
* frame. Only relevant for consumer. */
|
|
387
|
-
|
|
388
|
-
* consumer_poll() call start
|
|
389
|
-
* Only relevant for consumer.
|
|
390
|
-
* Not an atomic as Kafka consumer
|
|
391
|
-
* isn't thread safe. */
|
|
392
|
-
rd_ts_t rk_ts_last_poll_end; /**< Timestamp of last application
|
|
393
|
-
* consumer_poll() call end
|
|
394
|
-
* Only relevant for consumer.
|
|
395
|
-
* Not an atomic as Kafka consumer
|
|
396
|
-
* isn't thread safe. */
|
|
399
|
+
|
|
397
400
|
/* First fatal error. */
|
|
398
401
|
struct {
|
|
399
402
|
rd_atomic32_t err; /**< rd_kafka_resp_err_t */
|
|
@@ -409,18 +412,20 @@ struct rd_kafka_s {
|
|
|
409
412
|
rd_ts_t rk_ts_metadata; /* Timestamp of most recent
|
|
410
413
|
* metadata. */
|
|
411
414
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
+
rd_ts_t rk_ts_full_metadata; /* Timestamp of most
|
|
416
|
+
* recent full
|
|
417
|
+
* metadata */
|
|
415
418
|
struct rd_kafka_metadata_cache rk_metadata_cache; /* Metadata cache */
|
|
416
419
|
|
|
417
420
|
char *rk_clusterid; /* ClusterId from metadata */
|
|
418
421
|
int32_t rk_controllerid; /* ControllerId from metadata */
|
|
419
422
|
|
|
420
423
|
/**< Producer: Delivery report mode */
|
|
421
|
-
enum {
|
|
422
|
-
|
|
423
|
-
|
|
424
|
+
enum {
|
|
425
|
+
RD_KAFKA_DR_MODE_NONE, /**< No delivery reports */
|
|
426
|
+
RD_KAFKA_DR_MODE_CB, /**< Delivery reports through callback */
|
|
427
|
+
RD_KAFKA_DR_MODE_EVENT, /**< Delivery reports through event
|
|
428
|
+
API*/
|
|
424
429
|
} rk_drmode;
|
|
425
430
|
|
|
426
431
|
/* Simple consumer count:
|
|
@@ -608,6 +613,16 @@ struct rd_kafka_s {
|
|
|
608
613
|
} rk_curr_msgs;
|
|
609
614
|
|
|
610
615
|
rd_kafka_timers_t rk_timers;
|
|
616
|
+
|
|
617
|
+
/** Metadata refresh timer */
|
|
618
|
+
rd_kafka_timer_t metadata_refresh_tmr;
|
|
619
|
+
/** 1s interval timer */
|
|
620
|
+
rd_kafka_timer_t one_s_tmr;
|
|
621
|
+
/** Rebootstrap timer.
|
|
622
|
+
* Will add bootstrap brokers again
|
|
623
|
+
* when it's fired. */
|
|
624
|
+
rd_kafka_timer_t rebootstrap_tmr;
|
|
625
|
+
|
|
611
626
|
thrd_t rk_thread;
|
|
612
627
|
|
|
613
628
|
int rk_initialized; /**< Will be > 0 when the rd_kafka_t
|
|
@@ -652,6 +667,12 @@ struct rd_kafka_s {
|
|
|
652
667
|
* Use 10 < reconnect.backoff.jitter.ms / 2 < 1000.
|
|
653
668
|
*/
|
|
654
669
|
rd_interval_t sparse_connect_random;
|
|
670
|
+
|
|
671
|
+
/** Sparse connection timer: fires after remaining time of
|
|
672
|
+
* `sparse_connect_random` interval + 1ms.
|
|
673
|
+
*/
|
|
674
|
+
rd_kafka_timer_t sparse_connect_random_tmr;
|
|
675
|
+
|
|
655
676
|
/**< Lock for sparse_connect_random */
|
|
656
677
|
mtx_t sparse_connect_lock;
|
|
657
678
|
|
|
@@ -877,15 +898,13 @@ rd_kafka_curr_msgs_wait_zero(rd_kafka_t *rk,
|
|
|
877
898
|
int timeout_ms,
|
|
878
899
|
unsigned int *curr_msgsp) {
|
|
879
900
|
unsigned int cnt;
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
rd_timeout_init_timespec(&tspec, timeout_ms);
|
|
901
|
+
rd_ts_t abs_timeout = rd_timeout_init(timeout_ms);
|
|
883
902
|
|
|
884
903
|
mtx_lock(&rk->rk_curr_msgs.lock);
|
|
885
904
|
while ((cnt = rk->rk_curr_msgs.cnt) > 0) {
|
|
886
905
|
if (cnd_timedwait_abs(&rk->rk_curr_msgs.cnd,
|
|
887
906
|
&rk->rk_curr_msgs.lock,
|
|
888
|
-
|
|
907
|
+
abs_timeout) == thrd_timedout)
|
|
889
908
|
break;
|
|
890
909
|
}
|
|
891
910
|
mtx_unlock(&rk->rk_curr_msgs.lock);
|
|
@@ -894,6 +913,9 @@ rd_kafka_curr_msgs_wait_zero(rd_kafka_t *rk,
|
|
|
894
913
|
return cnt == 0;
|
|
895
914
|
}
|
|
896
915
|
|
|
916
|
+
void rd_kafka_decommissioned_broker_thread_join(rd_kafka_t *rk,
|
|
917
|
+
void *rkb_decommissioned);
|
|
918
|
+
|
|
897
919
|
void rd_kafka_destroy_final(rd_kafka_t *rk);
|
|
898
920
|
|
|
899
921
|
void rd_kafka_global_init(void);
|
|
@@ -1070,6 +1092,14 @@ int rd_kafka_set_fatal_error0(rd_kafka_t *rk,
|
|
|
1070
1092
|
|
|
1071
1093
|
rd_kafka_error_t *rd_kafka_get_fatal_error(rd_kafka_t *rk);
|
|
1072
1094
|
|
|
1095
|
+
#define rd_kafka_producer_can_have_fatal_errors(rk) \
|
|
1096
|
+
(rk->rk_type == RD_KAFKA_PRODUCER && rk->rk_conf.eos.idempotence)
|
|
1097
|
+
|
|
1098
|
+
#define rd_kafka_consumer_can_have_fatal_errors(rk) \
|
|
1099
|
+
(rk->rk_type == RD_KAFKA_CONSUMER && \
|
|
1100
|
+
(rk->rk_conf.group_instance_id || \
|
|
1101
|
+
rk->rk_conf.group_protocol == RD_KAFKA_GROUP_PROTOCOL_CONSUMER))
|
|
1102
|
+
|
|
1073
1103
|
static RD_INLINE RD_UNUSED rd_kafka_resp_err_t
|
|
1074
1104
|
rd_kafka_fatal_error_code(rd_kafka_t *rk) {
|
|
1075
1105
|
/* This is an optimization to avoid an atomic read which are costly
|
|
@@ -1079,10 +1109,8 @@ rd_kafka_fatal_error_code(rd_kafka_t *rk) {
|
|
|
1079
1109
|
* 2) static consumers (group.instance.id)
|
|
1080
1110
|
* 3) Group using consumer protocol (Introduced in KIP-848). See exact
|
|
1081
1111
|
* errors in rd_kafka_cgrp_handle_ConsumerGroupHeartbeat() */
|
|
1082
|
-
if ((rk
|
|
1083
|
-
(rk
|
|
1084
|
-
(rk->rk_conf.group_instance_id ||
|
|
1085
|
-
rk->rk_conf.group_protocol == RD_KAFKA_GROUP_PROTOCOL_CONSUMER)))
|
|
1112
|
+
if (rd_kafka_producer_can_have_fatal_errors(rk) ||
|
|
1113
|
+
rd_kafka_consumer_can_have_fatal_errors(rk))
|
|
1086
1114
|
return rd_atomic32_get(&rk->rk_fatal.err);
|
|
1087
1115
|
|
|
1088
1116
|
return RD_KAFKA_RESP_ERR_NO_ERROR;
|
|
@@ -1152,8 +1180,10 @@ static RD_INLINE RD_UNUSED int rd_kafka_max_poll_exceeded(rd_kafka_t *rk) {
|
|
|
1152
1180
|
* @locality any
|
|
1153
1181
|
* @locks none
|
|
1154
1182
|
*/
|
|
1155
|
-
static RD_INLINE RD_UNUSED void
|
|
1156
|
-
|
|
1183
|
+
static RD_INLINE RD_UNUSED void rd_kafka_app_poll_start(rd_kafka_t *rk,
|
|
1184
|
+
rd_kafka_q_t *rkq,
|
|
1185
|
+
rd_ts_t now,
|
|
1186
|
+
rd_bool_t is_blocking) {
|
|
1157
1187
|
if (rk->rk_type != RD_KAFKA_CONSUMER)
|
|
1158
1188
|
return;
|
|
1159
1189
|
|
|
@@ -1161,20 +1191,20 @@ rd_kafka_app_poll_start(rd_kafka_t *rk, rd_ts_t now, rd_bool_t is_blocking) {
|
|
|
1161
1191
|
now = rd_clock();
|
|
1162
1192
|
if (is_blocking)
|
|
1163
1193
|
rd_atomic64_set(&rk->rk_ts_last_poll, INT64_MAX);
|
|
1164
|
-
if (
|
|
1194
|
+
if (rkq->rkq_ts_last_poll_end) {
|
|
1165
1195
|
int64_t poll_idle_ratio = 0;
|
|
1166
|
-
rd_ts_t poll_interval = now -
|
|
1196
|
+
rd_ts_t poll_interval = now - rkq->rkq_ts_last_poll_start;
|
|
1167
1197
|
if (poll_interval) {
|
|
1168
|
-
rd_ts_t idle_interval =
|
|
1169
|
-
|
|
1198
|
+
rd_ts_t idle_interval = rkq->rkq_ts_last_poll_end -
|
|
1199
|
+
rkq->rkq_ts_last_poll_start;
|
|
1170
1200
|
poll_idle_ratio =
|
|
1171
1201
|
idle_interval * 1000000 / poll_interval;
|
|
1172
1202
|
}
|
|
1173
1203
|
rd_avg_add(
|
|
1174
1204
|
&rk->rk_telemetry.rd_avg_current.rk_avg_poll_idle_ratio,
|
|
1175
1205
|
poll_idle_ratio);
|
|
1176
|
-
|
|
1177
|
-
|
|
1206
|
+
rkq->rkq_ts_last_poll_start = now;
|
|
1207
|
+
rkq->rkq_ts_last_poll_end = 0;
|
|
1178
1208
|
}
|
|
1179
1209
|
}
|
|
1180
1210
|
|
|
@@ -1186,7 +1216,8 @@ rd_kafka_app_poll_start(rd_kafka_t *rk, rd_ts_t now, rd_bool_t is_blocking) {
|
|
|
1186
1216
|
* @locality any
|
|
1187
1217
|
* @locks none
|
|
1188
1218
|
*/
|
|
1189
|
-
static RD_INLINE RD_UNUSED void rd_kafka_app_polled(rd_kafka_t *rk
|
|
1219
|
+
static RD_INLINE RD_UNUSED void rd_kafka_app_polled(rd_kafka_t *rk,
|
|
1220
|
+
rd_kafka_q_t *rkq) {
|
|
1190
1221
|
if (rk->rk_type == RD_KAFKA_CONSUMER) {
|
|
1191
1222
|
rd_ts_t now = rd_clock();
|
|
1192
1223
|
rd_atomic64_set(&rk->rk_ts_last_poll, now);
|
|
@@ -1199,10 +1230,10 @@ static RD_INLINE RD_UNUSED void rd_kafka_app_polled(rd_kafka_t *rk) {
|
|
|
1199
1230
|
rk->rk_cgrp,
|
|
1200
1231
|
"app polled after poll interval exceeded");
|
|
1201
1232
|
}
|
|
1202
|
-
if (!
|
|
1203
|
-
|
|
1204
|
-
rd_dassert(
|
|
1205
|
-
|
|
1233
|
+
if (!rkq->rkq_ts_last_poll_end)
|
|
1234
|
+
rkq->rkq_ts_last_poll_end = now;
|
|
1235
|
+
rd_dassert(rkq->rkq_ts_last_poll_end >=
|
|
1236
|
+
rkq->rkq_ts_last_poll_start);
|
|
1206
1237
|
}
|
|
1207
1238
|
}
|
|
1208
1239
|
|
|
@@ -1218,5 +1249,12 @@ rd_kafka_resp_err_t rd_kafka_background_thread_create(rd_kafka_t *rk,
|
|
|
1218
1249
|
char *errstr,
|
|
1219
1250
|
size_t errstr_size);
|
|
1220
1251
|
|
|
1252
|
+
void rd_kafka_rebootstrap(rd_kafka_t *rk);
|
|
1253
|
+
|
|
1254
|
+
void rd_kafka_rebootstrap_tmr_start_maybe(rd_kafka_t *rk);
|
|
1255
|
+
|
|
1256
|
+
int rd_kafka_rebootstrap_tmr_stop(rd_kafka_t *rk);
|
|
1257
|
+
|
|
1258
|
+
void rd_kafka_reset_any_broker_down_reported(rd_kafka_t *rk);
|
|
1221
1259
|
|
|
1222
1260
|
#endif /* _RDKAFKA_INT_H_ */
|