@point3/node-rdkafka 3.6.0-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/LICENSE.txt +20 -0
- package/README.md +636 -0
- package/binding.gyp +154 -0
- package/deps/librdkafka/.clang-format +136 -0
- package/deps/librdkafka/.clang-format-cpp +103 -0
- package/deps/librdkafka/.dir-locals.el +10 -0
- package/deps/librdkafka/.formatignore +33 -0
- package/deps/librdkafka/.gdbmacros +19 -0
- package/deps/librdkafka/.github/CODEOWNERS +1 -0
- package/deps/librdkafka/.github/ISSUE_TEMPLATE +34 -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 +378 -0
- package/deps/librdkafka/.semaphore/verify-linux-packages.yml +41 -0
- package/deps/librdkafka/CHANGELOG.md +2208 -0
- package/deps/librdkafka/CMakeLists.txt +291 -0
- package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
- package/deps/librdkafka/CONFIGURATION.md +209 -0
- package/deps/librdkafka/CONTRIBUTING.md +431 -0
- package/deps/librdkafka/Doxyfile +2375 -0
- package/deps/librdkafka/INTRODUCTION.md +2481 -0
- package/deps/librdkafka/LICENSE +26 -0
- package/deps/librdkafka/LICENSE.cjson +22 -0
- package/deps/librdkafka/LICENSE.crc32c +28 -0
- package/deps/librdkafka/LICENSE.fnv1a +18 -0
- package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
- package/deps/librdkafka/LICENSE.lz4 +26 -0
- package/deps/librdkafka/LICENSE.murmur2 +25 -0
- package/deps/librdkafka/LICENSE.nanopb +22 -0
- package/deps/librdkafka/LICENSE.opentelemetry +203 -0
- package/deps/librdkafka/LICENSE.pycrc +23 -0
- package/deps/librdkafka/LICENSE.queue +31 -0
- package/deps/librdkafka/LICENSE.regexp +5 -0
- package/deps/librdkafka/LICENSE.snappy +36 -0
- package/deps/librdkafka/LICENSE.tinycthread +26 -0
- package/deps/librdkafka/LICENSE.wingetopt +49 -0
- package/deps/librdkafka/LICENSES.txt +625 -0
- package/deps/librdkafka/Makefile +125 -0
- package/deps/librdkafka/README.md +199 -0
- package/deps/librdkafka/README.win32 +26 -0
- package/deps/librdkafka/STATISTICS.md +624 -0
- package/deps/librdkafka/configure +214 -0
- package/deps/librdkafka/configure.self +331 -0
- package/deps/librdkafka/debian/changelog +111 -0
- package/deps/librdkafka/debian/compat +1 -0
- package/deps/librdkafka/debian/control +71 -0
- package/deps/librdkafka/debian/copyright +99 -0
- package/deps/librdkafka/debian/gbp.conf +9 -0
- package/deps/librdkafka/debian/librdkafka++1.install +1 -0
- package/deps/librdkafka/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/debian/librdkafka-dev.install +9 -0
- package/deps/librdkafka/debian/librdkafka1.docs +5 -0
- package/deps/librdkafka/debian/librdkafka1.install +1 -0
- package/deps/librdkafka/debian/librdkafka1.symbols +135 -0
- package/deps/librdkafka/debian/rules +19 -0
- package/deps/librdkafka/debian/source/format +1 -0
- package/deps/librdkafka/debian/watch +2 -0
- package/deps/librdkafka/dev-conf.sh +123 -0
- package/deps/librdkafka/examples/CMakeLists.txt +79 -0
- package/deps/librdkafka/examples/Makefile +167 -0
- package/deps/librdkafka/examples/README.md +42 -0
- package/deps/librdkafka/examples/alter_consumer_group_offsets.c +338 -0
- package/deps/librdkafka/examples/consumer.c +271 -0
- package/deps/librdkafka/examples/delete_records.c +233 -0
- package/deps/librdkafka/examples/describe_cluster.c +322 -0
- package/deps/librdkafka/examples/describe_consumer_groups.c +455 -0
- package/deps/librdkafka/examples/describe_topics.c +427 -0
- package/deps/librdkafka/examples/elect_leaders.c +317 -0
- package/deps/librdkafka/examples/globals.json +11 -0
- package/deps/librdkafka/examples/idempotent_producer.c +344 -0
- package/deps/librdkafka/examples/incremental_alter_configs.c +347 -0
- package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +945 -0
- package/deps/librdkafka/examples/list_consumer_group_offsets.c +359 -0
- package/deps/librdkafka/examples/list_consumer_groups.c +365 -0
- package/deps/librdkafka/examples/list_offsets.c +327 -0
- package/deps/librdkafka/examples/misc.c +287 -0
- package/deps/librdkafka/examples/openssl_engine_example.cpp +248 -0
- package/deps/librdkafka/examples/producer.c +251 -0
- package/deps/librdkafka/examples/producer.cpp +228 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.c +617 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.cpp +467 -0
- package/deps/librdkafka/examples/rdkafka_consume_batch.cpp +264 -0
- package/deps/librdkafka/examples/rdkafka_example.c +853 -0
- package/deps/librdkafka/examples/rdkafka_example.cpp +679 -0
- package/deps/librdkafka/examples/rdkafka_performance.c +1781 -0
- package/deps/librdkafka/examples/transactions-older-broker.c +668 -0
- package/deps/librdkafka/examples/transactions.c +665 -0
- package/deps/librdkafka/examples/user_scram.c +491 -0
- package/deps/librdkafka/examples/win_ssl_cert_store.cpp +396 -0
- package/deps/librdkafka/lds-gen.py +73 -0
- package/deps/librdkafka/mainpage.doxy +40 -0
- package/deps/librdkafka/mklove/Makefile.base +329 -0
- package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
- package/deps/librdkafka/mklove/modules/configure.base +2484 -0
- package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
- package/deps/librdkafka/mklove/modules/configure.cc +186 -0
- package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
- package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
- package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
- package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
- package/deps/librdkafka/mklove/modules/configure.host +132 -0
- package/deps/librdkafka/mklove/modules/configure.lib +49 -0
- package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
- package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
- package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
- package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
- package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
- package/deps/librdkafka/mklove/modules/configure.pic +16 -0
- package/deps/librdkafka/mklove/modules/configure.socket +20 -0
- package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
- package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
- package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
- package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
- package/deps/librdkafka/packaging/RELEASE.md +319 -0
- package/deps/librdkafka/packaging/alpine/build-alpine.sh +38 -0
- package/deps/librdkafka/packaging/archlinux/PKGBUILD +30 -0
- package/deps/librdkafka/packaging/cmake/Config.cmake.in +37 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindLZ4.cmake +38 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindZSTD.cmake +27 -0
- package/deps/librdkafka/packaging/cmake/Modules/LICENSE.FindZstd +178 -0
- package/deps/librdkafka/packaging/cmake/README.md +38 -0
- package/deps/librdkafka/packaging/cmake/config.h.in +52 -0
- package/deps/librdkafka/packaging/cmake/parseversion.cmake +60 -0
- package/deps/librdkafka/packaging/cmake/rdkafka.pc.in +12 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_64_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/c11threads_test.c +14 -0
- package/deps/librdkafka/packaging/cmake/try_compile/crc32c_hw_test.c +27 -0
- package/deps/librdkafka/packaging/cmake/try_compile/dlopen_test.c +11 -0
- package/deps/librdkafka/packaging/cmake/try_compile/libsasl2_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_darwin_test.c +6 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_freebsd_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_gnu_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rand_r_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rdkafka_setup.cmake +122 -0
- package/deps/librdkafka/packaging/cmake/try_compile/regex_test.c +10 -0
- package/deps/librdkafka/packaging/cmake/try_compile/strndup_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_64_test.c +8 -0
- package/deps/librdkafka/packaging/cp/README.md +16 -0
- package/deps/librdkafka/packaging/cp/check_features.c +72 -0
- package/deps/librdkafka/packaging/cp/verify-deb.sh +33 -0
- package/deps/librdkafka/packaging/cp/verify-packages.sh +69 -0
- package/deps/librdkafka/packaging/cp/verify-rpm.sh +32 -0
- package/deps/librdkafka/packaging/debian/changelog +66 -0
- package/deps/librdkafka/packaging/debian/compat +1 -0
- package/deps/librdkafka/packaging/debian/control +49 -0
- package/deps/librdkafka/packaging/debian/copyright +84 -0
- package/deps/librdkafka/packaging/debian/docs +5 -0
- package/deps/librdkafka/packaging/debian/gbp.conf +9 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.dirs +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.install +6 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka.dsc +16 -0
- package/deps/librdkafka/packaging/debian/librdkafka1-dbg.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.dirs +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.install +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postinst.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postrm.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.symbols +64 -0
- package/deps/librdkafka/packaging/debian/rules +19 -0
- package/deps/librdkafka/packaging/debian/source/format +1 -0
- package/deps/librdkafka/packaging/debian/watch +2 -0
- package/deps/librdkafka/packaging/get_version.py +21 -0
- package/deps/librdkafka/packaging/homebrew/README.md +15 -0
- package/deps/librdkafka/packaging/homebrew/brew-update-pr.sh +31 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw-static.sh +52 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw.sh +21 -0
- package/deps/librdkafka/packaging/mingw-w64/export-variables.sh +13 -0
- package/deps/librdkafka/packaging/mingw-w64/run-tests.sh +6 -0
- package/deps/librdkafka/packaging/mingw-w64/semaphoreci-build.sh +38 -0
- package/deps/librdkafka/packaging/nuget/README.md +84 -0
- package/deps/librdkafka/packaging/nuget/artifact.py +177 -0
- package/deps/librdkafka/packaging/nuget/cleanup-s3.py +143 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/nugetpackage.py +278 -0
- package/deps/librdkafka/packaging/nuget/packaging.py +448 -0
- package/deps/librdkafka/packaging/nuget/push-to-nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/release.py +167 -0
- package/deps/librdkafka/packaging/nuget/requirements.txt +3 -0
- package/deps/librdkafka/packaging/nuget/staticpackage.py +178 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.nuspec +21 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.props +18 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.targets +19 -0
- package/deps/librdkafka/packaging/nuget/zfile/__init__.py +0 -0
- package/deps/librdkafka/packaging/nuget/zfile/zfile.py +98 -0
- package/deps/librdkafka/packaging/rpm/Makefile +92 -0
- package/deps/librdkafka/packaging/rpm/README.md +23 -0
- package/deps/librdkafka/packaging/rpm/el7-x86_64.cfg +40 -0
- package/deps/librdkafka/packaging/rpm/librdkafka.spec +118 -0
- package/deps/librdkafka/packaging/rpm/mock-on-docker.sh +96 -0
- package/deps/librdkafka/packaging/rpm/tests/Makefile +25 -0
- package/deps/librdkafka/packaging/rpm/tests/README.md +8 -0
- package/deps/librdkafka/packaging/rpm/tests/run-test.sh +42 -0
- package/deps/librdkafka/packaging/rpm/tests/test-on-docker.sh +56 -0
- package/deps/librdkafka/packaging/rpm/tests/test.c +77 -0
- package/deps/librdkafka/packaging/rpm/tests/test.cpp +34 -0
- package/deps/librdkafka/packaging/tools/Dockerfile +31 -0
- package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +12 -0
- package/deps/librdkafka/packaging/tools/build-deb-package.sh +64 -0
- package/deps/librdkafka/packaging/tools/build-debian.sh +65 -0
- package/deps/librdkafka/packaging/tools/build-manylinux.sh +68 -0
- package/deps/librdkafka/packaging/tools/build-release-artifacts.sh +139 -0
- package/deps/librdkafka/packaging/tools/distro-build.sh +38 -0
- package/deps/librdkafka/packaging/tools/gh-release-checksums.py +39 -0
- package/deps/librdkafka/packaging/tools/rdutcoverage.sh +25 -0
- package/deps/librdkafka/packaging/tools/requirements.txt +2 -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 +149 -0
- package/deps/librdkafka/packaging/tools/update_rpcs_max_versions.py +100 -0
- package/deps/librdkafka/service.yml +172 -0
- package/deps/librdkafka/src/CMakeLists.txt +374 -0
- package/deps/librdkafka/src/Makefile +103 -0
- package/deps/librdkafka/src/README.lz4.md +30 -0
- package/deps/librdkafka/src/cJSON.c +2834 -0
- package/deps/librdkafka/src/cJSON.h +398 -0
- package/deps/librdkafka/src/crc32c.c +430 -0
- package/deps/librdkafka/src/crc32c.h +38 -0
- package/deps/librdkafka/src/generate_proto.sh +66 -0
- package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
- package/deps/librdkafka/src/lz4.c +2727 -0
- package/deps/librdkafka/src/lz4.h +842 -0
- package/deps/librdkafka/src/lz4frame.c +2078 -0
- package/deps/librdkafka/src/lz4frame.h +692 -0
- package/deps/librdkafka/src/lz4frame_static.h +47 -0
- package/deps/librdkafka/src/lz4hc.c +1631 -0
- package/deps/librdkafka/src/lz4hc.h +413 -0
- package/deps/librdkafka/src/nanopb/pb.h +917 -0
- package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
- package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
- package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
- package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
- package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
- package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
- package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
- package/deps/librdkafka/src/queue.h +850 -0
- package/deps/librdkafka/src/rd.h +584 -0
- package/deps/librdkafka/src/rdaddr.c +255 -0
- package/deps/librdkafka/src/rdaddr.h +202 -0
- package/deps/librdkafka/src/rdatomic.h +230 -0
- package/deps/librdkafka/src/rdavg.h +260 -0
- package/deps/librdkafka/src/rdavl.c +210 -0
- package/deps/librdkafka/src/rdavl.h +250 -0
- package/deps/librdkafka/src/rdbase64.c +200 -0
- package/deps/librdkafka/src/rdbase64.h +43 -0
- package/deps/librdkafka/src/rdbuf.c +1884 -0
- package/deps/librdkafka/src/rdbuf.h +375 -0
- package/deps/librdkafka/src/rdcrc32.c +114 -0
- package/deps/librdkafka/src/rdcrc32.h +170 -0
- package/deps/librdkafka/src/rddl.c +179 -0
- package/deps/librdkafka/src/rddl.h +43 -0
- package/deps/librdkafka/src/rdendian.h +175 -0
- package/deps/librdkafka/src/rdfloat.h +67 -0
- package/deps/librdkafka/src/rdfnv1a.c +113 -0
- package/deps/librdkafka/src/rdfnv1a.h +35 -0
- package/deps/librdkafka/src/rdgz.c +120 -0
- package/deps/librdkafka/src/rdgz.h +46 -0
- package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
- package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
- package/deps/librdkafka/src/rdhttp.c +830 -0
- package/deps/librdkafka/src/rdhttp.h +101 -0
- package/deps/librdkafka/src/rdinterval.h +177 -0
- package/deps/librdkafka/src/rdkafka.c +5505 -0
- package/deps/librdkafka/src/rdkafka.h +10686 -0
- package/deps/librdkafka/src/rdkafka_admin.c +9794 -0
- package/deps/librdkafka/src/rdkafka_admin.h +661 -0
- package/deps/librdkafka/src/rdkafka_assignment.c +1010 -0
- package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
- package/deps/librdkafka/src/rdkafka_assignor.c +1786 -0
- package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
- package/deps/librdkafka/src/rdkafka_aux.c +409 -0
- package/deps/librdkafka/src/rdkafka_aux.h +174 -0
- package/deps/librdkafka/src/rdkafka_background.c +221 -0
- package/deps/librdkafka/src/rdkafka_broker.c +6337 -0
- package/deps/librdkafka/src/rdkafka_broker.h +744 -0
- package/deps/librdkafka/src/rdkafka_buf.c +543 -0
- package/deps/librdkafka/src/rdkafka_buf.h +1525 -0
- package/deps/librdkafka/src/rdkafka_cert.c +576 -0
- package/deps/librdkafka/src/rdkafka_cert.h +62 -0
- package/deps/librdkafka/src/rdkafka_cgrp.c +7587 -0
- package/deps/librdkafka/src/rdkafka_cgrp.h +477 -0
- package/deps/librdkafka/src/rdkafka_conf.c +4880 -0
- package/deps/librdkafka/src/rdkafka_conf.h +732 -0
- package/deps/librdkafka/src/rdkafka_confval.h +97 -0
- package/deps/librdkafka/src/rdkafka_coord.c +623 -0
- package/deps/librdkafka/src/rdkafka_coord.h +132 -0
- package/deps/librdkafka/src/rdkafka_error.c +228 -0
- package/deps/librdkafka/src/rdkafka_error.h +80 -0
- package/deps/librdkafka/src/rdkafka_event.c +502 -0
- package/deps/librdkafka/src/rdkafka_event.h +126 -0
- package/deps/librdkafka/src/rdkafka_feature.c +898 -0
- package/deps/librdkafka/src/rdkafka_feature.h +104 -0
- package/deps/librdkafka/src/rdkafka_fetcher.c +1422 -0
- package/deps/librdkafka/src/rdkafka_fetcher.h +44 -0
- package/deps/librdkafka/src/rdkafka_header.c +220 -0
- package/deps/librdkafka/src/rdkafka_header.h +76 -0
- package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
- package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
- package/deps/librdkafka/src/rdkafka_int.h +1260 -0
- package/deps/librdkafka/src/rdkafka_interceptor.c +819 -0
- package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
- package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
- package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
- package/deps/librdkafka/src/rdkafka_metadata.c +2209 -0
- package/deps/librdkafka/src/rdkafka_metadata.h +345 -0
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
- package/deps/librdkafka/src/rdkafka_mock.c +3661 -0
- package/deps/librdkafka/src/rdkafka_mock.h +610 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1876 -0
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +3113 -0
- package/deps/librdkafka/src/rdkafka_mock_int.h +710 -0
- package/deps/librdkafka/src/rdkafka_msg.c +2589 -0
- package/deps/librdkafka/src/rdkafka_msg.h +614 -0
- package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
- package/deps/librdkafka/src/rdkafka_msgset.h +98 -0
- package/deps/librdkafka/src/rdkafka_msgset_reader.c +1806 -0
- package/deps/librdkafka/src/rdkafka_msgset_writer.c +1474 -0
- package/deps/librdkafka/src/rdkafka_offset.c +1565 -0
- package/deps/librdkafka/src/rdkafka_offset.h +150 -0
- package/deps/librdkafka/src/rdkafka_op.c +997 -0
- package/deps/librdkafka/src/rdkafka_op.h +858 -0
- package/deps/librdkafka/src/rdkafka_partition.c +4896 -0
- package/deps/librdkafka/src/rdkafka_partition.h +1182 -0
- package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
- package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
- package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
- package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
- package/deps/librdkafka/src/rdkafka_proto.h +736 -0
- package/deps/librdkafka/src/rdkafka_protocol.h +128 -0
- package/deps/librdkafka/src/rdkafka_queue.c +1230 -0
- package/deps/librdkafka/src/rdkafka_queue.h +1220 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
- package/deps/librdkafka/src/rdkafka_request.c +7089 -0
- package/deps/librdkafka/src/rdkafka_request.h +732 -0
- package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
- package/deps/librdkafka/src/rdkafka_sasl.c +530 -0
- package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
- package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
- package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1833 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1666 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +47 -0
- package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
- package/deps/librdkafka/src/rdkafka_sasl_scram.c +858 -0
- package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
- package/deps/librdkafka/src/rdkafka_ssl.c +2129 -0
- package/deps/librdkafka/src/rdkafka_ssl.h +86 -0
- package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4785 -0
- package/deps/librdkafka/src/rdkafka_subscription.c +278 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +760 -0
- package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1053 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.c +997 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.h +301 -0
- package/deps/librdkafka/src/rdkafka_timer.c +402 -0
- package/deps/librdkafka/src/rdkafka_timer.h +117 -0
- package/deps/librdkafka/src/rdkafka_topic.c +2161 -0
- package/deps/librdkafka/src/rdkafka_topic.h +334 -0
- package/deps/librdkafka/src/rdkafka_transport.c +1309 -0
- package/deps/librdkafka/src/rdkafka_transport.h +99 -0
- package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.c +3256 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
- package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
- package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
- package/deps/librdkafka/src/rdlist.c +576 -0
- package/deps/librdkafka/src/rdlist.h +434 -0
- package/deps/librdkafka/src/rdlog.c +89 -0
- package/deps/librdkafka/src/rdlog.h +41 -0
- package/deps/librdkafka/src/rdmap.c +508 -0
- package/deps/librdkafka/src/rdmap.h +492 -0
- package/deps/librdkafka/src/rdmurmur2.c +167 -0
- package/deps/librdkafka/src/rdmurmur2.h +35 -0
- package/deps/librdkafka/src/rdports.c +61 -0
- package/deps/librdkafka/src/rdports.h +38 -0
- package/deps/librdkafka/src/rdposix.h +250 -0
- package/deps/librdkafka/src/rdrand.c +80 -0
- package/deps/librdkafka/src/rdrand.h +43 -0
- package/deps/librdkafka/src/rdregex.c +156 -0
- package/deps/librdkafka/src/rdregex.h +43 -0
- package/deps/librdkafka/src/rdsignal.h +57 -0
- package/deps/librdkafka/src/rdstring.c +645 -0
- package/deps/librdkafka/src/rdstring.h +98 -0
- package/deps/librdkafka/src/rdsysqueue.h +404 -0
- package/deps/librdkafka/src/rdtime.h +356 -0
- package/deps/librdkafka/src/rdtypes.h +86 -0
- package/deps/librdkafka/src/rdunittest.c +549 -0
- package/deps/librdkafka/src/rdunittest.h +232 -0
- package/deps/librdkafka/src/rdvarint.c +134 -0
- package/deps/librdkafka/src/rdvarint.h +165 -0
- package/deps/librdkafka/src/rdwin32.h +382 -0
- package/deps/librdkafka/src/rdxxhash.c +1030 -0
- package/deps/librdkafka/src/rdxxhash.h +328 -0
- package/deps/librdkafka/src/regexp.c +1352 -0
- package/deps/librdkafka/src/regexp.h +41 -0
- package/deps/librdkafka/src/snappy.c +1866 -0
- package/deps/librdkafka/src/snappy.h +62 -0
- package/deps/librdkafka/src/snappy_compat.h +138 -0
- package/deps/librdkafka/src/statistics_schema.json +444 -0
- package/deps/librdkafka/src/tinycthread.c +932 -0
- package/deps/librdkafka/src/tinycthread.h +503 -0
- package/deps/librdkafka/src/tinycthread_extra.c +199 -0
- package/deps/librdkafka/src/tinycthread_extra.h +212 -0
- package/deps/librdkafka/src/win32_config.h +58 -0
- package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
- package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
- package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
- package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
- package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
- package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
- package/deps/librdkafka/src-cpp/Makefile +55 -0
- package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
- package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
- package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
- package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
- package/deps/librdkafka/src-cpp/README.md +16 -0
- package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
- package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
- package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp.h +3797 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
- package/deps/librdkafka/tests/0000-unittests.c +72 -0
- package/deps/librdkafka/tests/0001-multiobj.c +102 -0
- package/deps/librdkafka/tests/0002-unkpart.c +244 -0
- package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
- package/deps/librdkafka/tests/0004-conf.c +934 -0
- package/deps/librdkafka/tests/0005-order.c +133 -0
- package/deps/librdkafka/tests/0006-symbols.c +163 -0
- package/deps/librdkafka/tests/0007-autotopic.c +136 -0
- package/deps/librdkafka/tests/0008-reqacks.c +179 -0
- package/deps/librdkafka/tests/0009-mock_cluster.c +97 -0
- package/deps/librdkafka/tests/0011-produce_batch.c +753 -0
- package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
- package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
- package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
- package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
- package/deps/librdkafka/tests/0016-client_swname.c +181 -0
- package/deps/librdkafka/tests/0017-compression.c +140 -0
- package/deps/librdkafka/tests/0018-cgrp_term.c +338 -0
- package/deps/librdkafka/tests/0019-list_groups.c +289 -0
- package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
- package/deps/librdkafka/tests/0021-rkt_destroy.c +72 -0
- package/deps/librdkafka/tests/0022-consume_batch.c +279 -0
- package/deps/librdkafka/tests/0025-timers.c +147 -0
- package/deps/librdkafka/tests/0026-consume_pause.c +547 -0
- package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
- package/deps/librdkafka/tests/0029-assign_offset.c +202 -0
- package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
- package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
- package/deps/librdkafka/tests/0033-regex_subscribe.c +536 -0
- package/deps/librdkafka/tests/0034-offset_reset.c +398 -0
- package/deps/librdkafka/tests/0035-api_version.c +73 -0
- package/deps/librdkafka/tests/0036-partial_fetch.c +87 -0
- package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
- package/deps/librdkafka/tests/0038-performance.c +121 -0
- package/deps/librdkafka/tests/0039-event.c +284 -0
- package/deps/librdkafka/tests/0040-io_event.c +257 -0
- package/deps/librdkafka/tests/0041-fetch_max_bytes.c +97 -0
- package/deps/librdkafka/tests/0042-many_topics.c +252 -0
- package/deps/librdkafka/tests/0043-no_connection.c +77 -0
- package/deps/librdkafka/tests/0044-partition_cnt.c +94 -0
- package/deps/librdkafka/tests/0045-subscribe_update.c +1010 -0
- package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
- package/deps/librdkafka/tests/0047-partial_buf_tmout.c +98 -0
- package/deps/librdkafka/tests/0048-partitioner.c +283 -0
- package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
- package/deps/librdkafka/tests/0050-subscribe_adds.c +145 -0
- package/deps/librdkafka/tests/0051-assign_adds.c +126 -0
- package/deps/librdkafka/tests/0052-msg_timestamps.c +238 -0
- package/deps/librdkafka/tests/0053-stats_cb.cpp +527 -0
- package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
- package/deps/librdkafka/tests/0055-producer_latency.c +539 -0
- package/deps/librdkafka/tests/0056-balanced_group_mt.c +315 -0
- package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
- package/deps/librdkafka/tests/0058-log.cpp +123 -0
- package/deps/librdkafka/tests/0059-bsearch.cpp +241 -0
- package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
- package/deps/librdkafka/tests/0061-consumer_lag.cpp +295 -0
- package/deps/librdkafka/tests/0062-stats_event.c +126 -0
- package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
- package/deps/librdkafka/tests/0064-interceptors.c +481 -0
- package/deps/librdkafka/tests/0065-yield.cpp +140 -0
- package/deps/librdkafka/tests/0066-plugins.cpp +129 -0
- package/deps/librdkafka/tests/0067-empty_topic.cpp +151 -0
- package/deps/librdkafka/tests/0068-produce_timeout.c +136 -0
- package/deps/librdkafka/tests/0069-consumer_add_parts.c +119 -0
- package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
- package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
- package/deps/librdkafka/tests/0073-headers.c +381 -0
- package/deps/librdkafka/tests/0074-producev.c +87 -0
- package/deps/librdkafka/tests/0075-retry.c +290 -0
- package/deps/librdkafka/tests/0076-produce_retry.c +452 -0
- package/deps/librdkafka/tests/0077-compaction.c +363 -0
- package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
- package/deps/librdkafka/tests/0079-fork.c +93 -0
- package/deps/librdkafka/tests/0080-admin_ut.c +3095 -0
- package/deps/librdkafka/tests/0081-admin.c +5633 -0
- package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +137 -0
- package/deps/librdkafka/tests/0083-cb_event.c +233 -0
- package/deps/librdkafka/tests/0084-destroy_flags.c +208 -0
- package/deps/librdkafka/tests/0085-headers.cpp +392 -0
- package/deps/librdkafka/tests/0086-purge.c +368 -0
- package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
- package/deps/librdkafka/tests/0089-max_poll_interval.c +511 -0
- package/deps/librdkafka/tests/0090-idempotence.c +171 -0
- package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +295 -0
- package/deps/librdkafka/tests/0092-mixed_msgver.c +103 -0
- package/deps/librdkafka/tests/0093-holb.c +200 -0
- package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +231 -0
- package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
- package/deps/librdkafka/tests/0097-ssl_verify.cpp +658 -0
- package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
- package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
- package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
- package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
- package/deps/librdkafka/tests/0102-static_group_rebalance.c +836 -0
- package/deps/librdkafka/tests/0103-transactions.c +1383 -0
- package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +625 -0
- package/deps/librdkafka/tests/0105-transactions_mock.c +3930 -0
- package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +318 -0
- package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
- package/deps/librdkafka/tests/0109-auto_create_topics.cpp +278 -0
- package/deps/librdkafka/tests/0110-batch_size.cpp +182 -0
- package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
- package/deps/librdkafka/tests/0112-assign_unknown_part.c +87 -0
- package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3473 -0
- package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
- package/deps/librdkafka/tests/0115-producer_auth.cpp +182 -0
- package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +216 -0
- package/deps/librdkafka/tests/0117-mock_errors.c +331 -0
- package/deps/librdkafka/tests/0118-commit_rebalance.c +154 -0
- package/deps/librdkafka/tests/0119-consumer_auth.cpp +167 -0
- package/deps/librdkafka/tests/0120-asymmetric_subscription.c +185 -0
- package/deps/librdkafka/tests/0121-clusterid.c +115 -0
- package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
- package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
- package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
- package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
- package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +528 -0
- package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
- package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +125 -0
- package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +79 -0
- package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
- package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
- package/deps/librdkafka/tests/0132-strategy_ordering.c +179 -0
- package/deps/librdkafka/tests/0133-ssl_keys.c +150 -0
- package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
- package/deps/librdkafka/tests/0135-sasl_credentials.cpp +143 -0
- package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
- package/deps/librdkafka/tests/0137-barrier_batch_consume.c +619 -0
- package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
- package/deps/librdkafka/tests/0139-offset_validation_mock.c +950 -0
- package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
- package/deps/librdkafka/tests/0142-reauthentication.c +515 -0
- package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +552 -0
- package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
- package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
- package/deps/librdkafka/tests/0146-metadata_mock.c +505 -0
- 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 +651 -0
- 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/1000-unktopic.c +164 -0
- package/deps/librdkafka/tests/8000-idle.cpp +60 -0
- package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
- package/deps/librdkafka/tests/CMakeLists.txt +170 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -0
- package/deps/librdkafka/tests/Makefile +182 -0
- package/deps/librdkafka/tests/README.md +509 -0
- package/deps/librdkafka/tests/autotest.sh +33 -0
- package/deps/librdkafka/tests/backtrace.gdb +30 -0
- package/deps/librdkafka/tests/broker_version_tests.py +315 -0
- package/deps/librdkafka/tests/buildbox.sh +17 -0
- package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
- package/deps/librdkafka/tests/cluster_testing.py +191 -0
- package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
- package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
- package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
- package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -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 +50 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +168 -0
- package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
- package/deps/librdkafka/tests/fuzzers/README.md +31 -0
- package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
- package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
- package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
- package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
- package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
- package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
- package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
- package/deps/librdkafka/tests/java/Makefile +13 -0
- package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
- package/deps/librdkafka/tests/java/README.md +14 -0
- package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
- package/deps/librdkafka/tests/java/run-class.sh +11 -0
- package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
- package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
- package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
- package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
- package/deps/librdkafka/tests/performance_plot.py +115 -0
- package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
- package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
- package/deps/librdkafka/tests/requirements.txt +2 -0
- package/deps/librdkafka/tests/run-all-tests.sh +79 -0
- package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-test-batches.py +157 -0
- package/deps/librdkafka/tests/run-test.sh +140 -0
- package/deps/librdkafka/tests/rusage.c +249 -0
- package/deps/librdkafka/tests/sasl_test.py +289 -0
- package/deps/librdkafka/tests/scenarios/README.md +6 -0
- package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
- package/deps/librdkafka/tests/scenarios/default.json +5 -0
- package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
- package/deps/librdkafka/tests/sockem.c +801 -0
- package/deps/librdkafka/tests/sockem.h +85 -0
- package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
- package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
- package/deps/librdkafka/tests/test.c +7778 -0
- package/deps/librdkafka/tests/test.conf.example +27 -0
- package/deps/librdkafka/tests/test.h +1028 -0
- package/deps/librdkafka/tests/testcpp.cpp +131 -0
- package/deps/librdkafka/tests/testcpp.h +388 -0
- package/deps/librdkafka/tests/testshared.h +416 -0
- package/deps/librdkafka/tests/tools/README.md +4 -0
- package/deps/librdkafka/tests/tools/stats/README.md +21 -0
- package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
- package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
- package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
- package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
- package/deps/librdkafka/tests/trivup/trivup-0.14.0.tar.gz +0 -0
- package/deps/librdkafka/tests/until-fail.sh +87 -0
- package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
- package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
- package/deps/librdkafka/vcpkg.json +23 -0
- package/deps/librdkafka/win32/README.md +5 -0
- package/deps/librdkafka/win32/build-package.bat +3 -0
- package/deps/librdkafka/win32/build.bat +19 -0
- package/deps/librdkafka/win32/common.vcxproj +84 -0
- package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
- package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
- package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
- package/deps/librdkafka/win32/librdkafka.sln +226 -0
- package/deps/librdkafka/win32/librdkafka.vcxproj +276 -0
- package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
- package/deps/librdkafka/win32/msbuild.ps1 +15 -0
- package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
- package/deps/librdkafka/win32/package-zip.ps1 +46 -0
- package/deps/librdkafka/win32/packages/repositories.config +4 -0
- package/deps/librdkafka/win32/push-package.bat +4 -0
- package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
- package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
- package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
- package/deps/librdkafka/win32/setup-msys2.ps1 +47 -0
- package/deps/librdkafka/win32/setup-vcpkg.ps1 +34 -0
- package/deps/librdkafka/win32/tests/test.conf.example +25 -0
- package/deps/librdkafka/win32/tests/tests.vcxproj +253 -0
- package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
- package/deps/librdkafka/win32/wingetopt.c +564 -0
- package/deps/librdkafka/win32/wingetopt.h +101 -0
- package/deps/librdkafka/win32/wintime.h +33 -0
- package/deps/librdkafka.gyp +62 -0
- package/lib/admin.js +233 -0
- package/lib/client.js +573 -0
- package/lib/error.js +500 -0
- package/lib/index.js +34 -0
- package/lib/kafka-consumer-stream.js +397 -0
- package/lib/kafka-consumer.js +698 -0
- package/lib/producer/high-level-producer.js +323 -0
- package/lib/producer-stream.js +307 -0
- package/lib/producer.js +375 -0
- package/lib/tools/ref-counter.js +52 -0
- package/lib/topic-partition.js +88 -0
- package/lib/topic.js +42 -0
- package/lib/util.js +29 -0
- package/package.json +61 -0
- package/prebuilds/darwin-arm64/@point3+node-rdkafka.node +0 -0
- package/prebuilds/linux-x64/@point3+node-rdkafka.node +0 -0
- package/util/configure.js +30 -0
- package/util/get-env.js +6 -0
- package/util/test-compile.js +11 -0
- package/util/test-producer-delivery.js +100 -0
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2023, Confluent Inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
#include "test.h"
|
|
30
|
+
|
|
31
|
+
static rd_atomic32_t do_test_remove_then_add_received_terminate;
|
|
32
|
+
static rd_atomic32_t verification_complete;
|
|
33
|
+
|
|
34
|
+
/** @brief Verify that \p expected_broker_ids
|
|
35
|
+
* and \p actual_broker_ids correspond in
|
|
36
|
+
* count and value.
|
|
37
|
+
*/
|
|
38
|
+
static rd_bool_t fetch_metadata_verify_brokers(int32_t *expected_broker_ids,
|
|
39
|
+
size_t expected_broker_id_cnt,
|
|
40
|
+
int32_t *actual_broker_ids,
|
|
41
|
+
size_t actual_broker_id_cnt) {
|
|
42
|
+
size_t i;
|
|
43
|
+
if (actual_broker_id_cnt != expected_broker_id_cnt)
|
|
44
|
+
return rd_false;
|
|
45
|
+
|
|
46
|
+
for (i = 0; i < actual_broker_id_cnt; i++) {
|
|
47
|
+
if (actual_broker_ids[i] != expected_broker_ids[i])
|
|
48
|
+
return rd_false;
|
|
49
|
+
}
|
|
50
|
+
return rd_true;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
static void fetch_metadata(rd_kafka_t *rk,
|
|
54
|
+
int32_t *expected_broker_ids,
|
|
55
|
+
size_t expected_broker_id_cnt,
|
|
56
|
+
rd_bool_t (*request_metadata_cb)(int action),
|
|
57
|
+
rd_bool_t (*await_after_action_cb)(int action),
|
|
58
|
+
int action) {
|
|
59
|
+
const rd_kafka_metadata_t *md = NULL;
|
|
60
|
+
rd_kafka_resp_err_t err;
|
|
61
|
+
size_t actual_broker_id_cnt = 0;
|
|
62
|
+
int32_t *actual_broker_ids = NULL;
|
|
63
|
+
size_t i;
|
|
64
|
+
int timeout_usecs = 10000000;
|
|
65
|
+
int64_t abs_timeout_us = test_clock() + timeout_usecs;
|
|
66
|
+
rd_bool_t continue_requesting_metadata = rd_true;
|
|
67
|
+
|
|
68
|
+
TEST_SAY("Waiting for up to 10s for metadata update\n");
|
|
69
|
+
|
|
70
|
+
/* Trigger Metadata request which will update learned brokers. */
|
|
71
|
+
do {
|
|
72
|
+
if (!request_metadata_cb || request_metadata_cb(action)) {
|
|
73
|
+
err = rd_kafka_metadata(rk, 0, NULL, &md,
|
|
74
|
+
tmout_multip(5000));
|
|
75
|
+
if (md) {
|
|
76
|
+
rd_kafka_metadata_destroy(md);
|
|
77
|
+
md = NULL;
|
|
78
|
+
} else if (err != RD_KAFKA_RESP_ERR__TRANSPORT)
|
|
79
|
+
TEST_ASSERT(!err, "%s", rd_kafka_err2str(err));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
rd_usleep(100 * 1000, 0);
|
|
83
|
+
|
|
84
|
+
RD_IF_FREE(actual_broker_ids, rd_free);
|
|
85
|
+
actual_broker_ids =
|
|
86
|
+
rd_kafka_brokers_learned_ids(rk, &actual_broker_id_cnt);
|
|
87
|
+
continue_requesting_metadata = test_clock() <= abs_timeout_us;
|
|
88
|
+
|
|
89
|
+
continue_requesting_metadata =
|
|
90
|
+
continue_requesting_metadata &&
|
|
91
|
+
!fetch_metadata_verify_brokers(
|
|
92
|
+
expected_broker_ids, expected_broker_id_cnt,
|
|
93
|
+
actual_broker_ids, actual_broker_id_cnt);
|
|
94
|
+
|
|
95
|
+
if (await_after_action_cb)
|
|
96
|
+
continue_requesting_metadata =
|
|
97
|
+
continue_requesting_metadata ||
|
|
98
|
+
await_after_action_cb(action);
|
|
99
|
+
|
|
100
|
+
} while (continue_requesting_metadata);
|
|
101
|
+
|
|
102
|
+
TEST_ASSERT(actual_broker_id_cnt == expected_broker_id_cnt,
|
|
103
|
+
"expected %" PRIusz " brokers in cache, got %" PRIusz,
|
|
104
|
+
expected_broker_id_cnt, actual_broker_id_cnt);
|
|
105
|
+
|
|
106
|
+
for (i = 0; i < actual_broker_id_cnt; i++) {
|
|
107
|
+
TEST_ASSERT(actual_broker_ids[i] == expected_broker_ids[i],
|
|
108
|
+
"expected broker id[%" PRIusz
|
|
109
|
+
"] to be "
|
|
110
|
+
"%" PRId32 ", got %" PRId32,
|
|
111
|
+
i, expected_broker_ids[i], actual_broker_ids[i]);
|
|
112
|
+
}
|
|
113
|
+
RD_IF_FREE(actual_broker_ids, rd_free);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
#define do_test_add_remove_brokers(initial_cluster_size, actions, action_cnt, \
|
|
117
|
+
expected_broker_ids, expected_brokers_cnt) \
|
|
118
|
+
do_test_add_remove_brokers0(initial_cluster_size, actions, action_cnt, \
|
|
119
|
+
expected_broker_ids, expected_brokers_cnt, \
|
|
120
|
+
NULL, NULL, NULL);
|
|
121
|
+
/**
|
|
122
|
+
* @brief Test adding and removing brokers from the mock cluster.
|
|
123
|
+
* Verify that the client is updated with the new broker list.
|
|
124
|
+
*
|
|
125
|
+
* All \p actions are executed in sequence. \p expected_brokers_cnt
|
|
126
|
+
*
|
|
127
|
+
* After each action, the client is expected to have the broker
|
|
128
|
+
* ids in \p expected_broker_ids and the count to be
|
|
129
|
+
* \p expected_brokers_cnt .
|
|
130
|
+
*
|
|
131
|
+
* @param initial_cluster_size Initial number of brokers in the cluster.
|
|
132
|
+
* @param actions Array of actions to perform. Each action is a pair
|
|
133
|
+
* (action,broker id). 0 to remove, 1 to add,
|
|
134
|
+
* 2 to set down, 3 to set up.
|
|
135
|
+
* @param expected_broker_ids Array of broker ids expected after each
|
|
136
|
+
* action.
|
|
137
|
+
* @param expected_broker_ids_cnt Number of elements in
|
|
138
|
+
* \p expected_broker_ids .
|
|
139
|
+
* @param expected_brokers_cnt Array of expected broker count after each
|
|
140
|
+
* action.
|
|
141
|
+
* @param await_verification If `rd_false`, the verification is
|
|
142
|
+
* done only after last action.
|
|
143
|
+
*/
|
|
144
|
+
#define TEST_ACTION_REMOVE_BROKER 0
|
|
145
|
+
#define TEST_ACTION_ADD_BROKER 1
|
|
146
|
+
#define TEST_ACTION_SET_DOWN_BROKER 2
|
|
147
|
+
#define TEST_ACTION_SET_UP_BROKER 3
|
|
148
|
+
#define TEST_ACTION_SET_GROUP_COORDINATOR 4
|
|
149
|
+
#define TEST_GROUP "topic1"
|
|
150
|
+
static void do_test_add_remove_brokers0(
|
|
151
|
+
int32_t initial_cluster_size,
|
|
152
|
+
int32_t actions[][2],
|
|
153
|
+
size_t action_cnt,
|
|
154
|
+
int32_t expected_broker_ids[][5],
|
|
155
|
+
int32_t expected_brokers_cnt[],
|
|
156
|
+
rd_kafka_type_t (*edit_configuration_cb)(rd_kafka_conf_t *conf),
|
|
157
|
+
rd_bool_t (*request_metadata_cb)(int action),
|
|
158
|
+
rd_bool_t (*await_after_action_cb)(int action)) {
|
|
159
|
+
rd_kafka_mock_cluster_t *cluster;
|
|
160
|
+
const char *bootstraps;
|
|
161
|
+
rd_kafka_conf_t *conf;
|
|
162
|
+
rd_kafka_t *rk;
|
|
163
|
+
size_t action = 0;
|
|
164
|
+
|
|
165
|
+
cluster = test_mock_cluster_new(initial_cluster_size, &bootstraps);
|
|
166
|
+
|
|
167
|
+
test_conf_init(&conf, NULL, 100);
|
|
168
|
+
|
|
169
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
170
|
+
test_conf_set(conf, "topic.metadata.refresh.interval.ms", "1000");
|
|
171
|
+
rd_kafka_type_t type = RD_KAFKA_CONSUMER;
|
|
172
|
+
if (edit_configuration_cb)
|
|
173
|
+
type = edit_configuration_cb(conf);
|
|
174
|
+
|
|
175
|
+
if (type == RD_KAFKA_CONSUMER)
|
|
176
|
+
test_conf_set(conf, "group.id", TEST_GROUP);
|
|
177
|
+
|
|
178
|
+
rk = test_create_handle(type, conf);
|
|
179
|
+
|
|
180
|
+
if (type == RD_KAFKA_CONSUMER)
|
|
181
|
+
test_consumer_subscribe(rk, TEST_GROUP);
|
|
182
|
+
|
|
183
|
+
/* Create a new topic to trigger partition reassignment */
|
|
184
|
+
rd_kafka_mock_topic_create(cluster, TEST_GROUP, 3,
|
|
185
|
+
initial_cluster_size);
|
|
186
|
+
|
|
187
|
+
/* Verify state zero is reached */
|
|
188
|
+
fetch_metadata(rk, expected_broker_ids[0], expected_brokers_cnt[0],
|
|
189
|
+
request_metadata_cb, await_after_action_cb, 0);
|
|
190
|
+
|
|
191
|
+
for (action = 0; action < action_cnt; action++) {
|
|
192
|
+
/* action: N, state: N+1 */
|
|
193
|
+
int next_state = action + 1;
|
|
194
|
+
int32_t action_type = actions[action][0];
|
|
195
|
+
int32_t broker_id = actions[action][1];
|
|
196
|
+
TEST_SAY("Executing action %zu\n", action + 1);
|
|
197
|
+
switch (action_type) {
|
|
198
|
+
case TEST_ACTION_REMOVE_BROKER:
|
|
199
|
+
TEST_SAY("Removing broker %" PRId32 "\n", broker_id);
|
|
200
|
+
TEST_ASSERT(rd_kafka_mock_broker_decommission(
|
|
201
|
+
cluster, broker_id) == 0,
|
|
202
|
+
"Failed to remove broker from cluster");
|
|
203
|
+
break;
|
|
204
|
+
|
|
205
|
+
case TEST_ACTION_ADD_BROKER:
|
|
206
|
+
TEST_SAY("Adding broker %" PRId32 "\n", broker_id);
|
|
207
|
+
TEST_ASSERT(
|
|
208
|
+
rd_kafka_mock_broker_add(cluster, broker_id) == 0,
|
|
209
|
+
"Failed to add broker to cluster");
|
|
210
|
+
break;
|
|
211
|
+
|
|
212
|
+
case TEST_ACTION_SET_DOWN_BROKER:
|
|
213
|
+
TEST_SAY("Setting down broker %" PRId32 "\n",
|
|
214
|
+
broker_id);
|
|
215
|
+
TEST_ASSERT(rd_kafka_mock_broker_set_down(
|
|
216
|
+
cluster, broker_id) == 0,
|
|
217
|
+
"Failed to set broker %" PRId32 " down",
|
|
218
|
+
broker_id);
|
|
219
|
+
break;
|
|
220
|
+
|
|
221
|
+
case TEST_ACTION_SET_UP_BROKER:
|
|
222
|
+
TEST_SAY("Setting up broker %" PRId32 "\n", broker_id);
|
|
223
|
+
TEST_ASSERT(rd_kafka_mock_broker_set_up(cluster,
|
|
224
|
+
broker_id) == 0,
|
|
225
|
+
"Failed to set broker %" PRId32 " up",
|
|
226
|
+
broker_id);
|
|
227
|
+
break;
|
|
228
|
+
case TEST_ACTION_SET_GROUP_COORDINATOR:
|
|
229
|
+
TEST_ASSERT(
|
|
230
|
+
rd_kafka_mock_coordinator_set(
|
|
231
|
+
cluster, "group", TEST_GROUP, broker_id) == 0,
|
|
232
|
+
"Failed to set group coordinator "
|
|
233
|
+
"to %" PRId32,
|
|
234
|
+
broker_id);
|
|
235
|
+
break;
|
|
236
|
+
default:
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
fetch_metadata(rk, expected_broker_ids[next_state],
|
|
241
|
+
expected_brokers_cnt[next_state],
|
|
242
|
+
request_metadata_cb, await_after_action_cb,
|
|
243
|
+
action);
|
|
244
|
+
}
|
|
245
|
+
TEST_SAY("Test verification complete\n");
|
|
246
|
+
rd_atomic32_set(&verification_complete, 1);
|
|
247
|
+
|
|
248
|
+
rd_kafka_destroy(rk);
|
|
249
|
+
test_mock_cluster_destroy(cluster);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* @brief Test replacing the brokers in the mock cluster with new ones.
|
|
254
|
+
* At each step a majority of brokers are returned by the Metadata call.
|
|
255
|
+
* At the end all brokers from the old cluster are removed.
|
|
256
|
+
*/
|
|
257
|
+
static void do_test_replace_with_new_cluster(void) {
|
|
258
|
+
SUB_TEST_QUICK();
|
|
259
|
+
|
|
260
|
+
int32_t expected_brokers_cnt[] = {3, 3, 2, 3, 2, 3, 3, 2, 3};
|
|
261
|
+
|
|
262
|
+
int32_t expected_broker_ids[][5] = {{1, 2, 3}, {1, 2, 3}, {2, 3},
|
|
263
|
+
{2, 3, 4}, {3, 4}, {3, 4, 5},
|
|
264
|
+
{3, 4, 5}, {4, 5}, {4, 5, 6}};
|
|
265
|
+
|
|
266
|
+
int32_t actions[][2] = {
|
|
267
|
+
{TEST_ACTION_SET_GROUP_COORDINATOR, 3},
|
|
268
|
+
{TEST_ACTION_REMOVE_BROKER, 1},
|
|
269
|
+
{TEST_ACTION_ADD_BROKER, 4},
|
|
270
|
+
{TEST_ACTION_REMOVE_BROKER, 2},
|
|
271
|
+
{TEST_ACTION_ADD_BROKER, 5},
|
|
272
|
+
{TEST_ACTION_SET_GROUP_COORDINATOR, 5},
|
|
273
|
+
{TEST_ACTION_REMOVE_BROKER, 3},
|
|
274
|
+
{TEST_ACTION_ADD_BROKER, 6},
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
do_test_add_remove_brokers(3, actions, RD_ARRAY_SIZE(actions),
|
|
278
|
+
expected_broker_ids, expected_brokers_cnt);
|
|
279
|
+
|
|
280
|
+
SUB_TEST_PASS();
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* @brief Test setting down all brokers from the mock cluster,
|
|
285
|
+
* simulating a correct cluster roll that never sets down the majority
|
|
286
|
+
* of brokers.
|
|
287
|
+
*
|
|
288
|
+
* The effect is similar to decommissioning the brokers. Partition
|
|
289
|
+
* reassignment is not triggered in this case but they are not announced
|
|
290
|
+
* anymore by the Metadata response.
|
|
291
|
+
*/
|
|
292
|
+
static void do_test_cluster_roll(void) {
|
|
293
|
+
SUB_TEST_QUICK();
|
|
294
|
+
|
|
295
|
+
int32_t expected_brokers_cnt[] = {5, 5, 4, 3, 4, 3, 4,
|
|
296
|
+
3, 4, 4, 3, 4, 5};
|
|
297
|
+
|
|
298
|
+
int32_t expected_broker_ids[][5] = {
|
|
299
|
+
{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}, {2, 3, 4, 5}, {3, 4, 5},
|
|
300
|
+
{1, 3, 4, 5}, {1, 4, 5}, {1, 2, 4, 5}, {1, 2, 5},
|
|
301
|
+
{1, 2, 3, 5}, {1, 2, 3, 5}, {1, 2, 3}, {1, 2, 3, 4},
|
|
302
|
+
{1, 2, 3, 4, 5}};
|
|
303
|
+
|
|
304
|
+
int32_t actions[][2] = {
|
|
305
|
+
{TEST_ACTION_SET_GROUP_COORDINATOR, 5},
|
|
306
|
+
{TEST_ACTION_SET_DOWN_BROKER, 1},
|
|
307
|
+
{TEST_ACTION_SET_DOWN_BROKER, 2},
|
|
308
|
+
{TEST_ACTION_SET_UP_BROKER, 1},
|
|
309
|
+
{TEST_ACTION_SET_DOWN_BROKER, 3},
|
|
310
|
+
{TEST_ACTION_SET_UP_BROKER, 2},
|
|
311
|
+
{TEST_ACTION_SET_DOWN_BROKER, 4},
|
|
312
|
+
{TEST_ACTION_SET_UP_BROKER, 3},
|
|
313
|
+
{TEST_ACTION_SET_GROUP_COORDINATOR, 1},
|
|
314
|
+
{TEST_ACTION_SET_DOWN_BROKER, 5},
|
|
315
|
+
{TEST_ACTION_SET_UP_BROKER, 4},
|
|
316
|
+
{TEST_ACTION_SET_UP_BROKER, 5},
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
do_test_add_remove_brokers(5, actions, RD_ARRAY_SIZE(actions),
|
|
320
|
+
expected_broker_ids, expected_brokers_cnt);
|
|
321
|
+
|
|
322
|
+
SUB_TEST_PASS();
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* @brief Log callback that waits for the TERMINATE op to be received
|
|
327
|
+
*/
|
|
328
|
+
static void do_test_remove_then_add_log_cb(const rd_kafka_t *rk,
|
|
329
|
+
int level,
|
|
330
|
+
const char *fac,
|
|
331
|
+
const char *buf) {
|
|
332
|
+
if (!rd_atomic32_get(&do_test_remove_then_add_received_terminate) &&
|
|
333
|
+
strstr(buf, "/1: Handle terminates in state")) {
|
|
334
|
+
rd_atomic32_set(&do_test_remove_then_add_received_terminate, 1);
|
|
335
|
+
while (!rd_atomic32_get(&verification_complete))
|
|
336
|
+
rd_usleep(100 * 1000, 0);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* @brief Await for the TERMINATE op to be received after the action
|
|
342
|
+
* that removes the broker then proceed to
|
|
343
|
+
* add the broker again.
|
|
344
|
+
*/
|
|
345
|
+
static rd_bool_t do_test_remove_then_add_await_after_action_cb(int action) {
|
|
346
|
+
/* Second action */
|
|
347
|
+
if (action == 1) {
|
|
348
|
+
/* Wait until TERMINATE is received */
|
|
349
|
+
return !rd_atomic32_get(
|
|
350
|
+
&do_test_remove_then_add_received_terminate);
|
|
351
|
+
}
|
|
352
|
+
return rd_false;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* @brief Disable sparse connections to increase likely of problems
|
|
357
|
+
* when the decommisioned broker is re-connecting.
|
|
358
|
+
* Add a pause after receiving the TERMINATE op to allow to
|
|
359
|
+
* proceed with adding it again before it's decommissioned.
|
|
360
|
+
*/
|
|
361
|
+
static test_conf_log_interceptor_t *log_interceptor;
|
|
362
|
+
static rd_kafka_type_t
|
|
363
|
+
do_test_remove_then_add_edit_configuration_cb(rd_kafka_conf_t *conf) {
|
|
364
|
+
const char *debug_contexts[2] = {"broker", NULL};
|
|
365
|
+
|
|
366
|
+
/* This timeout verifies that the correct brokers are returned
|
|
367
|
+
* without duplicates as soon as possible. */
|
|
368
|
+
test_timeout_set(6);
|
|
369
|
+
/* Hidden property that forces connections to all brokers,
|
|
370
|
+
* increasing likelyhood of wrong behaviour if the decommissioned broker
|
|
371
|
+
* starts re-connecting. */
|
|
372
|
+
test_conf_set(conf, "enable.sparse.connections", "false");
|
|
373
|
+
log_interceptor = test_conf_set_log_interceptor(
|
|
374
|
+
conf, do_test_remove_then_add_log_cb, debug_contexts);
|
|
375
|
+
|
|
376
|
+
return RD_KAFKA_CONSUMER;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* @brief Test setting down one broker and then adding it again
|
|
381
|
+
* while it's still being decommissioned.
|
|
382
|
+
*
|
|
383
|
+
* This should not leave dangling references that prevent broker
|
|
384
|
+
* destruction.
|
|
385
|
+
*/
|
|
386
|
+
static void do_test_remove_then_add(void) {
|
|
387
|
+
SUB_TEST_QUICK();
|
|
388
|
+
rd_atomic32_init(&do_test_remove_then_add_received_terminate, 0);
|
|
389
|
+
rd_atomic32_init(&verification_complete, 0);
|
|
390
|
+
|
|
391
|
+
int32_t expected_brokers_cnt[] = {3, 3, 2, 3};
|
|
392
|
+
|
|
393
|
+
int32_t expected_broker_ids[][5] = {
|
|
394
|
+
{1, 2, 3}, {1, 2, 3}, {2, 3}, {1, 2, 3}};
|
|
395
|
+
|
|
396
|
+
int32_t actions[][2] = {
|
|
397
|
+
{TEST_ACTION_SET_GROUP_COORDINATOR, 3},
|
|
398
|
+
{TEST_ACTION_REMOVE_BROKER, 1},
|
|
399
|
+
{TEST_ACTION_ADD_BROKER, 1},
|
|
400
|
+
};
|
|
401
|
+
|
|
402
|
+
do_test_add_remove_brokers0(
|
|
403
|
+
3, actions, RD_ARRAY_SIZE(actions), expected_broker_ids,
|
|
404
|
+
expected_brokers_cnt, do_test_remove_then_add_edit_configuration_cb,
|
|
405
|
+
NULL, do_test_remove_then_add_await_after_action_cb);
|
|
406
|
+
|
|
407
|
+
rd_free(log_interceptor);
|
|
408
|
+
log_interceptor = NULL;
|
|
409
|
+
SUB_TEST_PASS();
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
static rd_atomic32_t
|
|
413
|
+
do_test_down_then_up_no_rebootstrap_loop_rebootstrap_sequence_cnt;
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* @brief Log callback that counts numer of rebootstrap sequences received.
|
|
417
|
+
*/
|
|
418
|
+
static void
|
|
419
|
+
do_test_down_then_up_no_rebootstrap_loop_log_cb(const rd_kafka_t *rk,
|
|
420
|
+
int level,
|
|
421
|
+
const char *fac,
|
|
422
|
+
const char *buf) {
|
|
423
|
+
if (strstr(buf, "Starting re-bootstrap sequence")) {
|
|
424
|
+
rd_atomic32_add(
|
|
425
|
+
&do_test_down_then_up_no_rebootstrap_loop_rebootstrap_sequence_cnt,
|
|
426
|
+
1);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* @brief Sets the logs callback to the log interceptor.
|
|
432
|
+
*/
|
|
433
|
+
static rd_kafka_type_t
|
|
434
|
+
do_test_down_then_up_no_rebootstrap_loop_edit_configuration_cb(
|
|
435
|
+
rd_kafka_conf_t *conf) {
|
|
436
|
+
const char *debug_contexts[2] = {"generic", NULL};
|
|
437
|
+
|
|
438
|
+
log_interceptor = test_conf_set_log_interceptor(
|
|
439
|
+
conf, do_test_down_then_up_no_rebootstrap_loop_log_cb,
|
|
440
|
+
debug_contexts);
|
|
441
|
+
return RD_KAFKA_PRODUCER;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* @brief After action 1 the broker is set down.
|
|
446
|
+
* Don't await for metadata update.
|
|
447
|
+
*/
|
|
448
|
+
static rd_bool_t
|
|
449
|
+
do_test_down_then_up_no_rebootstrap_loop_request_metadata_cb(int action) {
|
|
450
|
+
return action != 1;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* @brief Await 5s after setting up the broker down
|
|
455
|
+
* to check for re-bootstrap sequences.
|
|
456
|
+
*/
|
|
457
|
+
static rd_bool_t
|
|
458
|
+
do_test_down_then_up_no_rebootstrap_loop_await_after_action_cb(int action) {
|
|
459
|
+
if (action == 1) {
|
|
460
|
+
rd_sleep(6);
|
|
461
|
+
}
|
|
462
|
+
return rd_false;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* @brief Test setting down a broker and then setting it up again.
|
|
467
|
+
* It shouldn't cause a loop of re-bootstrap sequences.
|
|
468
|
+
*/
|
|
469
|
+
static void do_test_down_then_up_no_rebootstrap_loop(void) {
|
|
470
|
+
SUB_TEST_QUICK();
|
|
471
|
+
rd_atomic32_init(
|
|
472
|
+
&do_test_down_then_up_no_rebootstrap_loop_rebootstrap_sequence_cnt,
|
|
473
|
+
0);
|
|
474
|
+
|
|
475
|
+
int32_t expected_brokers_cnt[] = {1, 1, 1, 1};
|
|
476
|
+
|
|
477
|
+
int32_t expected_broker_ids[][5] = {{1}, {1}, {1}, {1}};
|
|
478
|
+
|
|
479
|
+
int32_t actions[][2] = {
|
|
480
|
+
{TEST_ACTION_SET_UP_BROKER, 1},
|
|
481
|
+
{TEST_ACTION_SET_DOWN_BROKER, 1},
|
|
482
|
+
{TEST_ACTION_SET_UP_BROKER, 1},
|
|
483
|
+
};
|
|
484
|
+
|
|
485
|
+
do_test_add_remove_brokers0(
|
|
486
|
+
1, actions, RD_ARRAY_SIZE(actions), expected_broker_ids,
|
|
487
|
+
expected_brokers_cnt,
|
|
488
|
+
do_test_down_then_up_no_rebootstrap_loop_edit_configuration_cb,
|
|
489
|
+
do_test_down_then_up_no_rebootstrap_loop_request_metadata_cb,
|
|
490
|
+
do_test_down_then_up_no_rebootstrap_loop_await_after_action_cb);
|
|
491
|
+
|
|
492
|
+
/* With a rebootstrap every time the bootstrap brokers are removed
|
|
493
|
+
* we get 6 re-bootstrap sequences.
|
|
494
|
+
* With the fix we require connection to all learned brokers before
|
|
495
|
+
* reaching all brokers down again.
|
|
496
|
+
* In this case we have to connect to the bootstrap broker
|
|
497
|
+
* and the learned broker, 2s in the slowest case as it depends
|
|
498
|
+
* on periodic 10s brokers refresh timer too.
|
|
499
|
+
* We expect 5 or less re-bootstrap sequences. */
|
|
500
|
+
TEST_ASSERT(
|
|
501
|
+
rd_atomic32_get(
|
|
502
|
+
&do_test_down_then_up_no_rebootstrap_loop_rebootstrap_sequence_cnt) <=
|
|
503
|
+
5,
|
|
504
|
+
"Expected <= 5 re-bootstrap sequences, got %d",
|
|
505
|
+
rd_atomic32_get(
|
|
506
|
+
&do_test_down_then_up_no_rebootstrap_loop_rebootstrap_sequence_cnt));
|
|
507
|
+
|
|
508
|
+
rd_free(log_interceptor);
|
|
509
|
+
log_interceptor = NULL;
|
|
510
|
+
SUB_TEST_PASS();
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
/**
|
|
514
|
+
* @brief Test for the mock cluster to ensure there are no problems with
|
|
515
|
+
* other tests in case they're adding a broker with the same id
|
|
516
|
+
* as an existing one.
|
|
517
|
+
*/
|
|
518
|
+
static void do_test_add_same_broker_id(void) {
|
|
519
|
+
rd_kafka_mock_cluster_t *cluster;
|
|
520
|
+
const char *bootstraps;
|
|
521
|
+
rd_kafka_resp_err_t err;
|
|
522
|
+
|
|
523
|
+
SUB_TEST_QUICK();
|
|
524
|
+
|
|
525
|
+
cluster = test_mock_cluster_new(1, &bootstraps);
|
|
526
|
+
TEST_SAY("Broker 1 was present from the start, should fail\n");
|
|
527
|
+
err = rd_kafka_mock_broker_add(cluster, 1);
|
|
528
|
+
TEST_ASSERT(err == RD_KAFKA_RESP_ERR__INVALID_ARG,
|
|
529
|
+
"Expected error %s, got %s",
|
|
530
|
+
rd_kafka_err2str(RD_KAFKA_RESP_ERR__INVALID_ARG),
|
|
531
|
+
rd_kafka_err2str(err));
|
|
532
|
+
|
|
533
|
+
TEST_SAY("Broker 2 should be added\n");
|
|
534
|
+
TEST_CALL_ERR__(rd_kafka_mock_broker_add(cluster, 2));
|
|
535
|
+
|
|
536
|
+
TEST_SAY("Broker 2 cannot be added two times\n");
|
|
537
|
+
err = rd_kafka_mock_broker_add(cluster, 2);
|
|
538
|
+
TEST_ASSERT(err == RD_KAFKA_RESP_ERR__INVALID_ARG,
|
|
539
|
+
"Expected error %s, got %s",
|
|
540
|
+
rd_kafka_err2str(RD_KAFKA_RESP_ERR__INVALID_ARG),
|
|
541
|
+
rd_kafka_err2str(err));
|
|
542
|
+
|
|
543
|
+
test_mock_cluster_destroy(cluster);
|
|
544
|
+
|
|
545
|
+
SUB_TEST_PASS();
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
int main_0151_purge_brokers_mock(int argc, char **argv) {
|
|
549
|
+
|
|
550
|
+
if (test_needs_auth()) {
|
|
551
|
+
TEST_SKIP("Mock cluster does not support SSL/SASL\n");
|
|
552
|
+
return 0;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
do_test_add_same_broker_id();
|
|
556
|
+
|
|
557
|
+
do_test_replace_with_new_cluster();
|
|
558
|
+
|
|
559
|
+
do_test_cluster_roll();
|
|
560
|
+
|
|
561
|
+
do_test_remove_then_add();
|
|
562
|
+
|
|
563
|
+
do_test_down_then_up_no_rebootstrap_loop();
|
|
564
|
+
|
|
565
|
+
return 0;
|
|
566
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2025, Confluent Inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
#include "test.h"
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @brief Verify the case where there are no bootstrap servers
|
|
33
|
+
* and the client is re-bootstrapped after brokers were added
|
|
34
|
+
* manually.
|
|
35
|
+
*/
|
|
36
|
+
static void
|
|
37
|
+
do_test_rebootstrap_local_no_bootstrap_servers(rd_kafka_type_t rk_type) {
|
|
38
|
+
rd_kafka_conf_t *conf;
|
|
39
|
+
rd_kafka_t *rk;
|
|
40
|
+
|
|
41
|
+
SUB_TEST_QUICK("%s",
|
|
42
|
+
rk_type == RD_KAFKA_PRODUCER ? "producer" : "consumer");
|
|
43
|
+
test_conf_init(&conf, NULL, 30);
|
|
44
|
+
rk = test_create_handle(rk_type, conf);
|
|
45
|
+
rd_kafka_brokers_add(rk, "localhost:9999");
|
|
46
|
+
|
|
47
|
+
/* Give it time to trigger ALL_BROKERS_DOWN */
|
|
48
|
+
rd_sleep(1);
|
|
49
|
+
rd_kafka_destroy(rk);
|
|
50
|
+
SUB_TEST_PASS();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
int main_0152_rebootstrap_local(int argc, char **argv) {
|
|
54
|
+
|
|
55
|
+
do_test_rebootstrap_local_no_bootstrap_servers(RD_KAFKA_PRODUCER);
|
|
56
|
+
do_test_rebootstrap_local_no_bootstrap_servers(RD_KAFKA_CONSUMER);
|
|
57
|
+
|
|
58
|
+
return 0;
|
|
59
|
+
}
|