@ohos-ports/confluentinc-kafka-javascript 1.10.0-beta.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/CHANGELOG.md +457 -0
- package/LICENSE.kafkajs +31 -0
- package/LICENSE.node-rdkafka +25 -0
- package/LICENSE.txt +20 -0
- package/README.md +133 -0
- package/binding.gyp +184 -0
- package/build/Release/confluent-kafka-javascript.node +0 -0
- package/build/deps/librdkafka++.so.1 +0 -0
- package/build/deps/librdkafka.Makefile +6 -0
- package/build/deps/librdkafka.so.1 +0 -0
- package/build/deps/librdkafka.target.mk +55 -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 +35 -0
- package/deps/librdkafka/.gdbmacros +19 -0
- package/deps/librdkafka/CHANGELOG.md +2477 -0
- package/deps/librdkafka/CMakeLists.txt +291 -0
- package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
- package/deps/librdkafka/CONFIGURATION.md +212 -0
- package/deps/librdkafka/CONTRIBUTING.md +431 -0
- package/deps/librdkafka/Doxyfile +2375 -0
- package/deps/librdkafka/INTRODUCTION.md +2752 -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 +201 -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 +341 -0
- package/deps/librdkafka/dev-conf.sh +123 -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/service.yml +182 -0
- package/deps/librdkafka/src/CMakeLists.txt +379 -0
- package/deps/librdkafka/src/Makefile +105 -0
- package/deps/librdkafka/src/README.lz4.md +30 -0
- package/deps/librdkafka/src/cJSON.c +3191 -0
- package/deps/librdkafka/src/cJSON.h +306 -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 +592 -0
- package/deps/librdkafka/src/rdaddr.c +255 -0
- package/deps/librdkafka/src/rdaddr.h +202 -0
- package/deps/librdkafka/src/rdatomic.h +262 -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 +831 -0
- package/deps/librdkafka/src/rdhttp.h +101 -0
- package/deps/librdkafka/src/rdinterval.h +177 -0
- package/deps/librdkafka/src/rdkafka.c +7287 -0
- package/deps/librdkafka/src/rdkafka.h +11795 -0
- package/deps/librdkafka/src/rdkafka_admin.c +10165 -0
- package/deps/librdkafka/src/rdkafka_admin.h +658 -0
- package/deps/librdkafka/src/rdkafka_assignment.c +1282 -0
- package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
- package/deps/librdkafka/src/rdkafka_assignor.c +1800 -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 +222 -0
- package/deps/librdkafka/src/rdkafka_broker.c +6736 -0
- package/deps/librdkafka/src/rdkafka_broker.h +851 -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 +8310 -0
- package/deps/librdkafka/src/rdkafka_cgrp.h +589 -0
- package/deps/librdkafka/src/rdkafka_conf.c +5177 -0
- package/deps/librdkafka/src/rdkafka_conf.h +746 -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 +3820 -0
- package/deps/librdkafka/src/rdkafka_fetcher.h +62 -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 +1505 -0
- package/deps/librdkafka/src/rdkafka_interceptor.c +842 -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 +2347 -0
- package/deps/librdkafka/src/rdkafka_metadata.h +350 -0
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
- package/deps/librdkafka/src/rdkafka_mock.c +4514 -0
- package/deps/librdkafka/src/rdkafka_mock.h +867 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1877 -0
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +5255 -0
- package/deps/librdkafka/src/rdkafka_mock_int.h +1005 -0
- package/deps/librdkafka/src/rdkafka_mock_sharegrp.c +1207 -0
- package/deps/librdkafka/src/rdkafka_msg.c +2619 -0
- package/deps/librdkafka/src/rdkafka_msg.h +629 -0
- package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
- package/deps/librdkafka/src/rdkafka_msgset.h +105 -0
- package/deps/librdkafka/src/rdkafka_msgset_reader.c +2099 -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 +1219 -0
- package/deps/librdkafka/src/rdkafka_op.h +1065 -0
- package/deps/librdkafka/src/rdkafka_partition.c +5109 -0
- package/deps/librdkafka/src/rdkafka_partition.h +1215 -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 +739 -0
- package/deps/librdkafka/src/rdkafka_protocol.h +131 -0
- package/deps/librdkafka/src/rdkafka_queue.c +1351 -0
- package/deps/librdkafka/src/rdkafka_queue.h +1235 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
- package/deps/librdkafka/src/rdkafka_request.c +7298 -0
- package/deps/librdkafka/src/rdkafka_request.h +761 -0
- package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
- package/deps/librdkafka/src/rdkafka_sasl.c +589 -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 +1827 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +52 -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_share_acknowledgement.c +1445 -0
- package/deps/librdkafka/src/rdkafka_share_acknowledgement.h +373 -0
- package/deps/librdkafka/src/rdkafka_ssl.c +2235 -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 +411 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +761 -0
- package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1307 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.c +1309 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.h +459 -0
- package/deps/librdkafka/src/rdkafka_timer.c +407 -0
- package/deps/librdkafka/src/rdkafka_timer.h +117 -0
- package/deps/librdkafka/src/rdkafka_topic.c +2382 -0
- package/deps/librdkafka/src/rdkafka_topic.h +369 -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 +593 -0
- package/deps/librdkafka/src/rdlist.h +444 -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 +151 -0
- package/deps/librdkafka/src/rdrand.h +72 -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 +564 -0
- package/deps/librdkafka/src/rdunittest.h +232 -0
- package/deps/librdkafka/src/rdunittest_acknowledge.c +1177 -0
- package/deps/librdkafka/src/rdunittest_fetcher.c +1211 -0
- package/deps/librdkafka/src/rdunittest_msgset_errors.c +1521 -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 +210 -0
- package/deps/librdkafka/src/tinycthread_extra.h +218 -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 +272 -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 +444 -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 +331 -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 +529 -0
- package/deps/librdkafka/tests/0065-yield.cpp +140 -0
- package/deps/librdkafka/tests/0066-plugins.cpp +143 -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 +366 -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 +674 -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 +1164 -0
- package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
- package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +217 -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 +279 -0
- package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
- package/deps/librdkafka/tests/0137-barrier_batch_consume.c +752 -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 +931 -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 +1210 -0
- package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +569 -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/0155-share_group_heartbeat_mock.c +2695 -0
- package/deps/librdkafka/tests/0156-share_consumer_fetch_mock.c +1551 -0
- package/deps/librdkafka/tests/0157-share_consumer_ack_mock.c +1788 -0
- package/deps/librdkafka/tests/0158-share_consumer_transactions_mock.c +467 -0
- package/deps/librdkafka/tests/0170-share_consumer_subscription.c +2192 -0
- package/deps/librdkafka/tests/0171-share_consumer_consume.c +2150 -0
- package/deps/librdkafka/tests/0172-share_consumer_acknowledge.c +1919 -0
- package/deps/librdkafka/tests/0173-share_consumer_commit_async.c +2735 -0
- package/deps/librdkafka/tests/0174-share_consumer_concurrency.c +1434 -0
- package/deps/librdkafka/tests/0175-share_consumer_groups.c +574 -0
- package/deps/librdkafka/tests/0176-share_consumer_commit_sync.c +2986 -0
- package/deps/librdkafka/tests/0177-share_consumer_transactions.c +1815 -0
- package/deps/librdkafka/tests/0178-share_consumer_close.c +2102 -0
- package/deps/librdkafka/tests/0179-share_consumer_destroy.c +2482 -0
- package/deps/librdkafka/tests/0180-share_consumer_config.c +1677 -0
- package/deps/librdkafka/tests/0181-share_consumer_topic_delete.c +354 -0
- package/deps/librdkafka/tests/0182-share_consumer_error_handling_mock.c +3358 -0
- package/deps/librdkafka/tests/0183-share_consumer_leader_change_mock.c +1234 -0
- package/deps/librdkafka/tests/0184-share_consumer_topic_recreate.c +1356 -0
- package/deps/librdkafka/tests/0185-share_consumer_max_poll_interval.c +557 -0
- package/deps/librdkafka/tests/0186-share_consumer_fatal_error.c +360 -0
- package/deps/librdkafka/tests/0190-share_consumer_telemetry.c +387 -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 +193 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -0
- package/deps/librdkafka/tests/Makefile +182 -0
- package/deps/librdkafka/tests/README.md +514 -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 +203 -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 +81 -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 +141 -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/share_telemetry_verify/share-otel-collector-config.yaml +28 -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 +8376 -0
- package/deps/librdkafka/tests/test.conf.example +27 -0
- package/deps/librdkafka/tests/test.h +1150 -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.15.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 +282 -0
- package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
- package/deps/librdkafka/win32/msbuild.ps1 +58 -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 +278 -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 +83 -0
- package/deps/windows-install.py +80 -0
- package/index.d.ts +3 -0
- package/lib/admin.js +732 -0
- package/lib/client.js +679 -0
- package/lib/error.js +501 -0
- package/lib/index.js +8 -0
- package/lib/kafka-consumer-stream.js +399 -0
- package/lib/kafka-consumer.js +798 -0
- package/lib/kafkajs/_admin.js +1052 -0
- package/lib/kafkajs/_common.js +887 -0
- package/lib/kafkajs/_consumer.js +2156 -0
- package/lib/kafkajs/_consumer_cache.js +310 -0
- package/lib/kafkajs/_error.js +298 -0
- package/lib/kafkajs/_kafka.js +125 -0
- package/lib/kafkajs/_linked-list.js +220 -0
- package/lib/kafkajs/_producer.js +863 -0
- package/lib/kafkajs/index.js +5 -0
- package/lib/producer/high-level-producer.js +400 -0
- package/lib/producer-stream.js +337 -0
- package/lib/producer.js +405 -0
- package/lib/rdkafka.js +44 -0
- package/lib/tools/ref-counter.js +53 -0
- package/lib/topic-partition.js +91 -0
- package/lib/topic.js +43 -0
- package/lib/util.js +55 -0
- package/librdkafka.js +12 -0
- package/package.json +85 -0
- package/shim/source_location +54 -0
- package/src/admin.cc +1597 -0
- package/src/admin.h +112 -0
- package/src/binding.cc +76 -0
- package/src/binding.h +25 -0
- package/src/callbacks.cc +676 -0
- package/src/callbacks.h +302 -0
- package/src/common.cc +1628 -0
- package/src/common.h +192 -0
- package/src/config.cc +219 -0
- package/src/config.h +61 -0
- package/src/connection.cc +703 -0
- package/src/connection.h +117 -0
- package/src/errors.cc +119 -0
- package/src/errors.h +60 -0
- package/src/kafka-consumer.cc +1539 -0
- package/src/kafka-consumer.h +147 -0
- package/src/producer.cc +917 -0
- package/src/producer.h +124 -0
- package/src/topic.cc +173 -0
- package/src/topic.h +54 -0
- package/src/workers.cc +1714 -0
- package/src/workers.h +690 -0
- package/types/config.d.ts +1269 -0
- package/types/errors.d.ts +373 -0
- package/types/kafkajs.d.ts +568 -0
- package/types/rdkafka.d.ts +571 -0
- package/util/configure.js +32 -0
- package/util/generate-docs.sh +18 -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,354 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2026, Confluent Inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
#include "test.h"
|
|
30
|
+
#include "testshared.h"
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @brief Share consumer topic-deletion acknowledgement tests.
|
|
34
|
+
*
|
|
35
|
+
* Consume a full batch from a 3-partition topic, then acknowledge and
|
|
36
|
+
* commit it either before or after deleting that topic, in implicit and
|
|
37
|
+
* explicit modes. The after-delete case is run with two metadata configs
|
|
38
|
+
* (refresh disabled vs fast refresh + no propagation delay) to exercise
|
|
39
|
+
* both "heartbeat reassignment first" and "metadata refresh first"
|
|
40
|
+
* orderings. The ordering is best-effort — the heartbeat may still win in
|
|
41
|
+
* the fast-refresh config — but the app-facing result is identical: topic
|
|
42
|
+
* deletion does not clear the cached leader, so the acknowledgement
|
|
43
|
+
* reaches the broker and the per-partition commit result is
|
|
44
|
+
* UNKNOWN_TOPIC_OR_PART / UNKNOWN_TOPIC_ID. Each case then produces to and
|
|
45
|
+
* drains a second, non-deleted topic to confirm the consumer keeps working
|
|
46
|
+
* and only the surviving topic is returned.
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
/** Common producer reused across all tests. */
|
|
50
|
+
static rd_kafka_t *common_producer;
|
|
51
|
+
|
|
52
|
+
/** Common admin client reused across all tests. */
|
|
53
|
+
static rd_kafka_t *common_admin;
|
|
54
|
+
|
|
55
|
+
#define TD_NPART 3
|
|
56
|
+
#define TD_PER_PART 10
|
|
57
|
+
#define TD_TOTAL (TD_NPART * TD_PER_PART)
|
|
58
|
+
#define TD_KEEP_MSGS 5
|
|
59
|
+
|
|
60
|
+
typedef enum {
|
|
61
|
+
ACK_BEFORE_DELETE,
|
|
62
|
+
ACK_AFTER_HB_FIRST,
|
|
63
|
+
ACK_AFTER_MD_FIRST,
|
|
64
|
+
} ack_timing_t;
|
|
65
|
+
|
|
66
|
+
static const char *ack_timing_name(ack_timing_t t) {
|
|
67
|
+
switch (t) {
|
|
68
|
+
case ACK_BEFORE_DELETE:
|
|
69
|
+
return "before-delete";
|
|
70
|
+
case ACK_AFTER_HB_FIRST:
|
|
71
|
+
return "after-delete-heartbeat-first";
|
|
72
|
+
case ACK_AFTER_MD_FIRST:
|
|
73
|
+
return "after-delete-metadata-first";
|
|
74
|
+
}
|
|
75
|
+
return "?";
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static rd_bool_t err_is_unknown_topic(rd_kafka_resp_err_t err) {
|
|
79
|
+
/* TODO KIP-932: When the whole topic is deleted the broker cannot find
|
|
80
|
+
* the share partition and fails the entire ShareAcknowledge with a
|
|
81
|
+
* top-level UNKNOWN_SERVER_ERROR (RD_KAFKA_RESP_ERR_UNKNOWN) instead of
|
|
82
|
+
* a per-partition UNKNOWN_TOPIC_OR_PART / UNKNOWN_TOPIC_ID. Remove the
|
|
83
|
+
* UNKNOWN case once the broker reports the deletion per partition. */
|
|
84
|
+
return err == RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART ||
|
|
85
|
+
err == RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_ID ||
|
|
86
|
+
err == RD_KAFKA_RESP_ERR_UNKNOWN;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
static rd_kafka_share_t *create_topic_delete_consumer(const char *group,
|
|
90
|
+
const char *mode,
|
|
91
|
+
ack_timing_t timing) {
|
|
92
|
+
rd_kafka_conf_t *conf;
|
|
93
|
+
rd_kafka_share_t *rkshare;
|
|
94
|
+
char errstr[512];
|
|
95
|
+
|
|
96
|
+
test_conf_init(&conf, NULL, 0);
|
|
97
|
+
test_conf_set(conf, "group.id", group);
|
|
98
|
+
test_conf_set(conf, "share.acknowledgement.mode", mode);
|
|
99
|
+
/* Bound the batch size; the test's batch array is sized for this. */
|
|
100
|
+
test_conf_set(conf, "max.poll.records", "100");
|
|
101
|
+
if (timing == ACK_AFTER_MD_FIRST) {
|
|
102
|
+
/* Refresh metadata quickly and mark the deleted topic
|
|
103
|
+
* NOTEXISTS without the propagation delay, so a metadata
|
|
104
|
+
* refresh is likely to land before the heartbeat
|
|
105
|
+
* reassignment. */
|
|
106
|
+
test_conf_set(conf, "topic.metadata.refresh.interval.ms",
|
|
107
|
+
"200");
|
|
108
|
+
test_conf_set(conf, "topic.metadata.propagation.max.ms", "0");
|
|
109
|
+
}
|
|
110
|
+
/* Otherwise use the default metadata config: the periodic refresh
|
|
111
|
+
* (minutes) does not fire during this short test, so the heartbeat
|
|
112
|
+
* reassignment lands before any metadata refresh ("heartbeat
|
|
113
|
+
* first"). A large explicit interval is avoided because it would
|
|
114
|
+
* inflate metadata.max.age.ms past the 32-bit overflow point. */
|
|
115
|
+
|
|
116
|
+
rkshare = rd_kafka_share_consumer_new(conf, errstr, sizeof(errstr));
|
|
117
|
+
TEST_ASSERT(rkshare, "Failed to create share consumer: %s", errstr);
|
|
118
|
+
return rkshare;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
static void do_test_topic_delete_ack(const char *mode, ack_timing_t timing) {
|
|
122
|
+
rd_kafka_share_t *rkshare;
|
|
123
|
+
rd_kafka_messages_t *batch = NULL;
|
|
124
|
+
rd_kafka_topic_partition_list_t *results = NULL;
|
|
125
|
+
rd_kafka_error_t *error;
|
|
126
|
+
rd_kafka_resp_err_t del_err;
|
|
127
|
+
char topic_del[512], topic_keep[512], group[160];
|
|
128
|
+
char del_base[128], keep_base[128];
|
|
129
|
+
char *del_topics[1];
|
|
130
|
+
int part_cnt[TD_NPART] = {0};
|
|
131
|
+
size_t m;
|
|
132
|
+
int p, i;
|
|
133
|
+
int total = 0;
|
|
134
|
+
int attempts = 20;
|
|
135
|
+
int keep_rcvd = 0;
|
|
136
|
+
int idle_polls = 0;
|
|
137
|
+
rd_bool_t explicit_ack = !strcmp(mode, "explicit");
|
|
138
|
+
rd_bool_t after_delete = timing != ACK_BEFORE_DELETE;
|
|
139
|
+
|
|
140
|
+
SUB_TEST("mode=%s, %s", mode, ack_timing_name(timing));
|
|
141
|
+
|
|
142
|
+
/* Embed mode+timing in the base name so the subtests never share a
|
|
143
|
+
* topic even if test_mk_topic_name repeats its random suffix;
|
|
144
|
+
* otherwise a sibling's leftover records bleed into this drain. */
|
|
145
|
+
rd_snprintf(del_base, sizeof(del_base), "0181-td-del-%s-%s", mode,
|
|
146
|
+
ack_timing_name(timing));
|
|
147
|
+
rd_snprintf(keep_base, sizeof(keep_base), "0181-td-keep-%s-%s", mode,
|
|
148
|
+
ack_timing_name(timing));
|
|
149
|
+
rd_snprintf(topic_del, sizeof(topic_del), "%s",
|
|
150
|
+
test_mk_topic_name(del_base, 1));
|
|
151
|
+
rd_snprintf(topic_keep, sizeof(topic_keep), "%s",
|
|
152
|
+
test_mk_topic_name(keep_base, 1));
|
|
153
|
+
rd_snprintf(group, sizeof(group), "0181-td-%s-%s", mode,
|
|
154
|
+
ack_timing_name(timing));
|
|
155
|
+
del_topics[0] = topic_del;
|
|
156
|
+
|
|
157
|
+
test_create_topic_wait_exists(NULL, topic_del, TD_NPART, -1, 60 * 1000);
|
|
158
|
+
test_create_topic_wait_exists(NULL, topic_keep, 1, -1, 60 * 1000);
|
|
159
|
+
for (p = 0; p < TD_NPART; p++)
|
|
160
|
+
test_produce_msgs_simple(common_producer, topic_del, p,
|
|
161
|
+
TD_PER_PART);
|
|
162
|
+
|
|
163
|
+
rkshare = create_topic_delete_consumer(group, mode, timing);
|
|
164
|
+
/* Configure earliest after the consumer exists but before it
|
|
165
|
+
* subscribes/joins, so the pre-produced records are read. */
|
|
166
|
+
test_share_set_auto_offset_reset(group, "earliest");
|
|
167
|
+
test_share_consumer_subscribe_multi(rkshare, 2, topic_del, topic_keep);
|
|
168
|
+
TEST_SAY("Subscribed to %s and %s; starting phase 1 drain\n", topic_del,
|
|
169
|
+
topic_keep);
|
|
170
|
+
|
|
171
|
+
/* Phase 1: drain all produced records. The partitions live on
|
|
172
|
+
* different brokers and the share consumer fetches one broker per
|
|
173
|
+
* round, so the records arrive across several batches; each round
|
|
174
|
+
* also flushes the previous broker's acknowledgements. Verify all
|
|
175
|
+
* records and that every partition is represented. */
|
|
176
|
+
while (total < TD_TOTAL && attempts-- > 0) {
|
|
177
|
+
size_t n;
|
|
178
|
+
error = rd_kafka_share_poll(rkshare, 2000, &batch);
|
|
179
|
+
TEST_ASSERT(!error, "share_poll failed: %s",
|
|
180
|
+
rd_kafka_error_string(error));
|
|
181
|
+
n = rd_kafka_messages_count(batch);
|
|
182
|
+
TEST_SAY("Phase 1: got %" PRIusz " record(s), total %d/%d\n", n,
|
|
183
|
+
total + (int)n, TD_TOTAL);
|
|
184
|
+
for (m = 0; m < n; m++) {
|
|
185
|
+
rd_kafka_message_t *msg =
|
|
186
|
+
rd_kafka_messages_get(batch, m);
|
|
187
|
+
TEST_ASSERT(
|
|
188
|
+
!strcmp(rd_kafka_topic_name(msg->rkt), topic_del),
|
|
189
|
+
"Phase 1 record from unexpected topic %s",
|
|
190
|
+
rd_kafka_topic_name(msg->rkt));
|
|
191
|
+
TEST_ASSERT(
|
|
192
|
+
msg->partition >= 0 && msg->partition < TD_NPART,
|
|
193
|
+
"Unexpected partition %" PRId32, msg->partition);
|
|
194
|
+
part_cnt[msg->partition]++;
|
|
195
|
+
if (explicit_ack) {
|
|
196
|
+
rd_kafka_resp_err_t ack_err =
|
|
197
|
+
rd_kafka_share_acknowledge(rkshare, msg);
|
|
198
|
+
TEST_ASSERT(!ack_err, "acknowledge failed: %s",
|
|
199
|
+
rd_kafka_err2str(ack_err));
|
|
200
|
+
}
|
|
201
|
+
total++;
|
|
202
|
+
}
|
|
203
|
+
rd_kafka_messages_destroy(batch);
|
|
204
|
+
batch = NULL;
|
|
205
|
+
}
|
|
206
|
+
TEST_ASSERT(total == TD_TOTAL, "Expected %d records, got %d", TD_TOTAL,
|
|
207
|
+
total);
|
|
208
|
+
for (p = 0; p < TD_NPART; p++)
|
|
209
|
+
TEST_ASSERT(part_cnt[p] == TD_PER_PART,
|
|
210
|
+
"Expected %d records from partition %d, got %d",
|
|
211
|
+
TD_PER_PART, p, part_cnt[p]);
|
|
212
|
+
TEST_SAY("Phase 1 complete: drained all %d records\n", TD_TOTAL);
|
|
213
|
+
|
|
214
|
+
if (after_delete) {
|
|
215
|
+
TEST_SAY("Deleting topic %s before commit\n", topic_del);
|
|
216
|
+
del_err = test_DeleteTopics_simple(common_admin, NULL,
|
|
217
|
+
del_topics, 1, NULL);
|
|
218
|
+
TEST_ASSERT(!del_err, "DeleteTopics failed: %s",
|
|
219
|
+
rd_kafka_err2str(del_err));
|
|
220
|
+
/* Let the chosen ordering take effect before committing. */
|
|
221
|
+
rd_sleep(1);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Commit the acknowledgements; the per-partition results carry
|
|
225
|
+
* the outcome for each partition. */
|
|
226
|
+
TEST_SAY("Calling commit_sync\n");
|
|
227
|
+
error = rd_kafka_share_commit_sync(rkshare, 30 * 1000, &results);
|
|
228
|
+
TEST_SAY("commit_sync returned (error: %s)\n",
|
|
229
|
+
error ? rd_kafka_error_string(error) : "none");
|
|
230
|
+
if (error)
|
|
231
|
+
rd_kafka_error_destroy(error);
|
|
232
|
+
TEST_ASSERT(results && results->cnt > 0,
|
|
233
|
+
"Expected per-partition commit results");
|
|
234
|
+
for (i = 0; i < results->cnt; i++) {
|
|
235
|
+
rd_kafka_resp_err_t perr = results->elems[i].err;
|
|
236
|
+
if (after_delete)
|
|
237
|
+
TEST_ASSERT(err_is_unknown_topic(perr),
|
|
238
|
+
"Expected a deleted-topic error for %s "
|
|
239
|
+
"[%" PRId32 "], got %s",
|
|
240
|
+
results->elems[i].topic,
|
|
241
|
+
results->elems[i].partition,
|
|
242
|
+
rd_kafka_err2name(perr));
|
|
243
|
+
else
|
|
244
|
+
TEST_ASSERT(perr == RD_KAFKA_RESP_ERR_NO_ERROR,
|
|
245
|
+
"Expected success for %s [%" PRId32
|
|
246
|
+
"], got %s",
|
|
247
|
+
results->elems[i].topic,
|
|
248
|
+
results->elems[i].partition,
|
|
249
|
+
rd_kafka_err2name(perr));
|
|
250
|
+
}
|
|
251
|
+
TEST_SAY("commit_sync results verified (%d partition(s))\n",
|
|
252
|
+
results->cnt);
|
|
253
|
+
rd_kafka_topic_partition_list_destroy(results);
|
|
254
|
+
|
|
255
|
+
if (!after_delete) {
|
|
256
|
+
TEST_SAY("Deleting topic %s after commit\n", topic_del);
|
|
257
|
+
del_err = test_DeleteTopics_simple(common_admin, NULL,
|
|
258
|
+
del_topics, 1, NULL);
|
|
259
|
+
TEST_ASSERT(!del_err, "DeleteTopics failed: %s",
|
|
260
|
+
rd_kafka_err2str(del_err));
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* Let the topic delete propagate through the cluster and the
|
|
264
|
+
* share session reconcile (the consumer subscribed to both
|
|
265
|
+
* topics; the broker has to drop the deleted topic from the
|
|
266
|
+
* session before it will start serving the surviving one
|
|
267
|
+
* again). Without this, the produce + consume_batch loop below
|
|
268
|
+
* races the session-recovery window and Phase 2 drains 0
|
|
269
|
+
* records. */
|
|
270
|
+
rd_sleep(3);
|
|
271
|
+
|
|
272
|
+
/* Phase 2: drain the surviving topic to empty and verify only its
|
|
273
|
+
* records are returned (the deleted topic must contribute none). */
|
|
274
|
+
test_produce_msgs_simple(common_producer, topic_keep, 0, TD_KEEP_MSGS);
|
|
275
|
+
TEST_SAY("Phase 2: draining surviving topic %s\n", topic_keep);
|
|
276
|
+
|
|
277
|
+
/* TODO KIP-932: the deleted topic makes the broker fail the whole
|
|
278
|
+
* session with a top-level UNKNOWN for a while, so we give the drain
|
|
279
|
+
* a larger budget and ignore empty polls until all records arrive.
|
|
280
|
+
* Revert to a plain drain loop once the broker is fixed. */
|
|
281
|
+
attempts = 60;
|
|
282
|
+
while (attempts-- > 0) {
|
|
283
|
+
size_t got;
|
|
284
|
+
error = rd_kafka_share_poll(rkshare, 1000, &batch);
|
|
285
|
+
TEST_ASSERT(!error, "share_poll failed: %s",
|
|
286
|
+
rd_kafka_error_string(error));
|
|
287
|
+
got = rd_kafka_messages_count(batch);
|
|
288
|
+
TEST_SAY("Phase 2: got %" PRIusz
|
|
289
|
+
" record(s), kept %d/%d (idle %d)\n",
|
|
290
|
+
got, keep_rcvd, TD_KEEP_MSGS, idle_polls);
|
|
291
|
+
if (got == 0) {
|
|
292
|
+
/* An empty poll counts as drained only after every
|
|
293
|
+
* record has arrived; earlier ones are the session
|
|
294
|
+
* still recovering. */
|
|
295
|
+
rd_kafka_messages_destroy(batch);
|
|
296
|
+
batch = NULL;
|
|
297
|
+
if (keep_rcvd >= TD_KEEP_MSGS && ++idle_polls >= 3)
|
|
298
|
+
break;
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
idle_polls = 0;
|
|
302
|
+
for (m = 0; m < got; m++) {
|
|
303
|
+
rd_kafka_message_t *msg =
|
|
304
|
+
rd_kafka_messages_get(batch, m);
|
|
305
|
+
TEST_ASSERT(
|
|
306
|
+
!strcmp(rd_kafka_topic_name(msg->rkt), topic_keep),
|
|
307
|
+
"Phase 2 returned a record from %s; only %s "
|
|
308
|
+
"should remain",
|
|
309
|
+
rd_kafka_topic_name(msg->rkt), topic_keep);
|
|
310
|
+
if (explicit_ack)
|
|
311
|
+
rd_kafka_share_acknowledge(rkshare, msg);
|
|
312
|
+
keep_rcvd++;
|
|
313
|
+
}
|
|
314
|
+
rd_kafka_messages_destroy(batch);
|
|
315
|
+
batch = NULL;
|
|
316
|
+
}
|
|
317
|
+
TEST_ASSERT(keep_rcvd == TD_KEEP_MSGS,
|
|
318
|
+
"Expected to drain exactly %d records from surviving "
|
|
319
|
+
"topic %s, got %d",
|
|
320
|
+
TD_KEEP_MSGS, topic_keep, keep_rcvd);
|
|
321
|
+
|
|
322
|
+
test_share_consumer_close(rkshare);
|
|
323
|
+
test_share_destroy(rkshare);
|
|
324
|
+
|
|
325
|
+
/* TODO KIP-932: add a delete-then-recreate variant once topic
|
|
326
|
+
* recreation handling is fixed. */
|
|
327
|
+
SUB_TEST_PASS();
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
int main_0181_share_consumer_topic_delete(int argc, char **argv) {
|
|
331
|
+
/* Topic deletion is not supported against Windows brokers. */
|
|
332
|
+
if (!strcmp(test_getenv("TEST_BROKER_OS", ""), "windows")) {
|
|
333
|
+
TEST_SKIP("Topic deletion not supported on Windows brokers\n");
|
|
334
|
+
return 0;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/* Budget for all subtests (a timeout multiplier is applied on top). */
|
|
338
|
+
test_timeout_set(120);
|
|
339
|
+
|
|
340
|
+
common_producer = test_create_producer();
|
|
341
|
+
common_admin = test_create_producer();
|
|
342
|
+
|
|
343
|
+
do_test_topic_delete_ack("implicit", ACK_BEFORE_DELETE);
|
|
344
|
+
do_test_topic_delete_ack("implicit", ACK_AFTER_HB_FIRST);
|
|
345
|
+
do_test_topic_delete_ack("implicit", ACK_AFTER_MD_FIRST);
|
|
346
|
+
do_test_topic_delete_ack("explicit", ACK_BEFORE_DELETE);
|
|
347
|
+
do_test_topic_delete_ack("explicit", ACK_AFTER_HB_FIRST);
|
|
348
|
+
do_test_topic_delete_ack("explicit", ACK_AFTER_MD_FIRST);
|
|
349
|
+
|
|
350
|
+
rd_kafka_destroy(common_admin);
|
|
351
|
+
rd_kafka_destroy(common_producer);
|
|
352
|
+
|
|
353
|
+
return 0;
|
|
354
|
+
}
|