@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
|
@@ -51,7 +51,6 @@ typedef enum {
|
|
|
51
51
|
/* Any state >= STATE_UP means the Kafka protocol layer
|
|
52
52
|
* is operational (to some degree). */
|
|
53
53
|
RD_KAFKA_BROKER_STATE_UP,
|
|
54
|
-
RD_KAFKA_BROKER_STATE_UPDATE,
|
|
55
54
|
RD_KAFKA_BROKER_STATE_APIVERSION_QUERY,
|
|
56
55
|
RD_KAFKA_BROKER_STATE_AUTH_HANDSHAKE,
|
|
57
56
|
RD_KAFKA_BROKER_STATE_AUTH_REQ,
|
|
@@ -82,8 +81,7 @@ typedef struct rd_kafka_broker_monitor_s {
|
|
|
82
81
|
struct rd_kafka_broker_s { /* rd_kafka_broker_t */
|
|
83
82
|
TAILQ_ENTRY(rd_kafka_broker_s) rkb_link;
|
|
84
83
|
|
|
85
|
-
int32_t rkb_nodeid; /**< Broker Node Id.
|
|
86
|
-
* @locks rkb_lock */
|
|
84
|
+
int32_t rkb_nodeid; /**< Broker Node Id, read only. */
|
|
87
85
|
#define RD_KAFKA_NODEID_UA -1
|
|
88
86
|
|
|
89
87
|
rd_sockaddr_list_t *rkb_rsal;
|
|
@@ -189,8 +187,27 @@ struct rd_kafka_broker_s { /* rd_kafka_broker_t */
|
|
|
189
187
|
rd_atomic64_t reqtype[RD_KAFKAP__NUM]; /**< Per request-type
|
|
190
188
|
* counter */
|
|
191
189
|
|
|
192
|
-
rd_atomic64_t ts_send;
|
|
193
|
-
rd_atomic64_t ts_recv;
|
|
190
|
+
rd_atomic64_t ts_send; /**< Timestamp of last send */
|
|
191
|
+
rd_atomic64_t ts_recv; /**< Timestamp of last receive */
|
|
192
|
+
rd_bool_t skip_broker_down; /**< Avoid reporting the
|
|
193
|
+
* broker down on next
|
|
194
|
+
* state change.
|
|
195
|
+
* Useful for a planned
|
|
196
|
+
* disconnection to avoid
|
|
197
|
+
* reaching the all
|
|
198
|
+
* brokers down state. */
|
|
199
|
+
int connections_max_idle_ms; /**< Maximum idle time
|
|
200
|
+
* for this broker connections.
|
|
201
|
+
* jitter is different for
|
|
202
|
+
* each broker to avoid the
|
|
203
|
+
* ALL_BROKERS_DOWN error.
|
|
204
|
+
* Initial value is `-1` as
|
|
205
|
+
* `connections.max.idle.ms=0`
|
|
206
|
+
* means disabled, but must
|
|
207
|
+
* never be used when
|
|
208
|
+
* `connections.max.idle.ms=0`
|
|
209
|
+
* for the same reason
|
|
210
|
+
* (an assert is present). */
|
|
194
211
|
} rkb_c;
|
|
195
212
|
|
|
196
213
|
struct {
|
|
@@ -333,7 +350,9 @@ struct rd_kafka_broker_s { /* rd_kafka_broker_t */
|
|
|
333
350
|
|
|
334
351
|
rd_kafka_secproto_t rkb_proto;
|
|
335
352
|
|
|
336
|
-
|
|
353
|
+
/** Down event was reported for this broker
|
|
354
|
+
* after last connection to any broker. */
|
|
355
|
+
rd_atomic32_t rkb_down_reported;
|
|
337
356
|
#if WITH_SASL_CYRUS
|
|
338
357
|
rd_kafka_timer_t rkb_sasl_kinit_refresh_tmr;
|
|
339
358
|
#endif
|
|
@@ -365,6 +384,9 @@ struct rd_kafka_broker_s { /* rd_kafka_broker_t */
|
|
|
365
384
|
|
|
366
385
|
|
|
367
386
|
rd_kafka_timer_t rkb_sasl_reauth_tmr;
|
|
387
|
+
|
|
388
|
+
/** > 0 if this broker thread is terminating */
|
|
389
|
+
rd_atomic32_t termination_in_progress;
|
|
368
390
|
};
|
|
369
391
|
|
|
370
392
|
#define rd_kafka_broker_keep(rkb) rd_refcnt_add(&(rkb)->rkb_refcnt)
|
|
@@ -392,12 +414,28 @@ rd_kafka_broker_get_state(rd_kafka_broker_t *rkb) {
|
|
|
392
414
|
|
|
393
415
|
|
|
394
416
|
/**
|
|
395
|
-
* @returns true if the broker state is UP
|
|
417
|
+
* @returns true if the broker state is UP
|
|
396
418
|
*/
|
|
397
|
-
#define rd_kafka_broker_state_is_up(state)
|
|
398
|
-
((state) == RD_KAFKA_BROKER_STATE_UP || \
|
|
399
|
-
(state) == RD_KAFKA_BROKER_STATE_UPDATE)
|
|
419
|
+
#define rd_kafka_broker_state_is_up(state) ((state) == RD_KAFKA_BROKER_STATE_UP)
|
|
400
420
|
|
|
421
|
+
/**
|
|
422
|
+
* @returns true if the broker state is DOWN
|
|
423
|
+
*/
|
|
424
|
+
#define rd_kafka_broker_state_is_down(state) \
|
|
425
|
+
((state) == RD_KAFKA_BROKER_STATE_DOWN)
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* @returns true if the error is a broker destroy error, because of
|
|
429
|
+
* termination or because of decommissioning.
|
|
430
|
+
*/
|
|
431
|
+
#define rd_kafka_broker_is_any_err_destroy(err) \
|
|
432
|
+
((err) == RD_KAFKA_RESP_ERR__DESTROY || \
|
|
433
|
+
(err) == RD_KAFKA_RESP_ERR__DESTROY_BROKER)
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
#define rd_kafka_broker_or_instance_terminating(rkb) \
|
|
437
|
+
(rd_kafka_broker_termination_in_progress(rkb) || \
|
|
438
|
+
rd_kafka_terminating((rkb)->rkb_rk))
|
|
401
439
|
|
|
402
440
|
/**
|
|
403
441
|
* @returns true if the broker connection is up, else false.
|
|
@@ -410,6 +448,14 @@ rd_kafka_broker_is_up(rd_kafka_broker_t *rkb) {
|
|
|
410
448
|
return rd_kafka_broker_state_is_up(state);
|
|
411
449
|
}
|
|
412
450
|
|
|
451
|
+
/**
|
|
452
|
+
* @returns true if the broker needs a persistent connection
|
|
453
|
+
* @locality any
|
|
454
|
+
*/
|
|
455
|
+
static RD_UNUSED RD_INLINE rd_bool_t
|
|
456
|
+
rd_kafka_broker_termination_in_progress(rd_kafka_broker_t *rkb) {
|
|
457
|
+
return rd_atomic32_get(&rkb->termination_in_progress) > 0;
|
|
458
|
+
}
|
|
413
459
|
|
|
414
460
|
/**
|
|
415
461
|
* @brief Broker comparator
|
|
@@ -452,6 +498,14 @@ int16_t rd_kafka_broker_ApiVersion_supported0(rd_kafka_broker_t *rkb,
|
|
|
452
498
|
int *featuresp,
|
|
453
499
|
rd_bool_t do_lock);
|
|
454
500
|
|
|
501
|
+
rd_bool_t rd_kafka_broker_ApiVersion_at_least(rd_kafka_broker_t *rkb,
|
|
502
|
+
int16_t ApiKey,
|
|
503
|
+
int16_t minver);
|
|
504
|
+
|
|
505
|
+
rd_bool_t rd_kafka_broker_ApiVersion_at_least_no_lock(rd_kafka_broker_t *rkb,
|
|
506
|
+
int16_t ApiKey,
|
|
507
|
+
int16_t minver);
|
|
508
|
+
|
|
455
509
|
rd_kafka_broker_t *rd_kafka_broker_find_by_nodeid0_fl(const char *func,
|
|
456
510
|
int line,
|
|
457
511
|
rd_kafka_t *rk,
|
|
@@ -681,6 +735,10 @@ void rd_kafka_broker_start_reauth_timer(rd_kafka_broker_t *rkb,
|
|
|
681
735
|
|
|
682
736
|
void rd_kafka_broker_start_reauth_cb(rd_kafka_timers_t *rkts, void *rkb);
|
|
683
737
|
|
|
738
|
+
void rd_kafka_broker_decommission(rd_kafka_t *rk,
|
|
739
|
+
rd_kafka_broker_t *rkb,
|
|
740
|
+
rd_list_t *wait_thrds);
|
|
741
|
+
|
|
684
742
|
int unittest_broker(void);
|
|
685
743
|
|
|
686
744
|
#endif /* _RDKAFKA_BROKER_H_ */
|
|
@@ -42,9 +42,6 @@ void rd_kafka_buf_destroy_final(rd_kafka_buf_t *rkbuf) {
|
|
|
42
42
|
rd_list_destroy(rkbuf->rkbuf_u.Metadata.topic_ids);
|
|
43
43
|
if (rkbuf->rkbuf_u.Metadata.reason)
|
|
44
44
|
rd_free(rkbuf->rkbuf_u.Metadata.reason);
|
|
45
|
-
if (rkbuf->rkbuf_u.Metadata.rko)
|
|
46
|
-
rd_kafka_op_reply(rkbuf->rkbuf_u.Metadata.rko,
|
|
47
|
-
RD_KAFKA_RESP_ERR__DESTROY);
|
|
48
45
|
if (rkbuf->rkbuf_u.Metadata.decr) {
|
|
49
46
|
/* Decrease metadata cache's full_.._sent state. */
|
|
50
47
|
mtx_lock(rkbuf->rkbuf_u.Metadata.decr_lock);
|
|
@@ -244,6 +241,12 @@ void rd_kafka_bufq_init(rd_kafka_bufq_t *rkbufq) {
|
|
|
244
241
|
rd_atomic32_init(&rkbufq->rkbq_msg_cnt, 0);
|
|
245
242
|
}
|
|
246
243
|
|
|
244
|
+
static void rd_kafka_bufq_reset(rd_kafka_bufq_t *rkbufq) {
|
|
245
|
+
TAILQ_INIT(&rkbufq->rkbq_bufs);
|
|
246
|
+
rd_atomic32_set(&rkbufq->rkbq_cnt, 0);
|
|
247
|
+
rd_atomic32_set(&rkbufq->rkbq_msg_cnt, 0);
|
|
248
|
+
}
|
|
249
|
+
|
|
247
250
|
/**
|
|
248
251
|
* Concat all buffers from 'src' to tail of 'dst'
|
|
249
252
|
*/
|
|
@@ -252,7 +255,7 @@ void rd_kafka_bufq_concat(rd_kafka_bufq_t *dst, rd_kafka_bufq_t *src) {
|
|
|
252
255
|
(void)rd_atomic32_add(&dst->rkbq_cnt, rd_atomic32_get(&src->rkbq_cnt));
|
|
253
256
|
(void)rd_atomic32_add(&dst->rkbq_msg_cnt,
|
|
254
257
|
rd_atomic32_get(&src->rkbq_msg_cnt));
|
|
255
|
-
|
|
258
|
+
rd_kafka_bufq_reset(src);
|
|
256
259
|
}
|
|
257
260
|
|
|
258
261
|
/**
|
|
@@ -393,7 +396,7 @@ int rd_kafka_buf_retry(rd_kafka_broker_t *rkb, rd_kafka_buf_t *rkbuf) {
|
|
|
393
396
|
rd_assert(rd_buf_len(&rkbuf->rkbuf_buf) > 0);
|
|
394
397
|
|
|
395
398
|
if (unlikely(!rkb || rkb->rkb_source == RD_KAFKA_INTERNAL ||
|
|
396
|
-
|
|
399
|
+
rd_kafka_broker_or_instance_terminating(rkb) ||
|
|
397
400
|
rkbuf->rkbuf_retries + incr_retry >
|
|
398
401
|
rkbuf->rkbuf_max_retries))
|
|
399
402
|
return 0;
|
|
@@ -379,11 +379,12 @@ struct rd_kafka_buf_s { /* rd_kafka_buf_t */
|
|
|
379
379
|
rd_list_t *
|
|
380
380
|
topic_ids; /* Requested topic ids rd_kafka_Uuid_t */
|
|
381
381
|
char *reason; /* Textual reason */
|
|
382
|
-
rd_kafka_op_t *rko; /* Originating rko with replyq
|
|
383
|
-
* (if any) */
|
|
384
382
|
rd_bool_t all_topics; /**< Full/All topics requested */
|
|
385
383
|
rd_bool_t cgrp_update; /**< Update cgrp with topic
|
|
386
384
|
* status from response. */
|
|
385
|
+
int32_t cgrp_subscription_version;
|
|
386
|
+
/**< Consumer group subscription version, to
|
|
387
|
+
* check before updating cgrp state. */
|
|
387
388
|
rd_bool_t force_racks; /**< Force the returned metadata
|
|
388
389
|
* to contain partition to
|
|
389
390
|
* rack mapping. */
|
|
@@ -524,7 +525,7 @@ struct rd_kafka_buf_s { /* rd_kafka_buf_t */
|
|
|
524
525
|
#define rd_kafka_buf_skip_to(rkbuf, pos) \
|
|
525
526
|
do { \
|
|
526
527
|
size_t __len1 = \
|
|
527
|
-
(size_t)(pos)-rd_slice_offset(&(rkbuf)->rkbuf_reader);
|
|
528
|
+
(size_t)(pos) - rd_slice_offset(&(rkbuf)->rkbuf_reader); \
|
|
528
529
|
if (__len1 && \
|
|
529
530
|
!rd_slice_read(&(rkbuf)->rkbuf_reader, NULL, __len1)) \
|
|
530
531
|
rd_kafka_buf_check_len(rkbuf, __len1); \
|
|
@@ -78,6 +78,8 @@ static void rd_kafka_cert_destroy(rd_kafka_cert_t *cert) {
|
|
|
78
78
|
|
|
79
79
|
if (cert->x509)
|
|
80
80
|
X509_free(cert->x509);
|
|
81
|
+
if (cert->chain)
|
|
82
|
+
sk_X509_pop_free(cert->chain, X509_free);
|
|
81
83
|
if (cert->pkey)
|
|
82
84
|
EVP_PKEY_free(cert->pkey);
|
|
83
85
|
if (cert->store)
|
|
@@ -314,10 +316,11 @@ static rd_kafka_cert_t *rd_kafka_cert_new(const rd_kafka_conf_t *conf,
|
|
|
314
316
|
switch (encoding) {
|
|
315
317
|
case RD_KAFKA_CERT_ENC_PKCS12: {
|
|
316
318
|
EVP_PKEY *ign_pkey;
|
|
319
|
+
STACK_OF(X509) *ca = NULL;
|
|
317
320
|
|
|
318
321
|
action = "parse PKCS#12";
|
|
319
322
|
if (!PKCS12_parse(p12, conf->ssl.key_password,
|
|
320
|
-
&ign_pkey, &cert->x509,
|
|
323
|
+
&ign_pkey, &cert->x509, &ca))
|
|
321
324
|
goto fail;
|
|
322
325
|
|
|
323
326
|
EVP_PKEY_free(ign_pkey);
|
|
@@ -325,6 +328,13 @@ static rd_kafka_cert_t *rd_kafka_cert_new(const rd_kafka_conf_t *conf,
|
|
|
325
328
|
action = "retrieve public key";
|
|
326
329
|
if (!cert->x509)
|
|
327
330
|
goto fail;
|
|
331
|
+
|
|
332
|
+
if (ca) {
|
|
333
|
+
if (sk_X509_num(ca) > 0)
|
|
334
|
+
cert->chain = ca;
|
|
335
|
+
else
|
|
336
|
+
sk_X509_pop_free(ca, X509_free);
|
|
337
|
+
}
|
|
328
338
|
} break;
|
|
329
339
|
|
|
330
340
|
case RD_KAFKA_CERT_ENC_DER:
|
|
@@ -341,6 +351,20 @@ static rd_kafka_cert_t *rd_kafka_cert_new(const rd_kafka_conf_t *conf,
|
|
|
341
351
|
(void *)conf);
|
|
342
352
|
if (!cert->x509)
|
|
343
353
|
goto fail;
|
|
354
|
+
|
|
355
|
+
cert->chain = sk_X509_new_null();
|
|
356
|
+
if (rd_kafka_ssl_read_cert_chain_from_BIO(
|
|
357
|
+
bio, cert->chain, rd_kafka_conf_ssl_passwd_cb,
|
|
358
|
+
(void *)conf) != 0) {
|
|
359
|
+
sk_X509_pop_free(cert->chain, X509_free);
|
|
360
|
+
cert->chain = NULL;
|
|
361
|
+
goto fail;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
if (sk_X509_num(cert->chain) == 0) {
|
|
365
|
+
sk_X509_pop_free(cert->chain, X509_free);
|
|
366
|
+
cert->chain = NULL;
|
|
367
|
+
}
|
|
344
368
|
break;
|
|
345
369
|
|
|
346
370
|
default:
|
|
@@ -43,9 +43,10 @@ typedef struct rd_kafka_cert_s {
|
|
|
43
43
|
rd_kafka_cert_enc_t encoding;
|
|
44
44
|
rd_refcnt_t refcnt;
|
|
45
45
|
#if WITH_SSL
|
|
46
|
-
X509 *x509;
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
X509 *x509; /**< Certificate (public key) */
|
|
47
|
+
STACK_OF(X509) * chain; /**< Certificate chain (public key) */
|
|
48
|
+
EVP_PKEY *pkey; /**< Private key */
|
|
49
|
+
X509_STORE *store; /**< CA trusted certificates */
|
|
49
50
|
#endif
|
|
50
51
|
} rd_kafka_cert_t;
|
|
51
52
|
|