@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,511 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2012-2022, Magnus Edenhill
|
|
5
|
+
* 2023, 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 "rdkafka.h"
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Verify that long-processing consumer leaves the group during
|
|
35
|
+
* processing, with or without a log queue.
|
|
36
|
+
*
|
|
37
|
+
* MO:
|
|
38
|
+
* - produce messages to a single partition topic.
|
|
39
|
+
* - create two consumers, c1 and c2.
|
|
40
|
+
* - process first message slowly (2 * max.poll.interval.ms)
|
|
41
|
+
* - verify in other consumer that group rebalances after max.poll.interval.ms
|
|
42
|
+
* and the partition is assigned to the other consumer.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @brief Test max.poll.interval.ms without any additional polling.
|
|
47
|
+
*/
|
|
48
|
+
static void do_test(void) {
|
|
49
|
+
const char *topic = test_mk_topic_name("0089_max_poll_interval", 1);
|
|
50
|
+
uint64_t testid;
|
|
51
|
+
const int msgcnt = 10;
|
|
52
|
+
rd_kafka_t *c[2];
|
|
53
|
+
rd_kafka_conf_t *conf;
|
|
54
|
+
int64_t ts_next[2] = {0, 0};
|
|
55
|
+
int64_t ts_exp_msg[2] = {0, 0};
|
|
56
|
+
int cmsgcnt = 0;
|
|
57
|
+
int i;
|
|
58
|
+
int bad = -1;
|
|
59
|
+
|
|
60
|
+
SUB_TEST();
|
|
61
|
+
|
|
62
|
+
testid = test_id_generate();
|
|
63
|
+
|
|
64
|
+
test_create_topic_wait_exists(NULL, topic, 1, 1, 5000);
|
|
65
|
+
|
|
66
|
+
test_produce_msgs_easy(topic, testid, -1, msgcnt);
|
|
67
|
+
|
|
68
|
+
test_conf_init(&conf, NULL, 60);
|
|
69
|
+
|
|
70
|
+
test_conf_set(conf, "session.timeout.ms", "6000");
|
|
71
|
+
test_conf_set(conf, "max.poll.interval.ms", "10000" /*10s*/);
|
|
72
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
73
|
+
|
|
74
|
+
c[0] = test_create_consumer(topic, NULL, rd_kafka_conf_dup(conf), NULL);
|
|
75
|
+
c[1] = test_create_consumer(topic, NULL, conf, NULL);
|
|
76
|
+
|
|
77
|
+
test_consumer_subscribe(c[0], topic);
|
|
78
|
+
test_consumer_subscribe(c[1], topic);
|
|
79
|
+
|
|
80
|
+
while (1) {
|
|
81
|
+
for (i = 0; i < 2; i++) {
|
|
82
|
+
int64_t now;
|
|
83
|
+
rd_kafka_message_t *rkm;
|
|
84
|
+
|
|
85
|
+
/* Consumer is "processing" */
|
|
86
|
+
if (ts_next[i] > test_clock())
|
|
87
|
+
continue;
|
|
88
|
+
|
|
89
|
+
rkm = rd_kafka_consumer_poll(c[i], 100);
|
|
90
|
+
if (!rkm)
|
|
91
|
+
continue;
|
|
92
|
+
|
|
93
|
+
if (rkm->err) {
|
|
94
|
+
TEST_WARN(
|
|
95
|
+
"Consumer %d error: %s: "
|
|
96
|
+
"ignoring\n",
|
|
97
|
+
i, rd_kafka_message_errstr(rkm));
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
now = test_clock();
|
|
102
|
+
|
|
103
|
+
cmsgcnt++;
|
|
104
|
+
|
|
105
|
+
TEST_SAY(
|
|
106
|
+
"Consumer %d received message (#%d) "
|
|
107
|
+
"at offset %" PRId64 "\n",
|
|
108
|
+
i, cmsgcnt, rkm->offset);
|
|
109
|
+
|
|
110
|
+
if (ts_exp_msg[i]) {
|
|
111
|
+
/* This consumer is expecting a message
|
|
112
|
+
* after a certain time, namely after the
|
|
113
|
+
* rebalance following max.poll.. being
|
|
114
|
+
* exceeded in the other consumer */
|
|
115
|
+
TEST_ASSERT(
|
|
116
|
+
now > ts_exp_msg[i],
|
|
117
|
+
"Consumer %d: did not expect "
|
|
118
|
+
"message for at least %dms",
|
|
119
|
+
i, (int)((ts_exp_msg[i] - now) / 1000));
|
|
120
|
+
TEST_ASSERT(
|
|
121
|
+
now < ts_exp_msg[i] + 10000 * 1000,
|
|
122
|
+
"Consumer %d: expected message "
|
|
123
|
+
"within 10s, not after %dms",
|
|
124
|
+
i, (int)((now - ts_exp_msg[i]) / 1000));
|
|
125
|
+
TEST_SAY(
|
|
126
|
+
"Consumer %d: received message "
|
|
127
|
+
"at offset %" PRId64 " after rebalance\n",
|
|
128
|
+
i, rkm->offset);
|
|
129
|
+
|
|
130
|
+
rd_kafka_message_destroy(rkm);
|
|
131
|
+
goto done;
|
|
132
|
+
|
|
133
|
+
} else if (cmsgcnt == 1) {
|
|
134
|
+
/* Process this message for 20s */
|
|
135
|
+
ts_next[i] = now + (20000 * 1000);
|
|
136
|
+
|
|
137
|
+
/* Exp message on other consumer after
|
|
138
|
+
* max.poll.interval.ms */
|
|
139
|
+
ts_exp_msg[i ^ 1] = now + (10000 * 1000);
|
|
140
|
+
|
|
141
|
+
/* This is the bad consumer */
|
|
142
|
+
bad = i;
|
|
143
|
+
|
|
144
|
+
TEST_SAY(
|
|
145
|
+
"Consumer %d processing message at "
|
|
146
|
+
"offset %" PRId64 "\n",
|
|
147
|
+
i, rkm->offset);
|
|
148
|
+
rd_kafka_message_destroy(rkm);
|
|
149
|
+
} else {
|
|
150
|
+
rd_kafka_message_destroy(rkm);
|
|
151
|
+
|
|
152
|
+
TEST_FAIL(
|
|
153
|
+
"Consumer %d did not expect "
|
|
154
|
+
"a message",
|
|
155
|
+
i);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
done:
|
|
161
|
+
|
|
162
|
+
TEST_ASSERT(bad != -1, "Bad consumer not set");
|
|
163
|
+
|
|
164
|
+
/* Wait for error ERR__MAX_POLL_EXCEEDED on the bad consumer. */
|
|
165
|
+
while (1) {
|
|
166
|
+
rd_kafka_message_t *rkm;
|
|
167
|
+
|
|
168
|
+
rkm = rd_kafka_consumer_poll(c[bad], 1000);
|
|
169
|
+
TEST_ASSERT(rkm, "Expected consumer result within 1s");
|
|
170
|
+
|
|
171
|
+
TEST_ASSERT(rkm->err, "Did not expect message on bad consumer");
|
|
172
|
+
|
|
173
|
+
TEST_SAY("Consumer error: %s: %s\n",
|
|
174
|
+
rd_kafka_err2name(rkm->err),
|
|
175
|
+
rd_kafka_message_errstr(rkm));
|
|
176
|
+
|
|
177
|
+
if (rkm->err == RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED) {
|
|
178
|
+
rd_kafka_message_destroy(rkm);
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
rd_kafka_message_destroy(rkm);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
for (i = 0; i < 2; i++)
|
|
187
|
+
rd_kafka_destroy_flags(c[i],
|
|
188
|
+
RD_KAFKA_DESTROY_F_NO_CONSUMER_CLOSE);
|
|
189
|
+
|
|
190
|
+
SUB_TEST_PASS();
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* @brief Test max.poll.interval.ms while polling log queue.
|
|
196
|
+
*/
|
|
197
|
+
static void do_test_with_log_queue(void) {
|
|
198
|
+
const char *topic = test_mk_topic_name("0089_max_poll_interval", 1);
|
|
199
|
+
uint64_t testid;
|
|
200
|
+
const int msgcnt = 10;
|
|
201
|
+
rd_kafka_t *c[2];
|
|
202
|
+
rd_kafka_conf_t *conf;
|
|
203
|
+
rd_kafka_queue_t *logq[2];
|
|
204
|
+
int64_t ts_next[2] = {0, 0};
|
|
205
|
+
int64_t ts_exp_msg[2] = {0, 0};
|
|
206
|
+
int cmsgcnt = 0;
|
|
207
|
+
int i;
|
|
208
|
+
int bad = -1;
|
|
209
|
+
char errstr[512];
|
|
210
|
+
|
|
211
|
+
SUB_TEST();
|
|
212
|
+
|
|
213
|
+
testid = test_id_generate();
|
|
214
|
+
|
|
215
|
+
test_create_topic_wait_exists(NULL, topic, 1, 1, 5000);
|
|
216
|
+
|
|
217
|
+
test_produce_msgs_easy(topic, testid, -1, msgcnt);
|
|
218
|
+
|
|
219
|
+
test_conf_init(&conf, NULL, 60);
|
|
220
|
+
|
|
221
|
+
test_conf_set(conf, "session.timeout.ms", "6000");
|
|
222
|
+
test_conf_set(conf, "max.poll.interval.ms", "10000" /*10s*/);
|
|
223
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
224
|
+
test_conf_set(conf, "log.queue", "true");
|
|
225
|
+
|
|
226
|
+
c[0] = test_create_consumer(topic, NULL, rd_kafka_conf_dup(conf), NULL);
|
|
227
|
+
c[1] = test_create_consumer(topic, NULL, conf, NULL);
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
for (i = 0; i < 2; i++) {
|
|
231
|
+
logq[i] = rd_kafka_queue_new(c[i]);
|
|
232
|
+
TEST_CALL__(rd_kafka_set_log_queue(c[i], logq[i]));
|
|
233
|
+
test_consumer_subscribe(c[i], topic);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
while (1) {
|
|
237
|
+
for (i = 0; i < 2; i++) {
|
|
238
|
+
int64_t now;
|
|
239
|
+
rd_kafka_message_t *rkm;
|
|
240
|
+
|
|
241
|
+
/* Consumer is "processing".
|
|
242
|
+
* When we are "processing", we poll the log queue. */
|
|
243
|
+
if (ts_next[i] > test_clock()) {
|
|
244
|
+
rd_kafka_event_destroy(
|
|
245
|
+
rd_kafka_queue_poll(logq[i], 100));
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
rkm = rd_kafka_consumer_poll(c[i], 100);
|
|
250
|
+
if (!rkm)
|
|
251
|
+
continue;
|
|
252
|
+
|
|
253
|
+
if (rkm->err) {
|
|
254
|
+
TEST_WARN(
|
|
255
|
+
"Consumer %d error: %s: "
|
|
256
|
+
"ignoring\n",
|
|
257
|
+
i, rd_kafka_message_errstr(rkm));
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
now = test_clock();
|
|
262
|
+
|
|
263
|
+
cmsgcnt++;
|
|
264
|
+
|
|
265
|
+
TEST_SAY(
|
|
266
|
+
"Consumer %d received message (#%d) "
|
|
267
|
+
"at offset %" PRId64 "\n",
|
|
268
|
+
i, cmsgcnt, rkm->offset);
|
|
269
|
+
|
|
270
|
+
if (ts_exp_msg[i]) {
|
|
271
|
+
/* This consumer is expecting a message
|
|
272
|
+
* after a certain time, namely after the
|
|
273
|
+
* rebalance following max.poll.. being
|
|
274
|
+
* exceeded in the other consumer */
|
|
275
|
+
TEST_ASSERT(
|
|
276
|
+
now > ts_exp_msg[i],
|
|
277
|
+
"Consumer %d: did not expect "
|
|
278
|
+
"message for at least %dms",
|
|
279
|
+
i, (int)((ts_exp_msg[i] - now) / 1000));
|
|
280
|
+
TEST_ASSERT(
|
|
281
|
+
now < ts_exp_msg[i] + 10000 * 1000,
|
|
282
|
+
"Consumer %d: expected message "
|
|
283
|
+
"within 10s, not after %dms",
|
|
284
|
+
i, (int)((now - ts_exp_msg[i]) / 1000));
|
|
285
|
+
TEST_SAY(
|
|
286
|
+
"Consumer %d: received message "
|
|
287
|
+
"at offset %" PRId64 " after rebalance\n",
|
|
288
|
+
i, rkm->offset);
|
|
289
|
+
|
|
290
|
+
rd_kafka_message_destroy(rkm);
|
|
291
|
+
goto done;
|
|
292
|
+
|
|
293
|
+
} else if (cmsgcnt == 1) {
|
|
294
|
+
/* Process this message for 20s */
|
|
295
|
+
ts_next[i] = now + (20000 * 1000);
|
|
296
|
+
|
|
297
|
+
/* Exp message on other consumer after
|
|
298
|
+
* max.poll.interval.ms */
|
|
299
|
+
ts_exp_msg[i ^ 1] = now + (10000 * 1000);
|
|
300
|
+
|
|
301
|
+
/* This is the bad consumer */
|
|
302
|
+
bad = i;
|
|
303
|
+
|
|
304
|
+
TEST_SAY(
|
|
305
|
+
"Consumer %d processing message at "
|
|
306
|
+
"offset %" PRId64 "\n",
|
|
307
|
+
i, rkm->offset);
|
|
308
|
+
rd_kafka_message_destroy(rkm);
|
|
309
|
+
} else {
|
|
310
|
+
rd_kafka_message_destroy(rkm);
|
|
311
|
+
|
|
312
|
+
TEST_FAIL(
|
|
313
|
+
"Consumer %d did not expect "
|
|
314
|
+
"a message",
|
|
315
|
+
i);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
done:
|
|
321
|
+
|
|
322
|
+
TEST_ASSERT(bad != -1, "Bad consumer not set");
|
|
323
|
+
|
|
324
|
+
/* Wait for error ERR__MAX_POLL_EXCEEDED on the bad consumer. */
|
|
325
|
+
while (1) {
|
|
326
|
+
rd_kafka_message_t *rkm;
|
|
327
|
+
|
|
328
|
+
rkm = rd_kafka_consumer_poll(c[bad], 1000);
|
|
329
|
+
TEST_ASSERT(rkm, "Expected consumer result within 1s");
|
|
330
|
+
|
|
331
|
+
TEST_ASSERT(rkm->err, "Did not expect message on bad consumer");
|
|
332
|
+
|
|
333
|
+
TEST_SAY("Consumer error: %s: %s\n",
|
|
334
|
+
rd_kafka_err2name(rkm->err),
|
|
335
|
+
rd_kafka_message_errstr(rkm));
|
|
336
|
+
|
|
337
|
+
if (rkm->err == RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED) {
|
|
338
|
+
rd_kafka_message_destroy(rkm);
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
rd_kafka_message_destroy(rkm);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
for (i = 0; i < 2; i++) {
|
|
347
|
+
rd_kafka_destroy_flags(c[i],
|
|
348
|
+
RD_KAFKA_DESTROY_F_NO_CONSUMER_CLOSE);
|
|
349
|
+
rd_kafka_queue_destroy(logq[i]);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
SUB_TEST_PASS();
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* @brief Consumer should be able to rejoin the group just by polling after
|
|
358
|
+
* leaving due to a max.poll.interval.ms timeout. The poll does not need to
|
|
359
|
+
* go through any special function, any queue containing consumer messages
|
|
360
|
+
* should suffice.
|
|
361
|
+
* We test with the result of rd_kafka_queue_get_consumer, and an arbitrary
|
|
362
|
+
* queue that is forwarded to by the result of rd_kafka_queue_get_consumer.
|
|
363
|
+
* We also test with an arbitrary queue that is forwarded to the the result of
|
|
364
|
+
* rd_kafka_queue_get_consumer.
|
|
365
|
+
*/
|
|
366
|
+
static void
|
|
367
|
+
do_test_rejoin_after_interval_expire(rd_bool_t forward_to_another_q,
|
|
368
|
+
rd_bool_t forward_to_consumer_q) {
|
|
369
|
+
const char *topic = test_mk_topic_name("0089_max_poll_interval", 1);
|
|
370
|
+
rd_kafka_conf_t *conf;
|
|
371
|
+
char groupid[64];
|
|
372
|
+
rd_kafka_t *rk = NULL;
|
|
373
|
+
rd_kafka_queue_t *consumer_queue = NULL;
|
|
374
|
+
rd_kafka_queue_t *forwarder_queue = NULL;
|
|
375
|
+
rd_kafka_event_t *event = NULL;
|
|
376
|
+
rd_kafka_queue_t *polling_queue = NULL;
|
|
377
|
+
|
|
378
|
+
SUB_TEST(
|
|
379
|
+
"Testing with forward_to_another_q = %d, forward_to_consumer_q = "
|
|
380
|
+
"%d",
|
|
381
|
+
forward_to_another_q, forward_to_consumer_q);
|
|
382
|
+
|
|
383
|
+
test_create_topic_wait_exists(NULL, topic, 1, 1, 5000);
|
|
384
|
+
|
|
385
|
+
test_str_id_generate(groupid, sizeof(groupid));
|
|
386
|
+
test_conf_init(&conf, NULL, 60);
|
|
387
|
+
test_conf_set(conf, "session.timeout.ms", "6000");
|
|
388
|
+
test_conf_set(conf, "max.poll.interval.ms", "10000" /*10s*/);
|
|
389
|
+
test_conf_set(conf, "partition.assignment.strategy", "range");
|
|
390
|
+
|
|
391
|
+
/* We need to specify a non-NULL rebalance CB to get events of type
|
|
392
|
+
* RD_KAFKA_EVENT_REBALANCE. */
|
|
393
|
+
rk = test_create_consumer(groupid, test_rebalance_cb, conf, NULL);
|
|
394
|
+
|
|
395
|
+
consumer_queue = rd_kafka_queue_get_consumer(rk);
|
|
396
|
+
|
|
397
|
+
test_consumer_subscribe(rk, topic);
|
|
398
|
+
|
|
399
|
+
if (forward_to_another_q) {
|
|
400
|
+
polling_queue = rd_kafka_queue_new(rk);
|
|
401
|
+
rd_kafka_queue_forward(consumer_queue, polling_queue);
|
|
402
|
+
} else if (forward_to_consumer_q) {
|
|
403
|
+
forwarder_queue = rd_kafka_queue_new(rk);
|
|
404
|
+
rd_kafka_queue_forward(forwarder_queue, consumer_queue);
|
|
405
|
+
polling_queue = forwarder_queue;
|
|
406
|
+
} else
|
|
407
|
+
polling_queue = consumer_queue;
|
|
408
|
+
|
|
409
|
+
event = test_wait_event(polling_queue, RD_KAFKA_EVENT_REBALANCE,
|
|
410
|
+
(int)(test_timeout_multiplier * 10000));
|
|
411
|
+
TEST_ASSERT(event,
|
|
412
|
+
"Did not get a rebalance event for initial group join");
|
|
413
|
+
TEST_ASSERT(rd_kafka_event_error(event) ==
|
|
414
|
+
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS,
|
|
415
|
+
"Group join should assign partitions");
|
|
416
|
+
test_consumer_assign_by_rebalance_protocol(
|
|
417
|
+
"initial group join", rk,
|
|
418
|
+
rd_kafka_event_topic_partition_list(event));
|
|
419
|
+
rd_kafka_event_destroy(event);
|
|
420
|
+
|
|
421
|
+
rd_sleep(10 + 1); /* Exceed max.poll.interval.ms. */
|
|
422
|
+
|
|
423
|
+
/* Note that by polling for the group leave, we're also polling the
|
|
424
|
+
* consumer queue, and hence it should trigger a rejoin. */
|
|
425
|
+
event = test_wait_event(polling_queue, RD_KAFKA_EVENT_REBALANCE,
|
|
426
|
+
(int)(test_timeout_multiplier * 10000));
|
|
427
|
+
TEST_ASSERT(event, "Did not get a rebalance event for the group leave");
|
|
428
|
+
TEST_ASSERT(rd_kafka_event_error(event) ==
|
|
429
|
+
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS,
|
|
430
|
+
"Group leave should revoke partitions");
|
|
431
|
+
test_consumer_unassign_by_rebalance_protocol(
|
|
432
|
+
"group leave", rk, rd_kafka_event_topic_partition_list(event));
|
|
433
|
+
rd_kafka_event_destroy(event);
|
|
434
|
+
|
|
435
|
+
event = test_wait_event(polling_queue, RD_KAFKA_EVENT_REBALANCE,
|
|
436
|
+
(int)(test_timeout_multiplier * 10000));
|
|
437
|
+
TEST_ASSERT(event, "Should get a rebalance event for the group rejoin");
|
|
438
|
+
TEST_ASSERT(rd_kafka_event_error(event) ==
|
|
439
|
+
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS,
|
|
440
|
+
"Group rejoin should assign partitions");
|
|
441
|
+
|
|
442
|
+
test_consumer_assign_by_rebalance_protocol(
|
|
443
|
+
"group rejoin", rk, rd_kafka_event_topic_partition_list(event));
|
|
444
|
+
rd_kafka_event_destroy(event);
|
|
445
|
+
|
|
446
|
+
if (forward_to_another_q)
|
|
447
|
+
rd_kafka_queue_destroy(polling_queue);
|
|
448
|
+
if (forward_to_consumer_q)
|
|
449
|
+
rd_kafka_queue_destroy(forwarder_queue);
|
|
450
|
+
rd_kafka_queue_destroy(consumer_queue);
|
|
451
|
+
test_consumer_close(rk);
|
|
452
|
+
rd_kafka_destroy(rk);
|
|
453
|
+
|
|
454
|
+
SUB_TEST_PASS();
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
static void consume_cb(rd_kafka_message_t *rkmessage, void *opaque) {
|
|
458
|
+
TEST_SAY("Consume callback\n");
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* @brief Test that max.poll.interval.ms is reset when
|
|
463
|
+
* rd_kafka_poll is called with consume_cb.
|
|
464
|
+
* See issue #4421.
|
|
465
|
+
*/
|
|
466
|
+
static void do_test_max_poll_reset_with_consumer_cb(void) {
|
|
467
|
+
const char *topic = test_mk_topic_name("0089_max_poll_interval", 1);
|
|
468
|
+
rd_kafka_conf_t *conf;
|
|
469
|
+
char groupid[64];
|
|
470
|
+
rd_kafka_t *rk = NULL;
|
|
471
|
+
|
|
472
|
+
SUB_TEST();
|
|
473
|
+
|
|
474
|
+
test_create_topic_wait_exists(NULL, topic, 1, 1, 5000);
|
|
475
|
+
uint64_t testid = test_id_generate();
|
|
476
|
+
|
|
477
|
+
test_produce_msgs_easy(topic, testid, -1, 100);
|
|
478
|
+
|
|
479
|
+
test_str_id_generate(groupid, sizeof(groupid));
|
|
480
|
+
test_conf_init(&conf, NULL, 60);
|
|
481
|
+
test_conf_set(conf, "session.timeout.ms", "10000");
|
|
482
|
+
test_conf_set(conf, "max.poll.interval.ms", "10000" /*10s*/);
|
|
483
|
+
test_conf_set(conf, "partition.assignment.strategy", "range");
|
|
484
|
+
rd_kafka_conf_set_consume_cb(conf, consume_cb);
|
|
485
|
+
|
|
486
|
+
rk = test_create_consumer(groupid, NULL, conf, NULL);
|
|
487
|
+
rd_kafka_poll_set_consumer(rk);
|
|
488
|
+
|
|
489
|
+
test_consumer_subscribe(rk, topic);
|
|
490
|
+
TEST_SAY("Subscribed to %s and sleeping for 5 s\n", topic);
|
|
491
|
+
rd_sleep(5);
|
|
492
|
+
rd_kafka_poll(rk, 10);
|
|
493
|
+
TEST_SAY(
|
|
494
|
+
"Polled and sleeping again for 6s. Max poll should be reset\n");
|
|
495
|
+
rd_sleep(6);
|
|
496
|
+
|
|
497
|
+
/* Poll should work */
|
|
498
|
+
rd_kafka_poll(rk, 10);
|
|
499
|
+
test_consumer_close(rk);
|
|
500
|
+
rd_kafka_destroy(rk);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
int main_0089_max_poll_interval(int argc, char **argv) {
|
|
504
|
+
do_test();
|
|
505
|
+
do_test_with_log_queue();
|
|
506
|
+
do_test_rejoin_after_interval_expire(rd_false, rd_false);
|
|
507
|
+
do_test_rejoin_after_interval_expire(rd_true, rd_false);
|
|
508
|
+
do_test_rejoin_after_interval_expire(rd_false, rd_true);
|
|
509
|
+
do_test_max_poll_reset_with_consumer_cb();
|
|
510
|
+
return 0;
|
|
511
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2018-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
|
+
#include "rdkafka.h"
|
|
32
|
+
|
|
33
|
+
#include <stdarg.h>
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @name Idempotent Producer tests
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
static struct {
|
|
41
|
+
int batch_cnt;
|
|
42
|
+
int initial_fail_batch_cnt;
|
|
43
|
+
rd_atomic32_t produce_cnt;
|
|
44
|
+
} state;
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @brief This is called prior to parsing the ProduceResponse,
|
|
50
|
+
* we use it to inject errors.
|
|
51
|
+
*
|
|
52
|
+
* @locality an internal rdkafka thread
|
|
53
|
+
*/
|
|
54
|
+
static rd_kafka_resp_err_t handle_ProduceResponse(rd_kafka_t *rk,
|
|
55
|
+
int32_t brokerid,
|
|
56
|
+
uint64_t msgseq,
|
|
57
|
+
rd_kafka_resp_err_t err) {
|
|
58
|
+
rd_kafka_resp_err_t new_err = err;
|
|
59
|
+
int n;
|
|
60
|
+
|
|
61
|
+
if (err == RD_KAFKA_RESP_ERR__RETRY)
|
|
62
|
+
return err; /* Skip internal retries, such as triggered by
|
|
63
|
+
* rd_kafka_broker_bufq_purge_by_toppar() */
|
|
64
|
+
|
|
65
|
+
n = rd_atomic32_add(&state.produce_cnt, 1);
|
|
66
|
+
|
|
67
|
+
/* Let the first N ProduceRequests fail with request timeout.
|
|
68
|
+
* Do allow the first request through. */
|
|
69
|
+
if (n > 1 && n <= state.initial_fail_batch_cnt) {
|
|
70
|
+
if (err)
|
|
71
|
+
TEST_WARN(
|
|
72
|
+
"First %d ProduceRequests should not "
|
|
73
|
+
"have failed, this is #%d with error %s for "
|
|
74
|
+
"brokerid %" PRId32 " and msgseq %" PRIu64 "\n",
|
|
75
|
+
state.initial_fail_batch_cnt, n,
|
|
76
|
+
rd_kafka_err2name(err), brokerid, msgseq);
|
|
77
|
+
assert(!err &&
|
|
78
|
+
*"First N ProduceRequests should not have failed");
|
|
79
|
+
new_err = RD_KAFKA_RESP_ERR__TIMED_OUT;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
TEST_SAY("handle_ProduceResponse(broker %" PRId32 ", MsgSeq %" PRId64
|
|
83
|
+
", Error %s) -> new Error %s\n",
|
|
84
|
+
brokerid, msgseq, rd_kafka_err2name(err),
|
|
85
|
+
rd_kafka_err2name(new_err));
|
|
86
|
+
|
|
87
|
+
return new_err;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @brief Test handling of implicit acks.
|
|
93
|
+
*
|
|
94
|
+
* @param batch_cnt Total number of batches, ProduceRequests, sent.
|
|
95
|
+
* @param initial_fail_batch_cnt How many of the initial batches should
|
|
96
|
+
* fail with an emulated network timeout.
|
|
97
|
+
*/
|
|
98
|
+
static void do_test_implicit_ack(const char *what,
|
|
99
|
+
int batch_cnt,
|
|
100
|
+
int initial_fail_batch_cnt) {
|
|
101
|
+
rd_kafka_t *rk;
|
|
102
|
+
const char *topic = test_mk_topic_name("0090_idempotence_impl_ack", 1);
|
|
103
|
+
const int32_t partition = 0;
|
|
104
|
+
uint64_t testid;
|
|
105
|
+
int msgcnt = 10 * batch_cnt;
|
|
106
|
+
rd_kafka_conf_t *conf;
|
|
107
|
+
rd_kafka_topic_t *rkt;
|
|
108
|
+
test_msgver_t mv;
|
|
109
|
+
|
|
110
|
+
TEST_SAY(_C_MAG "[ Test implicit ack: %s ]\n", what);
|
|
111
|
+
|
|
112
|
+
rd_atomic32_init(&state.produce_cnt, 0);
|
|
113
|
+
state.batch_cnt = batch_cnt;
|
|
114
|
+
state.initial_fail_batch_cnt = initial_fail_batch_cnt;
|
|
115
|
+
|
|
116
|
+
testid = test_id_generate();
|
|
117
|
+
|
|
118
|
+
test_conf_init(&conf, NULL, 60);
|
|
119
|
+
rd_kafka_conf_set_dr_msg_cb(conf, test_dr_msg_cb);
|
|
120
|
+
test_conf_set(conf, "enable.idempotence", "true");
|
|
121
|
+
test_conf_set(conf, "batch.num.messages", "10");
|
|
122
|
+
test_conf_set(conf, "linger.ms", "500");
|
|
123
|
+
test_conf_set(conf, "retry.backoff.ms", "10");
|
|
124
|
+
|
|
125
|
+
/* The ProduceResponse handler will inject timed-out-in-flight
|
|
126
|
+
* errors for the first N ProduceRequests, which will trigger retries
|
|
127
|
+
* that in turn will result in OutOfSequence errors. */
|
|
128
|
+
test_conf_set(conf, "ut_handle_ProduceResponse",
|
|
129
|
+
(char *)handle_ProduceResponse);
|
|
130
|
+
|
|
131
|
+
rk = test_create_handle(RD_KAFKA_PRODUCER, conf);
|
|
132
|
+
|
|
133
|
+
test_create_topic_wait_exists(rk, topic, 1, 1, 5000);
|
|
134
|
+
|
|
135
|
+
rkt = test_create_producer_topic(rk, topic, NULL);
|
|
136
|
+
|
|
137
|
+
TEST_SAY("Producing %d messages\n", msgcnt);
|
|
138
|
+
test_produce_msgs(rk, rkt, testid, -1, 0, msgcnt, NULL, 0);
|
|
139
|
+
|
|
140
|
+
TEST_SAY("Flushing..\n");
|
|
141
|
+
rd_kafka_flush(rk, 10000);
|
|
142
|
+
|
|
143
|
+
rd_kafka_topic_destroy(rkt);
|
|
144
|
+
rd_kafka_destroy(rk);
|
|
145
|
+
|
|
146
|
+
TEST_SAY("Verifying messages with consumer\n");
|
|
147
|
+
test_msgver_init(&mv, testid);
|
|
148
|
+
test_consume_msgs_easy_mv(NULL, topic, partition, testid, 1, msgcnt,
|
|
149
|
+
NULL, &mv);
|
|
150
|
+
test_msgver_verify("verify", &mv, TEST_MSGVER_ALL, 0, msgcnt);
|
|
151
|
+
test_msgver_clear(&mv);
|
|
152
|
+
|
|
153
|
+
TEST_SAY(_C_GRN "[ Test implicit ack: %s : PASS ]\n", what);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
int main_0090_idempotence(int argc, char **argv) {
|
|
158
|
+
/* The broker maintains a window of the N last ProduceRequests
|
|
159
|
+
* per partition and producer to allow ProduceRequest retries
|
|
160
|
+
* for previously successful requests to return a non-error response.
|
|
161
|
+
* This limit is currently (AK 2.0) hard coded at 5. */
|
|
162
|
+
const int broker_req_window = 5;
|
|
163
|
+
|
|
164
|
+
do_test_implicit_ack("within broker request window",
|
|
165
|
+
broker_req_window * 2, broker_req_window);
|
|
166
|
+
|
|
167
|
+
do_test_implicit_ack("outside broker request window",
|
|
168
|
+
broker_req_window + 3, broker_req_window + 3);
|
|
169
|
+
|
|
170
|
+
return 0;
|
|
171
|
+
}
|