@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,625 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2019-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
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @name Fetch from follower tests using the mock broker.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
static int allowed_error;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @brief Decide what error_cb's will cause the test to fail.
|
|
40
|
+
*/
|
|
41
|
+
static int
|
|
42
|
+
error_is_fatal_cb(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason) {
|
|
43
|
+
if (err == allowed_error ||
|
|
44
|
+
/* If transport errors are allowed then it is likely
|
|
45
|
+
* that we'll also see ALL_BROKERS_DOWN. */
|
|
46
|
+
(allowed_error == RD_KAFKA_RESP_ERR__TRANSPORT &&
|
|
47
|
+
err == RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN)) {
|
|
48
|
+
TEST_SAY("Ignoring allowed error: %s: %s\n",
|
|
49
|
+
rd_kafka_err2name(err), reason);
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
return 1;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @brief Test offset reset when fetching from replica.
|
|
58
|
+
* Since the highwatermark is in sync with the leader the
|
|
59
|
+
* ERR_OFFSETS_OUT_OF_RANGE is trusted by the consumer and
|
|
60
|
+
* a reset is performed. See do_test_offset_reset_lag()
|
|
61
|
+
* for the case where the replica is lagging and can't be trusted.
|
|
62
|
+
*/
|
|
63
|
+
static void do_test_offset_reset(const char *auto_offset_reset) {
|
|
64
|
+
const char *bootstraps;
|
|
65
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
66
|
+
rd_kafka_conf_t *conf;
|
|
67
|
+
rd_kafka_t *c;
|
|
68
|
+
const char *topic = "test";
|
|
69
|
+
const int msgcnt = 1000;
|
|
70
|
+
const size_t msgsize = 1000;
|
|
71
|
+
|
|
72
|
+
TEST_SAY(_C_MAG "[ Test FFF auto.offset.reset=%s ]\n",
|
|
73
|
+
auto_offset_reset);
|
|
74
|
+
|
|
75
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
76
|
+
|
|
77
|
+
/* Seed the topic with messages */
|
|
78
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, msgsize,
|
|
79
|
+
"bootstrap.servers", bootstraps,
|
|
80
|
+
"batch.num.messages", "10", NULL);
|
|
81
|
+
|
|
82
|
+
/* Set partition leader to broker 1, follower to broker 2 */
|
|
83
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 1);
|
|
84
|
+
rd_kafka_mock_partition_set_follower(mcluster, topic, 0, 2);
|
|
85
|
+
|
|
86
|
+
test_conf_init(&conf, NULL, 0);
|
|
87
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
88
|
+
test_conf_set(conf, "client.rack", "myrack");
|
|
89
|
+
test_conf_set(conf, "auto.offset.reset", auto_offset_reset);
|
|
90
|
+
/* Make sure we don't consume the entire partition in one Fetch */
|
|
91
|
+
test_conf_set(conf, "fetch.message.max.bytes", "100");
|
|
92
|
+
|
|
93
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
94
|
+
|
|
95
|
+
/* The first fetch will go to the leader which will redirect
|
|
96
|
+
* the consumer to the follower, the second and sub-sequent fetches
|
|
97
|
+
* will go to the follower. We want the third fetch, second one on
|
|
98
|
+
* the follower, to fail and trigger an offset reset. */
|
|
99
|
+
rd_kafka_mock_push_request_errors(
|
|
100
|
+
mcluster, 1 /*FetchRequest*/, 3,
|
|
101
|
+
RD_KAFKA_RESP_ERR_NO_ERROR /*leader*/,
|
|
102
|
+
RD_KAFKA_RESP_ERR_NO_ERROR /*follower*/,
|
|
103
|
+
RD_KAFKA_RESP_ERR_OFFSET_OUT_OF_RANGE /*follower: fail*/);
|
|
104
|
+
|
|
105
|
+
test_consumer_assign_partition(auto_offset_reset, c, topic, 0,
|
|
106
|
+
RD_KAFKA_OFFSET_INVALID);
|
|
107
|
+
|
|
108
|
+
if (!strcmp(auto_offset_reset, "latest"))
|
|
109
|
+
test_consumer_poll_no_msgs(auto_offset_reset, c, 0, 5000);
|
|
110
|
+
else
|
|
111
|
+
test_consumer_poll(auto_offset_reset, c, 0, 1, 0, msgcnt, NULL);
|
|
112
|
+
|
|
113
|
+
/* send another batch of messages to ensure the consumer isn't stuck
|
|
114
|
+
* sending ListOffsets to the replica and receiving
|
|
115
|
+
* NOT_LEADER_OR_FOLLOWER errors.
|
|
116
|
+
* See PR #4616 */
|
|
117
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, 1000,
|
|
118
|
+
"bootstrap.servers", bootstraps, NULL);
|
|
119
|
+
test_consumer_poll("ASSIGN", c, 0, 1, 0, msgcnt, NULL);
|
|
120
|
+
|
|
121
|
+
test_consumer_close(c);
|
|
122
|
+
|
|
123
|
+
rd_kafka_destroy(c);
|
|
124
|
+
|
|
125
|
+
test_mock_cluster_destroy(mcluster);
|
|
126
|
+
|
|
127
|
+
TEST_SAY(_C_GRN "[ Test FFF auto.offset.reset=%s PASSED ]\n",
|
|
128
|
+
auto_offset_reset);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* @brief Test offset reset when fetching from a lagging replica
|
|
134
|
+
* who's high-watermark is behind the leader, which means
|
|
135
|
+
* an offset reset should not be triggered.
|
|
136
|
+
*/
|
|
137
|
+
static void do_test_offset_reset_lag(void) {
|
|
138
|
+
const char *bootstraps;
|
|
139
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
140
|
+
rd_kafka_conf_t *conf;
|
|
141
|
+
rd_kafka_t *c;
|
|
142
|
+
const char *topic = "test";
|
|
143
|
+
const int msgcnt = 10;
|
|
144
|
+
const int lag = 3;
|
|
145
|
+
const size_t msgsize = 1000;
|
|
146
|
+
|
|
147
|
+
TEST_SAY(_C_MAG "[ Test lagging FFF offset reset ]\n");
|
|
148
|
+
|
|
149
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
150
|
+
|
|
151
|
+
/* Seed the topic with messages */
|
|
152
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, msgsize,
|
|
153
|
+
"bootstrap.servers", bootstraps,
|
|
154
|
+
"batch.num.messages", "1", NULL);
|
|
155
|
+
|
|
156
|
+
/* Set broker rack */
|
|
157
|
+
/* Set partition leader to broker 1, follower to broker 2 */
|
|
158
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 1);
|
|
159
|
+
rd_kafka_mock_partition_set_follower(mcluster, topic, 0, 2);
|
|
160
|
+
|
|
161
|
+
/* Make follower lag by some messages
|
|
162
|
+
* ( .. -1 because offsets start at 0) */
|
|
163
|
+
rd_kafka_mock_partition_set_follower_wmarks(mcluster, topic, 0, -1,
|
|
164
|
+
msgcnt - lag - 1);
|
|
165
|
+
|
|
166
|
+
test_conf_init(&conf, NULL, 0);
|
|
167
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
168
|
+
test_conf_set(conf, "client.rack", "myrack");
|
|
169
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
170
|
+
/* Make sure we don't consume the entire partition in one Fetch */
|
|
171
|
+
test_conf_set(conf, "fetch.message.max.bytes", "100");
|
|
172
|
+
|
|
173
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
174
|
+
|
|
175
|
+
test_consumer_assign_partition("lag", c, topic, 0,
|
|
176
|
+
RD_KAFKA_OFFSET_INVALID);
|
|
177
|
+
|
|
178
|
+
/* Should receive all messages up to the followers hwmark */
|
|
179
|
+
test_consumer_poll("up to wmark", c, 0, 0, 0, msgcnt - lag, NULL);
|
|
180
|
+
|
|
181
|
+
/* And then nothing.. as the consumer waits for the replica to
|
|
182
|
+
* catch up. */
|
|
183
|
+
test_consumer_poll_no_msgs("no msgs", c, 0, 3000);
|
|
184
|
+
|
|
185
|
+
/* Catch up the replica, consumer should now get the
|
|
186
|
+
* remaining messages */
|
|
187
|
+
rd_kafka_mock_partition_set_follower_wmarks(mcluster, topic, 0, -1, -1);
|
|
188
|
+
test_consumer_poll("remaining", c, 0, 1, msgcnt - lag, lag, NULL);
|
|
189
|
+
|
|
190
|
+
test_consumer_close(c);
|
|
191
|
+
|
|
192
|
+
rd_kafka_destroy(c);
|
|
193
|
+
|
|
194
|
+
test_mock_cluster_destroy(mcluster);
|
|
195
|
+
|
|
196
|
+
TEST_SAY(_C_GRN "[ Test lagging FFF offset reset PASSED ]\n");
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* @brief Test delegating consumer to a follower that does not exist,
|
|
202
|
+
* the consumer should not be able to consume any messages (which
|
|
203
|
+
* is questionable but for a later PR). Then change to a valid
|
|
204
|
+
* replica and verify messages can be consumed.
|
|
205
|
+
*/
|
|
206
|
+
static void do_test_unknown_follower(void) {
|
|
207
|
+
const char *bootstraps;
|
|
208
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
209
|
+
rd_kafka_conf_t *conf;
|
|
210
|
+
rd_kafka_t *c;
|
|
211
|
+
const char *topic = "test";
|
|
212
|
+
const int msgcnt = 1000;
|
|
213
|
+
const size_t msgsize = 1000;
|
|
214
|
+
test_msgver_t mv;
|
|
215
|
+
|
|
216
|
+
TEST_SAY(_C_MAG "[ Test unknown follower ]\n");
|
|
217
|
+
|
|
218
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
219
|
+
|
|
220
|
+
/* Seed the topic with messages */
|
|
221
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, msgsize,
|
|
222
|
+
"bootstrap.servers", bootstraps,
|
|
223
|
+
"batch.num.messages", "10", NULL);
|
|
224
|
+
|
|
225
|
+
/* Set partition leader to broker 1, follower
|
|
226
|
+
* to non-existent broker 19 */
|
|
227
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 1);
|
|
228
|
+
rd_kafka_mock_partition_set_follower(mcluster, topic, 0, 19);
|
|
229
|
+
|
|
230
|
+
test_conf_init(&conf, NULL, 0);
|
|
231
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
232
|
+
test_conf_set(conf, "client.rack", "myrack");
|
|
233
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
234
|
+
/* Make sure we don't consume the entire partition in one Fetch */
|
|
235
|
+
test_conf_set(conf, "fetch.message.max.bytes", "100");
|
|
236
|
+
|
|
237
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
238
|
+
|
|
239
|
+
test_consumer_assign_partition("unknown follower", c, topic, 0,
|
|
240
|
+
RD_KAFKA_OFFSET_INVALID);
|
|
241
|
+
|
|
242
|
+
test_consumer_poll_no_msgs("unknown follower", c, 0, 5000);
|
|
243
|
+
|
|
244
|
+
/* Set a valid follower (broker 3) */
|
|
245
|
+
rd_kafka_mock_partition_set_follower(mcluster, topic, 0, 3);
|
|
246
|
+
test_msgver_init(&mv, 0);
|
|
247
|
+
test_consumer_poll("proper follower", c, 0, 1, 0, msgcnt, &mv);
|
|
248
|
+
/* Verify messages were indeed received from broker 3 */
|
|
249
|
+
test_msgver_verify0(
|
|
250
|
+
__FUNCTION__, __LINE__, "broker_id", &mv, TEST_MSGVER_BY_BROKER_ID,
|
|
251
|
+
(struct test_mv_vs) {
|
|
252
|
+
.msg_base = 0, .exp_cnt = msgcnt, .broker_id = 3});
|
|
253
|
+
test_msgver_clear(&mv);
|
|
254
|
+
|
|
255
|
+
test_consumer_close(c);
|
|
256
|
+
|
|
257
|
+
rd_kafka_destroy(c);
|
|
258
|
+
|
|
259
|
+
test_mock_cluster_destroy(mcluster);
|
|
260
|
+
|
|
261
|
+
TEST_SAY(_C_GRN "[ Test unknown follower PASSED ]\n");
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* @brief Issue #2955: Verify that fetch does not stall until next
|
|
267
|
+
* periodic metadata timeout when leader broker is no longer
|
|
268
|
+
* a replica.
|
|
269
|
+
*/
|
|
270
|
+
static void do_test_replica_not_available(void) {
|
|
271
|
+
const char *bootstraps;
|
|
272
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
273
|
+
rd_kafka_conf_t *conf;
|
|
274
|
+
rd_kafka_t *c;
|
|
275
|
+
const char *topic = "test";
|
|
276
|
+
const int msgcnt = 1000;
|
|
277
|
+
|
|
278
|
+
TEST_SAY(_C_MAG "[ Test REPLICA_NOT_AVAILABLE ]\n");
|
|
279
|
+
|
|
280
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
281
|
+
|
|
282
|
+
/* Seed the topic with messages */
|
|
283
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, 1000,
|
|
284
|
+
"bootstrap.servers", bootstraps,
|
|
285
|
+
"batch.num.messages", "10", NULL);
|
|
286
|
+
|
|
287
|
+
/* Set partition leader to broker 1. */
|
|
288
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 1);
|
|
289
|
+
|
|
290
|
+
test_conf_init(&conf, NULL, 0);
|
|
291
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
292
|
+
test_conf_set(conf, "client.rack", "myrack");
|
|
293
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
294
|
+
test_conf_set(conf, "topic.metadata.refresh.interval.ms", "60000");
|
|
295
|
+
test_conf_set(conf, "fetch.error.backoff.ms", "1000");
|
|
296
|
+
|
|
297
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
298
|
+
|
|
299
|
+
rd_kafka_mock_broker_push_request_error_rtts(
|
|
300
|
+
mcluster, 1 /*Broker 1*/, 1 /*FetchRequest*/, 10,
|
|
301
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
302
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
303
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
304
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
305
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
306
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
307
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
308
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
309
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0,
|
|
310
|
+
RD_KAFKA_RESP_ERR_REPLICA_NOT_AVAILABLE, 0);
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
test_consumer_assign_partition("REPLICA_NOT_AVAILABLE", c, topic, 0,
|
|
314
|
+
RD_KAFKA_OFFSET_INVALID);
|
|
315
|
+
|
|
316
|
+
test_consumer_poll_no_msgs("Wait initial metadata", c, 0, 2000);
|
|
317
|
+
|
|
318
|
+
/* Switch leader to broker 2 so that metadata is updated,
|
|
319
|
+
* causing the consumer to start fetching from the new leader. */
|
|
320
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 2);
|
|
321
|
+
|
|
322
|
+
test_consumer_poll("Consume", c, 0, 1, 0, msgcnt, NULL);
|
|
323
|
+
|
|
324
|
+
test_consumer_close(c);
|
|
325
|
+
|
|
326
|
+
rd_kafka_destroy(c);
|
|
327
|
+
|
|
328
|
+
test_mock_cluster_destroy(mcluster);
|
|
329
|
+
|
|
330
|
+
TEST_SAY(_C_GRN "[ Test REPLICA_NOT_AVAILABLE PASSED ]\n");
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* @brief With an error \p err on a Fetch request should query for the new
|
|
335
|
+
* leader or preferred replica and refresh metadata.
|
|
336
|
+
*/
|
|
337
|
+
static void do_test_delegate_to_leader_on_error(rd_kafka_resp_err_t err) {
|
|
338
|
+
const char *bootstraps;
|
|
339
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
340
|
+
rd_kafka_conf_t *conf;
|
|
341
|
+
rd_kafka_t *c;
|
|
342
|
+
const char *topic = "test";
|
|
343
|
+
const int msgcnt = 1000;
|
|
344
|
+
const char *errstr = rd_kafka_err2name(err);
|
|
345
|
+
|
|
346
|
+
TEST_SAY(_C_MAG "[ Test %s ]\n", errstr);
|
|
347
|
+
|
|
348
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
349
|
+
|
|
350
|
+
/* Seed the topic with messages */
|
|
351
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, 10,
|
|
352
|
+
"bootstrap.servers", bootstraps,
|
|
353
|
+
"batch.num.messages", "10", NULL);
|
|
354
|
+
|
|
355
|
+
/* Set partition leader to broker 1. */
|
|
356
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 1);
|
|
357
|
+
|
|
358
|
+
test_conf_init(&conf, NULL, 0);
|
|
359
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
360
|
+
test_conf_set(conf, "client.rack", "myrack");
|
|
361
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
362
|
+
test_conf_set(conf, "topic.metadata.refresh.interval.ms", "60000");
|
|
363
|
+
test_conf_set(conf, "fetch.error.backoff.ms", "1000");
|
|
364
|
+
|
|
365
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
366
|
+
|
|
367
|
+
rd_kafka_mock_broker_push_request_error_rtts(
|
|
368
|
+
mcluster, 1 /*Broker 1*/, 1 /*FetchRequest*/, 10, err, 0, err, 0,
|
|
369
|
+
err, 0, err, 0, err, 0, err, 0, err, 0, err, 0, err, 0, err, 0);
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
test_consumer_assign_partition(errstr, c, topic, 0,
|
|
373
|
+
RD_KAFKA_OFFSET_INVALID);
|
|
374
|
+
|
|
375
|
+
test_consumer_poll_no_msgs("Wait initial metadata", c, 0, 2000);
|
|
376
|
+
|
|
377
|
+
/* Switch leader to broker 2 so that metadata is updated,
|
|
378
|
+
* causing the consumer to start fetching from the new leader. */
|
|
379
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 2);
|
|
380
|
+
|
|
381
|
+
test_consumer_poll_timeout("Consume", c, 0, 1, 0, msgcnt, NULL, 2000);
|
|
382
|
+
|
|
383
|
+
test_consumer_close(c);
|
|
384
|
+
|
|
385
|
+
rd_kafka_destroy(c);
|
|
386
|
+
|
|
387
|
+
test_mock_cluster_destroy(mcluster);
|
|
388
|
+
|
|
389
|
+
TEST_SAY(_C_GRN "[ Test %s ]\n", errstr);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* @brief Test when the preferred replica is no longer a follower of the
|
|
394
|
+
* partition leader. We should try fetch from the leader instead.
|
|
395
|
+
*/
|
|
396
|
+
static void do_test_not_leader_or_follower(void) {
|
|
397
|
+
const char *bootstraps;
|
|
398
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
399
|
+
rd_kafka_conf_t *conf;
|
|
400
|
+
rd_kafka_t *c;
|
|
401
|
+
const char *topic = "test";
|
|
402
|
+
const int msgcnt = 10;
|
|
403
|
+
|
|
404
|
+
TEST_SAY(_C_MAG "[ Test NOT_LEADER_OR_FOLLOWER ]\n");
|
|
405
|
+
|
|
406
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
407
|
+
/* Set partition leader to broker 1. */
|
|
408
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 1);
|
|
409
|
+
rd_kafka_mock_partition_set_follower(mcluster, topic, 0, 2);
|
|
410
|
+
|
|
411
|
+
test_conf_init(&conf, NULL, 0);
|
|
412
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
413
|
+
test_conf_set(conf, "client.rack", "myrack");
|
|
414
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
415
|
+
test_conf_set(conf, "topic.metadata.refresh.interval.ms", "60000");
|
|
416
|
+
test_conf_set(conf, "fetch.error.backoff.ms", "1000");
|
|
417
|
+
test_conf_set(conf, "fetch.message.max.bytes", "10");
|
|
418
|
+
|
|
419
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
420
|
+
|
|
421
|
+
test_consumer_assign_partition("NOT_LEADER_OR_FOLLOWER", c, topic, 0,
|
|
422
|
+
RD_KAFKA_OFFSET_INVALID);
|
|
423
|
+
|
|
424
|
+
/* Since there are no messages, this poll only waits for metadata, and
|
|
425
|
+
* then sets the preferred replica after the first fetch request. */
|
|
426
|
+
test_consumer_poll_no_msgs("Initial metadata and preferred replica set",
|
|
427
|
+
c, 0, 2000);
|
|
428
|
+
|
|
429
|
+
/* Change the follower, so that the preferred replica is no longer the
|
|
430
|
+
* leader or follower. */
|
|
431
|
+
rd_kafka_mock_partition_set_follower(mcluster, topic, 0, -1);
|
|
432
|
+
|
|
433
|
+
/* Seed the topic with messages */
|
|
434
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, 1000,
|
|
435
|
+
"bootstrap.servers", bootstraps,
|
|
436
|
+
"batch.num.messages", "10", NULL);
|
|
437
|
+
|
|
438
|
+
/* On getting a NOT_LEADER_OR_FOLLOWER error, we should change to the
|
|
439
|
+
* leader and fetch from there without timing out. */
|
|
440
|
+
test_msgver_t mv;
|
|
441
|
+
test_msgver_init(&mv, 0);
|
|
442
|
+
test_consumer_poll_timeout("from leader", c, 0, 1, 0, msgcnt, &mv,
|
|
443
|
+
2000);
|
|
444
|
+
test_msgver_verify0(
|
|
445
|
+
__FUNCTION__, __LINE__, "broker_id", &mv, TEST_MSGVER_BY_BROKER_ID,
|
|
446
|
+
(struct test_mv_vs) {
|
|
447
|
+
.msg_base = 0, .exp_cnt = msgcnt, .broker_id = 1});
|
|
448
|
+
test_msgver_clear(&mv);
|
|
449
|
+
|
|
450
|
+
test_consumer_close(c);
|
|
451
|
+
|
|
452
|
+
rd_kafka_destroy(c);
|
|
453
|
+
|
|
454
|
+
test_mock_cluster_destroy(mcluster);
|
|
455
|
+
|
|
456
|
+
TEST_SAY(_C_GRN "[ Test NOT_LEADER_OR_FOLLOWER PASSED ]\n");
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* @brief Test when the preferred replica broker goes down. When a broker is
|
|
462
|
+
* going down, we should delegate all its partitions to their leaders.
|
|
463
|
+
*/
|
|
464
|
+
static void do_test_follower_down(void) {
|
|
465
|
+
const char *bootstraps;
|
|
466
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
467
|
+
rd_kafka_conf_t *conf;
|
|
468
|
+
rd_kafka_t *c;
|
|
469
|
+
const char *topic = "test";
|
|
470
|
+
const int msgcnt = 10;
|
|
471
|
+
|
|
472
|
+
TEST_SAY(_C_MAG "[ Test with follower down ]\n");
|
|
473
|
+
|
|
474
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
475
|
+
/* Set partition leader to broker 1. */
|
|
476
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 1);
|
|
477
|
+
rd_kafka_mock_partition_set_follower(mcluster, topic, 0, 2);
|
|
478
|
+
|
|
479
|
+
test_conf_init(&conf, NULL, 0);
|
|
480
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
481
|
+
test_conf_set(conf, "client.rack", "myrack");
|
|
482
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
483
|
+
test_conf_set(conf, "topic.metadata.refresh.interval.ms", "60000");
|
|
484
|
+
test_conf_set(conf, "fetch.error.backoff.ms", "1000");
|
|
485
|
+
test_conf_set(conf, "fetch.message.max.bytes", "10");
|
|
486
|
+
|
|
487
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
488
|
+
|
|
489
|
+
test_consumer_assign_partition("follower down", c, topic, 0,
|
|
490
|
+
RD_KAFKA_OFFSET_INVALID);
|
|
491
|
+
|
|
492
|
+
/* Since there are no messages, this poll only waits for metadata, and
|
|
493
|
+
* then sets the preferred replica after the first fetch request. */
|
|
494
|
+
test_consumer_poll_no_msgs("Initial metadata and preferred replica set",
|
|
495
|
+
c, 0, 2000);
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
/* Seed the topic with messages */
|
|
499
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, 1000,
|
|
500
|
+
"bootstrap.servers", bootstraps,
|
|
501
|
+
"batch.num.messages", "10", NULL);
|
|
502
|
+
|
|
503
|
+
/* Set follower down. When follower is set as DOWN, we also expect
|
|
504
|
+
* that the cluster itself knows and does not ask us to change our
|
|
505
|
+
* preferred replica to the broker which is down. To facilitate this,
|
|
506
|
+
* we just set the follower to 3 instead of 2. */
|
|
507
|
+
allowed_error = RD_KAFKA_RESP_ERR__TRANSPORT;
|
|
508
|
+
test_curr->is_fatal_cb = error_is_fatal_cb;
|
|
509
|
+
rd_kafka_mock_broker_set_down(mcluster, 2);
|
|
510
|
+
rd_kafka_mock_partition_set_follower(mcluster, topic, 0, 3);
|
|
511
|
+
|
|
512
|
+
/* Wee should change to the new follower when the old one goes down,
|
|
513
|
+
* and fetch from there without timing out. */
|
|
514
|
+
test_msgver_t mv;
|
|
515
|
+
test_msgver_init(&mv, 0);
|
|
516
|
+
test_consumer_poll_timeout("from other follower", c, 0, 1, 0, msgcnt,
|
|
517
|
+
&mv, 2000);
|
|
518
|
+
test_msgver_verify0(
|
|
519
|
+
__FUNCTION__, __LINE__, "broker_id", &mv, TEST_MSGVER_BY_BROKER_ID,
|
|
520
|
+
(struct test_mv_vs) {
|
|
521
|
+
.msg_base = 0, .exp_cnt = msgcnt, .broker_id = 3});
|
|
522
|
+
test_msgver_clear(&mv);
|
|
523
|
+
|
|
524
|
+
test_consumer_close(c);
|
|
525
|
+
|
|
526
|
+
rd_kafka_destroy(c);
|
|
527
|
+
|
|
528
|
+
test_mock_cluster_destroy(mcluster);
|
|
529
|
+
|
|
530
|
+
TEST_SAY(_C_GRN "[ Test with follower down PASSED ]\n");
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* @brief When a seek is done with a leader epoch,
|
|
536
|
+
* the expected behavior is to validate it and
|
|
537
|
+
* start fetching from the end offset of that epoch if
|
|
538
|
+
* less than current offset.
|
|
539
|
+
* This is possible in case of external group offsets storage,
|
|
540
|
+
* associated with an unclean leader election.
|
|
541
|
+
*/
|
|
542
|
+
static void do_test_seek_to_offset_with_previous_epoch(void) {
|
|
543
|
+
const char *bootstraps;
|
|
544
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
545
|
+
rd_kafka_conf_t *conf;
|
|
546
|
+
rd_kafka_t *c;
|
|
547
|
+
const char *topic = "test";
|
|
548
|
+
const int msgcnt = 10;
|
|
549
|
+
const size_t msgsize = 1000;
|
|
550
|
+
rd_kafka_topic_partition_list_t *rktpars;
|
|
551
|
+
rd_kafka_topic_partition_t *rktpar;
|
|
552
|
+
|
|
553
|
+
SUB_TEST_QUICK();
|
|
554
|
+
|
|
555
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
556
|
+
|
|
557
|
+
/* Seed the topic with messages */
|
|
558
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, msgsize,
|
|
559
|
+
"bootstrap.servers", bootstraps, NULL);
|
|
560
|
+
|
|
561
|
+
test_conf_init(&conf, NULL, 0);
|
|
562
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
563
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
564
|
+
|
|
565
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
566
|
+
|
|
567
|
+
test_consumer_assign_partition("zero", c, topic, 0,
|
|
568
|
+
RD_KAFKA_OFFSET_INVALID);
|
|
569
|
+
|
|
570
|
+
test_consumer_poll("first", c, 0, 0, msgcnt, msgcnt, NULL);
|
|
571
|
+
|
|
572
|
+
rd_kafka_mock_partition_set_leader(mcluster, topic, 0, 2);
|
|
573
|
+
|
|
574
|
+
/* Seed the topic with messages */
|
|
575
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, msgcnt, msgsize,
|
|
576
|
+
"bootstrap.servers", bootstraps, NULL);
|
|
577
|
+
|
|
578
|
+
test_consumer_poll("second", c, 0, 0, msgcnt, msgcnt, NULL);
|
|
579
|
+
|
|
580
|
+
rktpars = rd_kafka_topic_partition_list_new(1);
|
|
581
|
+
rktpar = rd_kafka_topic_partition_list_add(rktpars, topic, 0);
|
|
582
|
+
rktpar->offset = msgcnt * 2;
|
|
583
|
+
/* Will validate the offset at start fetching again
|
|
584
|
+
* from offset 'msgcnt'. */
|
|
585
|
+
rd_kafka_topic_partition_set_leader_epoch(rktpar, 0);
|
|
586
|
+
rd_kafka_seek_partitions(c, rktpars, -1);
|
|
587
|
+
rd_kafka_topic_partition_list_destroy(rktpars);
|
|
588
|
+
|
|
589
|
+
test_consumer_poll("third", c, 0, 0, msgcnt, msgcnt, NULL);
|
|
590
|
+
|
|
591
|
+
test_consumer_close(c);
|
|
592
|
+
rd_kafka_destroy(c);
|
|
593
|
+
|
|
594
|
+
test_mock_cluster_destroy(mcluster);
|
|
595
|
+
|
|
596
|
+
SUB_TEST_PASS();
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
int main_0104_fetch_from_follower_mock(int argc, char **argv) {
|
|
601
|
+
|
|
602
|
+
TEST_SKIP_MOCK_CLUSTER(0);
|
|
603
|
+
|
|
604
|
+
test_timeout_set(50);
|
|
605
|
+
|
|
606
|
+
do_test_offset_reset("earliest");
|
|
607
|
+
do_test_offset_reset("latest");
|
|
608
|
+
|
|
609
|
+
do_test_offset_reset_lag();
|
|
610
|
+
|
|
611
|
+
do_test_unknown_follower();
|
|
612
|
+
|
|
613
|
+
do_test_replica_not_available();
|
|
614
|
+
|
|
615
|
+
do_test_delegate_to_leader_on_error(
|
|
616
|
+
RD_KAFKA_RESP_ERR_OFFSET_NOT_AVAILABLE);
|
|
617
|
+
|
|
618
|
+
do_test_not_leader_or_follower();
|
|
619
|
+
|
|
620
|
+
do_test_follower_down();
|
|
621
|
+
|
|
622
|
+
do_test_seek_to_offset_with_previous_epoch();
|
|
623
|
+
|
|
624
|
+
return 0;
|
|
625
|
+
}
|