@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,181 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2020-2022, Magnus Edenhill
|
|
5
|
+
* 2025, Confluent Inc.
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
12
|
+
* this list of conditions and the following disclaimer.
|
|
13
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
14
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
15
|
+
* and/or other materials provided with the distribution.
|
|
16
|
+
*
|
|
17
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
18
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
19
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
20
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
21
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
22
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
23
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
24
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
25
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
26
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
27
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#include "test.h"
|
|
31
|
+
|
|
32
|
+
#include "rdkafka.h"
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @name Verify KIP-511, client.software.name and client.software.version
|
|
36
|
+
*
|
|
37
|
+
*/
|
|
38
|
+
static char jmx_cmd[512];
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @brief Verify that the expected software name and version is reported
|
|
42
|
+
* in JMX metrics.
|
|
43
|
+
*/
|
|
44
|
+
static void jmx_verify(const char *exp_swname, const char *exp_swversion) {
|
|
45
|
+
#if _WIN32
|
|
46
|
+
return;
|
|
47
|
+
#else
|
|
48
|
+
int r;
|
|
49
|
+
char cmd[512 + 256];
|
|
50
|
+
|
|
51
|
+
if (!*jmx_cmd)
|
|
52
|
+
return;
|
|
53
|
+
|
|
54
|
+
rd_snprintf(cmd, sizeof(cmd),
|
|
55
|
+
"%s | "
|
|
56
|
+
"grep -F 'clientSoftwareName=%s,clientSoftwareVersion=%s'",
|
|
57
|
+
jmx_cmd, exp_swname, exp_swversion ? exp_swversion : "");
|
|
58
|
+
r = system(cmd);
|
|
59
|
+
if (WEXITSTATUS(r) == 1)
|
|
60
|
+
TEST_FAIL(
|
|
61
|
+
"Expected software name and version not found in "
|
|
62
|
+
"JMX metrics with command \"%s\"",
|
|
63
|
+
cmd);
|
|
64
|
+
else if (r == -1 || WIFSIGNALED(r) || WEXITSTATUS(r))
|
|
65
|
+
TEST_FAIL(
|
|
66
|
+
"Failed to execute JmxTool command \"%s\": "
|
|
67
|
+
"exit code %d",
|
|
68
|
+
cmd, r);
|
|
69
|
+
|
|
70
|
+
TEST_SAY(
|
|
71
|
+
"Expected software name \"%s\" and version \"%s\" "
|
|
72
|
+
"found in JMX metrics\n",
|
|
73
|
+
exp_swname, exp_swversion);
|
|
74
|
+
#endif /* !_WIN32 */
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
static void do_test_swname(const char *broker,
|
|
79
|
+
const char *swname,
|
|
80
|
+
const char *swversion,
|
|
81
|
+
const char *exp_swname,
|
|
82
|
+
const char *exp_swversion) {
|
|
83
|
+
rd_kafka_t *rk;
|
|
84
|
+
rd_kafka_conf_t *conf;
|
|
85
|
+
const rd_kafka_metadata_t *md;
|
|
86
|
+
rd_kafka_resp_err_t err;
|
|
87
|
+
|
|
88
|
+
TEST_SAY(_C_MAG
|
|
89
|
+
"[ Test client.software.name=%s, "
|
|
90
|
+
"client.software.version=%s ]\n",
|
|
91
|
+
swname ? swname : "NULL", swversion ? swversion : "NULL");
|
|
92
|
+
|
|
93
|
+
test_conf_init(&conf, NULL, 30 /* jmxtool is severely slow */);
|
|
94
|
+
if (broker)
|
|
95
|
+
test_conf_set(conf, "bootstrap.servers", broker);
|
|
96
|
+
if (swname)
|
|
97
|
+
test_conf_set(conf, "client.software.name", swname);
|
|
98
|
+
if (swversion)
|
|
99
|
+
test_conf_set(conf, "client.software.version", swversion);
|
|
100
|
+
rk = test_create_handle(RD_KAFKA_PRODUCER, conf);
|
|
101
|
+
|
|
102
|
+
/* Trigger a metadata request so we know we're connected. */
|
|
103
|
+
err = rd_kafka_metadata(rk, 0, NULL, &md, tmout_multip(5000));
|
|
104
|
+
TEST_ASSERT(!err, "metadata() failed: %s", rd_kafka_err2str(err));
|
|
105
|
+
rd_kafka_metadata_destroy(md);
|
|
106
|
+
|
|
107
|
+
/* Verify JMX metrics, if possible */
|
|
108
|
+
jmx_verify(exp_swname, exp_swversion);
|
|
109
|
+
|
|
110
|
+
rd_kafka_destroy(rk);
|
|
111
|
+
|
|
112
|
+
TEST_SAY(_C_GRN
|
|
113
|
+
"[ Test client.software.name=%s, "
|
|
114
|
+
"client.software.version=%s: PASS ]\n",
|
|
115
|
+
swname ? swname : "NULL", swversion ? swversion : "NULL");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
int main_0016_client_swname(int argc, char **argv) {
|
|
119
|
+
const char *broker;
|
|
120
|
+
const char *kafka_path;
|
|
121
|
+
const char *jmx_port;
|
|
122
|
+
const char *reason = NULL;
|
|
123
|
+
|
|
124
|
+
if (test_needs_auth()) {
|
|
125
|
+
TEST_SKIP("Cannot run this test with SSL/SASL\n");
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* If available, use the Kafka JmxTool to query software name
|
|
130
|
+
* in broker JMX metrics */
|
|
131
|
+
if (!(broker = test_getenv("BROKER_ADDRESS_2", NULL)))
|
|
132
|
+
reason =
|
|
133
|
+
"Env var BROKER_ADDRESS_2 missing "
|
|
134
|
+
"(not running in trivup or trivup too old?)";
|
|
135
|
+
else if (test_broker_version < TEST_BRKVER(2, 5, 0, 0))
|
|
136
|
+
reason =
|
|
137
|
+
"Client software JMX metrics not exposed prior to "
|
|
138
|
+
"Apache Kafka 2.5.0.0";
|
|
139
|
+
else if (!(kafka_path = test_getenv("KAFKA_PATH", NULL)))
|
|
140
|
+
reason = "Env var KAFKA_PATH missing (not running in trivup?)";
|
|
141
|
+
else if (!(jmx_port = test_getenv("BROKER_JMX_PORT_2", NULL)))
|
|
142
|
+
reason =
|
|
143
|
+
"Env var BROKER_JMX_PORT_2 missing "
|
|
144
|
+
"(not running in trivup or trivup too old?)";
|
|
145
|
+
else {
|
|
146
|
+
rd_bool_t apache_kafka_4 =
|
|
147
|
+
test_broker_version >= TEST_BRKVER(4, 0, 0, 0);
|
|
148
|
+
rd_snprintf(jmx_cmd, sizeof(jmx_cmd),
|
|
149
|
+
"%s/bin/kafka-run-class.sh %s "
|
|
150
|
+
"--jmx-url "
|
|
151
|
+
"service:jmx:rmi:///jndi/rmi://:%s/jmxrmi "
|
|
152
|
+
" --object-name '*:"
|
|
153
|
+
"clientSoftwareName=*,"
|
|
154
|
+
"clientSoftwareVersion=*,*' "
|
|
155
|
+
" --one-time true | "
|
|
156
|
+
"grep clientSoftware",
|
|
157
|
+
kafka_path,
|
|
158
|
+
apache_kafka_4 ? "org.apache.kafka.tools.JmxTool"
|
|
159
|
+
: "kafka.tools.JmxTool",
|
|
160
|
+
jmx_port);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
if (reason)
|
|
164
|
+
TEST_WARN("Will not be able to verify JMX metrics: %s\n",
|
|
165
|
+
reason);
|
|
166
|
+
|
|
167
|
+
/* Default values, the version is not checked since the
|
|
168
|
+
* built librdkafka may not use the same string, and additionally we
|
|
169
|
+
* don't want to perform the string mangling here to make the string
|
|
170
|
+
* protocol safe. */
|
|
171
|
+
do_test_swname(broker, NULL, NULL, "librdkafka", NULL);
|
|
172
|
+
/* Properly formatted */
|
|
173
|
+
do_test_swname(broker, "my-little-version", "1.2.3.4",
|
|
174
|
+
"my-little-version", "1.2.3.4");
|
|
175
|
+
/* Containing invalid characters, verify that safing the strings works
|
|
176
|
+
*/
|
|
177
|
+
do_test_swname(broker, "?1?this needs! ESCAPING?", "--v99.11 ~b~",
|
|
178
|
+
"1-this-needs--ESCAPING", "v99.11--b");
|
|
179
|
+
|
|
180
|
+
return 0;
|
|
181
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2012-2022, Magnus Edenhill
|
|
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
|
+
/* Typical include path would be <librdkafka/rdkafka.h>, but this program
|
|
32
|
+
* is built from within the librdkafka source tree and thus differs. */
|
|
33
|
+
#include "rdkafka.h" /* for Kafka driver */
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Basic compression tests, with rather lacking verification.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
int main_0017_compression(int argc, char **argv) {
|
|
42
|
+
rd_kafka_t *rk_p, *rk_c;
|
|
43
|
+
const int msg_cnt = 1000;
|
|
44
|
+
int msg_base = 0;
|
|
45
|
+
uint64_t testid;
|
|
46
|
+
#define CODEC_CNT 5
|
|
47
|
+
const char *codecs[CODEC_CNT + 1] = {"none",
|
|
48
|
+
#if WITH_ZLIB
|
|
49
|
+
"gzip",
|
|
50
|
+
#endif
|
|
51
|
+
#if WITH_SNAPPY
|
|
52
|
+
"snappy",
|
|
53
|
+
#endif
|
|
54
|
+
#if WITH_ZSTD
|
|
55
|
+
"zstd",
|
|
56
|
+
#endif
|
|
57
|
+
"lz4", NULL};
|
|
58
|
+
char *topics[CODEC_CNT];
|
|
59
|
+
const int32_t partition = 0;
|
|
60
|
+
int i;
|
|
61
|
+
int crc;
|
|
62
|
+
|
|
63
|
+
testid = test_id_generate();
|
|
64
|
+
|
|
65
|
+
/* Produce messages */
|
|
66
|
+
rk_p = test_create_producer();
|
|
67
|
+
for (i = 0; codecs[i] != NULL; i++) {
|
|
68
|
+
rd_kafka_topic_t *rkt_p;
|
|
69
|
+
|
|
70
|
+
topics[i] = rd_strdup(test_mk_topic_name(codecs[i], 1));
|
|
71
|
+
TEST_SAY(
|
|
72
|
+
"Produce %d messages with %s compression to "
|
|
73
|
+
"topic %s\n",
|
|
74
|
+
msg_cnt, codecs[i], topics[i]);
|
|
75
|
+
rkt_p = test_create_producer_topic(
|
|
76
|
+
rk_p, topics[i], "compression.codec", codecs[i], NULL);
|
|
77
|
+
test_wait_topic_exists(rk_p, topics[i], 5000);
|
|
78
|
+
|
|
79
|
+
/* Produce small message that will not decrease with
|
|
80
|
+
* compression (issue #781) */
|
|
81
|
+
test_produce_msgs(rk_p, rkt_p, testid, partition,
|
|
82
|
+
msg_base + (partition * msg_cnt), 1, NULL, 5);
|
|
83
|
+
|
|
84
|
+
/* Produce standard sized messages */
|
|
85
|
+
test_produce_msgs(rk_p, rkt_p, testid, partition,
|
|
86
|
+
msg_base + (partition * msg_cnt) + 1,
|
|
87
|
+
msg_cnt - 1, NULL, 512);
|
|
88
|
+
rd_kafka_topic_destroy(rkt_p);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
rd_kafka_destroy(rk_p);
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/* restart timeout (mainly for helgrind use since it is very slow) */
|
|
95
|
+
test_timeout_set(30);
|
|
96
|
+
|
|
97
|
+
/* Consume messages: Without and with CRC checking */
|
|
98
|
+
for (crc = 0; crc < 2; crc++) {
|
|
99
|
+
const char *crc_tof = crc ? "true" : "false";
|
|
100
|
+
rd_kafka_conf_t *conf;
|
|
101
|
+
|
|
102
|
+
test_conf_init(&conf, NULL, 0);
|
|
103
|
+
test_conf_set(conf, "check.crcs", crc_tof);
|
|
104
|
+
|
|
105
|
+
rk_c = test_create_consumer(NULL, NULL, conf, NULL);
|
|
106
|
+
|
|
107
|
+
for (i = 0; codecs[i] != NULL; i++) {
|
|
108
|
+
rd_kafka_topic_t *rkt_c =
|
|
109
|
+
rd_kafka_topic_new(rk_c, topics[i], NULL);
|
|
110
|
+
|
|
111
|
+
TEST_SAY("Consume %d messages from topic %s (crc=%s)\n",
|
|
112
|
+
msg_cnt, topics[i], crc_tof);
|
|
113
|
+
/* Start consuming */
|
|
114
|
+
test_consumer_start(codecs[i], rkt_c, partition,
|
|
115
|
+
RD_KAFKA_OFFSET_BEGINNING);
|
|
116
|
+
|
|
117
|
+
/* Consume messages */
|
|
118
|
+
test_consume_msgs(
|
|
119
|
+
codecs[i], rkt_c, testid, partition,
|
|
120
|
+
/* Use offset 0 here, which is wrong, should
|
|
121
|
+
* be TEST_NO_SEEK, but it exposed a bug
|
|
122
|
+
* where the Offset query was postponed
|
|
123
|
+
* till after the seek, causing messages
|
|
124
|
+
* to be replayed. */
|
|
125
|
+
0, msg_base, msg_cnt, 1 /* parse format */);
|
|
126
|
+
|
|
127
|
+
test_consumer_stop(codecs[i], rkt_c, partition);
|
|
128
|
+
|
|
129
|
+
rd_kafka_topic_destroy(rkt_c);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
rd_kafka_destroy(rk_c);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
for (i = 0; codecs[i] != NULL; i++)
|
|
136
|
+
rd_free(topics[i]);
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
return 0;
|
|
140
|
+
}
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2012-2022, Magnus Edenhill
|
|
5
|
+
* 2025, Confluent Inc.
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
12
|
+
* this list of conditions and the following disclaimer.
|
|
13
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
14
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
15
|
+
* and/or other materials provided with the distribution.
|
|
16
|
+
*
|
|
17
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
18
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
19
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
20
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
21
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
22
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
23
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
24
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
25
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
26
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
27
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#include "test.h"
|
|
31
|
+
#include "rdstring.h"
|
|
32
|
+
|
|
33
|
+
/* Typical include path would be <librdkafka/rdkafka.h>, but this program
|
|
34
|
+
* is built from within the librdkafka source tree and thus differs. */
|
|
35
|
+
#include "rdkafka.h" /* for Kafka driver */
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* KafkaConsumer balanced group testing: termination
|
|
40
|
+
*
|
|
41
|
+
* Runs two consumers subscribing to the same topics, waits for both to
|
|
42
|
+
* get an assignment and then closes one of them.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
static int assign_cnt = 0;
|
|
47
|
+
static int consumed_msg_cnt = 0;
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
static void rebalance_cb(rd_kafka_t *rk,
|
|
51
|
+
rd_kafka_resp_err_t err,
|
|
52
|
+
rd_kafka_topic_partition_list_t *partitions,
|
|
53
|
+
void *opaque) {
|
|
54
|
+
char *memberid = rd_kafka_memberid(rk);
|
|
55
|
+
|
|
56
|
+
TEST_SAY("%s: MemberId \"%s\": Consumer group rebalanced: %s\n",
|
|
57
|
+
rd_kafka_name(rk), memberid, rd_kafka_err2str(err));
|
|
58
|
+
|
|
59
|
+
if (memberid)
|
|
60
|
+
free(memberid);
|
|
61
|
+
|
|
62
|
+
test_print_partition_list(partitions);
|
|
63
|
+
|
|
64
|
+
switch (err) {
|
|
65
|
+
case RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS:
|
|
66
|
+
assign_cnt++;
|
|
67
|
+
test_consumer_assign_by_rebalance_protocol("rebalance", rk,
|
|
68
|
+
partitions);
|
|
69
|
+
break;
|
|
70
|
+
|
|
71
|
+
case RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS:
|
|
72
|
+
if (assign_cnt == 0)
|
|
73
|
+
TEST_FAIL("asymetric rebalance_cb\n");
|
|
74
|
+
assign_cnt--;
|
|
75
|
+
test_consumer_unassign_by_rebalance_protocol("rebalance", rk,
|
|
76
|
+
partitions);
|
|
77
|
+
break;
|
|
78
|
+
|
|
79
|
+
default:
|
|
80
|
+
TEST_FAIL("rebalance failed: %s\n", rd_kafka_err2str(err));
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
static void consume_all(rd_kafka_t **rk_c,
|
|
87
|
+
int rk_cnt,
|
|
88
|
+
int exp_msg_cnt,
|
|
89
|
+
int max_time /*ms*/) {
|
|
90
|
+
int64_t ts_start = test_clock();
|
|
91
|
+
int i;
|
|
92
|
+
|
|
93
|
+
max_time *= 1000;
|
|
94
|
+
while (ts_start + max_time > test_clock()) {
|
|
95
|
+
for (i = 0; i < rk_cnt; i++) {
|
|
96
|
+
rd_kafka_message_t *rkmsg;
|
|
97
|
+
|
|
98
|
+
if (!rk_c[i])
|
|
99
|
+
continue;
|
|
100
|
+
|
|
101
|
+
rkmsg = rd_kafka_consumer_poll(rk_c[i], 500);
|
|
102
|
+
|
|
103
|
+
if (!rkmsg)
|
|
104
|
+
continue;
|
|
105
|
+
else if (rkmsg->err)
|
|
106
|
+
TEST_SAY(
|
|
107
|
+
"Message error "
|
|
108
|
+
"(at offset %" PRId64
|
|
109
|
+
" after "
|
|
110
|
+
"%d/%d messages and %dms): %s\n",
|
|
111
|
+
rkmsg->offset, consumed_msg_cnt,
|
|
112
|
+
exp_msg_cnt,
|
|
113
|
+
(int)(test_clock() - ts_start) / 1000,
|
|
114
|
+
rd_kafka_message_errstr(rkmsg));
|
|
115
|
+
else
|
|
116
|
+
consumed_msg_cnt++;
|
|
117
|
+
|
|
118
|
+
rd_kafka_message_destroy(rkmsg);
|
|
119
|
+
|
|
120
|
+
if (consumed_msg_cnt >= exp_msg_cnt) {
|
|
121
|
+
static int once = 0;
|
|
122
|
+
if (!once++)
|
|
123
|
+
TEST_SAY("All messages consumed\n");
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
struct args {
|
|
131
|
+
rd_kafka_t *c;
|
|
132
|
+
rd_kafka_queue_t *queue;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
static int poller_thread_main(void *p) {
|
|
136
|
+
struct args *args = (struct args *)p;
|
|
137
|
+
|
|
138
|
+
while (!rd_kafka_consumer_closed(args->c)) {
|
|
139
|
+
rd_kafka_message_t *rkm;
|
|
140
|
+
|
|
141
|
+
/* Using a long timeout (1 minute) to verify that the
|
|
142
|
+
* queue is woken when close is done. */
|
|
143
|
+
rkm = rd_kafka_consume_queue(args->queue, 60 * 1000);
|
|
144
|
+
if (rkm)
|
|
145
|
+
rd_kafka_message_destroy(rkm);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @brief Close consumer using async queue.
|
|
153
|
+
*/
|
|
154
|
+
static void consumer_close_queue(rd_kafka_t *c) {
|
|
155
|
+
/* Use the standard consumer queue rather than a temporary queue,
|
|
156
|
+
* the latter is covered by test 0116. */
|
|
157
|
+
rd_kafka_queue_t *queue = rd_kafka_queue_get_consumer(c);
|
|
158
|
+
struct args args = {c, queue};
|
|
159
|
+
thrd_t thrd;
|
|
160
|
+
int ret;
|
|
161
|
+
|
|
162
|
+
/* Spin up poller thread */
|
|
163
|
+
if (thrd_create(&thrd, poller_thread_main, (void *)&args) !=
|
|
164
|
+
thrd_success)
|
|
165
|
+
TEST_FAIL("Failed to create thread");
|
|
166
|
+
|
|
167
|
+
TEST_SAY("Closing consumer %s using queue\n", rd_kafka_name(c));
|
|
168
|
+
TEST_CALL_ERROR__(rd_kafka_consumer_close_queue(c, queue));
|
|
169
|
+
|
|
170
|
+
if (thrd_join(thrd, &ret) != thrd_success)
|
|
171
|
+
TEST_FAIL("thrd_join failed");
|
|
172
|
+
|
|
173
|
+
rd_kafka_queue_destroy(queue);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
static void do_test(rd_bool_t with_queue) {
|
|
178
|
+
const char *topic = test_mk_topic_name(__FUNCTION__, 1);
|
|
179
|
+
#define _CONS_CNT 2
|
|
180
|
+
rd_kafka_t *rk_p, *rk_c[_CONS_CNT];
|
|
181
|
+
rd_kafka_topic_t *rkt_p;
|
|
182
|
+
int msg_cnt = test_quick ? 100 : 1000;
|
|
183
|
+
int msg_base = 0;
|
|
184
|
+
int partition_cnt = 2;
|
|
185
|
+
int partition;
|
|
186
|
+
uint64_t testid;
|
|
187
|
+
rd_kafka_topic_conf_t *default_topic_conf;
|
|
188
|
+
rd_kafka_topic_partition_list_t *topics;
|
|
189
|
+
rd_kafka_resp_err_t err;
|
|
190
|
+
test_timing_t t_assign, t_consume;
|
|
191
|
+
char errstr[512];
|
|
192
|
+
int i;
|
|
193
|
+
|
|
194
|
+
SUB_TEST("with_queue=%s", RD_STR_ToF(with_queue));
|
|
195
|
+
|
|
196
|
+
testid = test_id_generate();
|
|
197
|
+
|
|
198
|
+
/* Produce messages */
|
|
199
|
+
rk_p = test_create_producer();
|
|
200
|
+
rkt_p = test_create_producer_topic(rk_p, topic, NULL);
|
|
201
|
+
test_wait_topic_exists(rk_p, topic, 5000);
|
|
202
|
+
|
|
203
|
+
for (partition = 0; partition < partition_cnt; partition++) {
|
|
204
|
+
test_produce_msgs(rk_p, rkt_p, testid, partition,
|
|
205
|
+
msg_base + (partition * msg_cnt), msg_cnt,
|
|
206
|
+
NULL, 0);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
rd_kafka_topic_destroy(rkt_p);
|
|
210
|
+
rd_kafka_destroy(rk_p);
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
test_conf_init(NULL, &default_topic_conf,
|
|
214
|
+
5 + ((test_session_timeout_ms * 3 * 2) / 1000));
|
|
215
|
+
if (rd_kafka_topic_conf_set(default_topic_conf, "auto.offset.reset",
|
|
216
|
+
"smallest", errstr,
|
|
217
|
+
sizeof(errstr)) != RD_KAFKA_CONF_OK)
|
|
218
|
+
TEST_FAIL("%s\n", errstr);
|
|
219
|
+
|
|
220
|
+
/* Fill in topic subscription set */
|
|
221
|
+
topics = rd_kafka_topic_partition_list_new(1);
|
|
222
|
+
rd_kafka_topic_partition_list_add(topics, topic, -1);
|
|
223
|
+
|
|
224
|
+
/* Create consumers and start subscription */
|
|
225
|
+
for (i = 0; i < _CONS_CNT; i++) {
|
|
226
|
+
rk_c[i] = test_create_consumer(
|
|
227
|
+
topic /*group_id*/, rebalance_cb, NULL,
|
|
228
|
+
rd_kafka_topic_conf_dup(default_topic_conf));
|
|
229
|
+
|
|
230
|
+
err = rd_kafka_poll_set_consumer(rk_c[i]);
|
|
231
|
+
if (err)
|
|
232
|
+
TEST_FAIL("poll_set_consumer: %s\n",
|
|
233
|
+
rd_kafka_err2str(err));
|
|
234
|
+
|
|
235
|
+
err = rd_kafka_subscribe(rk_c[i], topics);
|
|
236
|
+
if (err)
|
|
237
|
+
TEST_FAIL("subscribe: %s\n", rd_kafka_err2str(err));
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
rd_kafka_topic_conf_destroy(default_topic_conf);
|
|
241
|
+
|
|
242
|
+
rd_kafka_topic_partition_list_destroy(topics);
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
/* Wait for both consumers to get an assignment */
|
|
246
|
+
TEST_SAY("Awaiting assignments for %d consumer(s)\n", _CONS_CNT);
|
|
247
|
+
TIMING_START(&t_assign, "WAIT.ASSIGN");
|
|
248
|
+
while (assign_cnt < _CONS_CNT)
|
|
249
|
+
consume_all(rk_c, _CONS_CNT, msg_cnt,
|
|
250
|
+
test_session_timeout_ms + 3000);
|
|
251
|
+
TIMING_STOP(&t_assign);
|
|
252
|
+
|
|
253
|
+
/* Now close one of the consumers, this will cause a rebalance. */
|
|
254
|
+
TEST_SAY("Closing down 1/%d consumer(s): %s\n", _CONS_CNT,
|
|
255
|
+
rd_kafka_name(rk_c[0]));
|
|
256
|
+
if (with_queue)
|
|
257
|
+
consumer_close_queue(rk_c[0]);
|
|
258
|
+
else
|
|
259
|
+
TEST_CALL_ERR__(rd_kafka_consumer_close(rk_c[0]));
|
|
260
|
+
|
|
261
|
+
rd_kafka_destroy(rk_c[0]);
|
|
262
|
+
rk_c[0] = NULL;
|
|
263
|
+
|
|
264
|
+
/* Let remaining consumers run for a while to take over the now
|
|
265
|
+
* lost partitions. */
|
|
266
|
+
|
|
267
|
+
/* Callback count can vary in KIP-848 */
|
|
268
|
+
if (test_consumer_group_protocol_classic() &&
|
|
269
|
+
assign_cnt != _CONS_CNT - 1)
|
|
270
|
+
TEST_FAIL("assign_cnt %d, should be %d\n", assign_cnt,
|
|
271
|
+
_CONS_CNT - 1);
|
|
272
|
+
|
|
273
|
+
TIMING_START(&t_consume, "CONSUME.WAIT");
|
|
274
|
+
consume_all(rk_c, _CONS_CNT, msg_cnt, test_session_timeout_ms + 3000);
|
|
275
|
+
TIMING_STOP(&t_consume);
|
|
276
|
+
|
|
277
|
+
TEST_SAY("Closing remaining consumers\n");
|
|
278
|
+
for (i = 0; i < _CONS_CNT; i++) {
|
|
279
|
+
test_timing_t t_close;
|
|
280
|
+
rd_kafka_topic_partition_list_t *sub;
|
|
281
|
+
int j;
|
|
282
|
+
|
|
283
|
+
if (!rk_c[i])
|
|
284
|
+
continue;
|
|
285
|
+
|
|
286
|
+
/* Query subscription */
|
|
287
|
+
err = rd_kafka_subscription(rk_c[i], &sub);
|
|
288
|
+
if (err)
|
|
289
|
+
TEST_FAIL("%s: subscription() failed: %s\n",
|
|
290
|
+
rd_kafka_name(rk_c[i]),
|
|
291
|
+
rd_kafka_err2str(err));
|
|
292
|
+
TEST_SAY("%s: subscription (%d):\n", rd_kafka_name(rk_c[i]),
|
|
293
|
+
sub->cnt);
|
|
294
|
+
for (j = 0; j < sub->cnt; j++)
|
|
295
|
+
TEST_SAY(" %s\n", sub->elems[j].topic);
|
|
296
|
+
rd_kafka_topic_partition_list_destroy(sub);
|
|
297
|
+
|
|
298
|
+
/* Run an explicit unsubscribe() (async) prior to close()
|
|
299
|
+
* to trigger race condition issues on termination. */
|
|
300
|
+
TEST_SAY("Unsubscribing instance %s\n", rd_kafka_name(rk_c[i]));
|
|
301
|
+
err = rd_kafka_unsubscribe(rk_c[i]);
|
|
302
|
+
if (err)
|
|
303
|
+
TEST_FAIL("%s: unsubscribe failed: %s\n",
|
|
304
|
+
rd_kafka_name(rk_c[i]),
|
|
305
|
+
rd_kafka_err2str(err));
|
|
306
|
+
|
|
307
|
+
TEST_SAY("Closing %s\n", rd_kafka_name(rk_c[i]));
|
|
308
|
+
TIMING_START(&t_close, "CONSUMER.CLOSE");
|
|
309
|
+
if (with_queue)
|
|
310
|
+
consumer_close_queue(rk_c[i]);
|
|
311
|
+
else
|
|
312
|
+
TEST_CALL_ERR__(rd_kafka_consumer_close(rk_c[i]));
|
|
313
|
+
TIMING_STOP(&t_close);
|
|
314
|
+
|
|
315
|
+
rd_kafka_destroy(rk_c[i]);
|
|
316
|
+
rk_c[i] = NULL;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
TEST_SAY("%d/%d messages consumed\n", consumed_msg_cnt, msg_cnt);
|
|
320
|
+
if (consumed_msg_cnt < msg_cnt)
|
|
321
|
+
TEST_FAIL("Only %d/%d messages were consumed\n",
|
|
322
|
+
consumed_msg_cnt, msg_cnt);
|
|
323
|
+
else if (consumed_msg_cnt > msg_cnt)
|
|
324
|
+
TEST_SAY(
|
|
325
|
+
"At least %d/%d messages were consumed "
|
|
326
|
+
"multiple times\n",
|
|
327
|
+
consumed_msg_cnt - msg_cnt, msg_cnt);
|
|
328
|
+
|
|
329
|
+
SUB_TEST_PASS();
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
int main_0018_cgrp_term(int argc, char **argv) {
|
|
334
|
+
do_test(rd_false /* rd_kafka_consumer_close() */);
|
|
335
|
+
do_test(rd_true /* rd_kafka_consumer_close_queue() */);
|
|
336
|
+
|
|
337
|
+
return 0;
|
|
338
|
+
}
|