@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,557 @@
|
|
|
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 "rdkafka.h"
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @name Share consumer max.poll.interval.ms enforcement (KIP-932).
|
|
34
|
+
*
|
|
35
|
+
* Recreates, for the share consumer, the applicable cases from
|
|
36
|
+
* 0089-max_poll_interval.c and 0091-max_poll_interval_timeout.c:
|
|
37
|
+
*
|
|
38
|
+
* - A share consumer that stops calling rd_kafka_share_poll() for
|
|
39
|
+
* longer than max.poll.interval.ms is considered failed, leaves the share
|
|
40
|
+
* group, and surfaces RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED — even if it
|
|
41
|
+
* never polled once.
|
|
42
|
+
* - The interval is reset only by rd_kafka_share_poll(); other calls
|
|
43
|
+
* (rd_kafka_poll(), polling the log queue) do not reset it.
|
|
44
|
+
* - A blocking rd_kafka_share_poll() that waits longer than
|
|
45
|
+
* max.poll.interval.ms is not counted against the interval.
|
|
46
|
+
* - Steady consumption within the interval never triggers the timeout.
|
|
47
|
+
* - After a timeout the consumer rejoins on the next batch poll.
|
|
48
|
+
* - A second consumer keeps consuming while the first is evicted.
|
|
49
|
+
*
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
/* Longer interval for the real-broker tests (matches 0089/0091), giving the
|
|
53
|
+
* group join/assignment enough headroom not to falsely trip. */
|
|
54
|
+
#define REAL_MAX_POLL_INTERVAL_MS 10000
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @brief Create a share consumer with the given max.poll.interval.ms.
|
|
59
|
+
*
|
|
60
|
+
* @param bootstraps Mock bootstrap servers, or NULL to use the test.conf
|
|
61
|
+
* (real broker) default.
|
|
62
|
+
*/
|
|
63
|
+
static rd_kafka_share_t *create_share_consumer(const char *bootstraps,
|
|
64
|
+
const char *group_id,
|
|
65
|
+
int max_poll_interval_ms) {
|
|
66
|
+
rd_kafka_conf_t *conf;
|
|
67
|
+
rd_kafka_share_t *rkshare;
|
|
68
|
+
char errstr[512];
|
|
69
|
+
char tmp[32];
|
|
70
|
+
|
|
71
|
+
test_conf_init(&conf, NULL, 0);
|
|
72
|
+
if (bootstraps)
|
|
73
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
74
|
+
test_conf_set(conf, "group.id", group_id);
|
|
75
|
+
rd_snprintf(tmp, sizeof(tmp), "%d", max_poll_interval_ms);
|
|
76
|
+
test_conf_set(conf, "max.poll.interval.ms", tmp);
|
|
77
|
+
|
|
78
|
+
rkshare = rd_kafka_share_consumer_new(conf, errstr, sizeof(errstr));
|
|
79
|
+
TEST_ASSERT(rkshare != NULL, "Failed to create share consumer: %s",
|
|
80
|
+
errstr);
|
|
81
|
+
|
|
82
|
+
return rkshare;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @brief Consume one batch.
|
|
88
|
+
*
|
|
89
|
+
* @param max_poll_exceeded If non-NULL, set to rd_true if the batch returned
|
|
90
|
+
* RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED.
|
|
91
|
+
* @returns the number of valid (non-error) messages received.
|
|
92
|
+
*/
|
|
93
|
+
static int share_consume_once(rd_kafka_share_t *rkshare,
|
|
94
|
+
int timeout_ms,
|
|
95
|
+
rd_bool_t *max_poll_exceeded) {
|
|
96
|
+
rd_kafka_messages_t *batch = NULL;
|
|
97
|
+
size_t rcvd = 0;
|
|
98
|
+
size_t i;
|
|
99
|
+
int valid = 0;
|
|
100
|
+
rd_kafka_error_t *error;
|
|
101
|
+
|
|
102
|
+
if (max_poll_exceeded)
|
|
103
|
+
*max_poll_exceeded = rd_false;
|
|
104
|
+
|
|
105
|
+
error = rd_kafka_share_poll(rkshare, timeout_ms, &batch);
|
|
106
|
+
if (error) {
|
|
107
|
+
if (max_poll_exceeded &&
|
|
108
|
+
rd_kafka_error_code(error) ==
|
|
109
|
+
RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED)
|
|
110
|
+
*max_poll_exceeded = rd_true;
|
|
111
|
+
rd_kafka_error_destroy(error);
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
rcvd = rd_kafka_messages_count(batch);
|
|
116
|
+
for (i = 0; i < rcvd; i++) {
|
|
117
|
+
rd_kafka_message_t *msg = rd_kafka_messages_get(batch, i);
|
|
118
|
+
if (!msg->err)
|
|
119
|
+
valid++;
|
|
120
|
+
}
|
|
121
|
+
rd_kafka_messages_destroy(batch);
|
|
122
|
+
batch = NULL;
|
|
123
|
+
|
|
124
|
+
return valid;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @brief Consume batches until at least one message is received, establishing
|
|
130
|
+
* share-group membership and a steady assignment. Fails if no message
|
|
131
|
+
* arrives in time.
|
|
132
|
+
*/
|
|
133
|
+
static void establish_membership(rd_kafka_share_t *rkshare) {
|
|
134
|
+
int attempts;
|
|
135
|
+
|
|
136
|
+
for (attempts = 0; attempts < 30; attempts++) {
|
|
137
|
+
if (share_consume_once(rkshare, 1000, NULL) > 0) {
|
|
138
|
+
TEST_SAY(
|
|
139
|
+
"Membership established (consumed a message)\n");
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
TEST_FAIL("Failed to consume any message to establish membership");
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @brief Poll batches until RD_KAFKA_RESP_ERR__MAX_POLL_EXCEEDED is observed
|
|
150
|
+
* or @p timeout_ms elapses.
|
|
151
|
+
*
|
|
152
|
+
* @returns rd_true if the error was observed.
|
|
153
|
+
*/
|
|
154
|
+
static rd_bool_t wait_max_poll_exceeded(rd_kafka_share_t *rkshare,
|
|
155
|
+
int timeout_ms) {
|
|
156
|
+
int64_t deadline = test_clock() + (int64_t)timeout_ms * 1000;
|
|
157
|
+
|
|
158
|
+
while (test_clock() < deadline) {
|
|
159
|
+
rd_bool_t exceeded = rd_false;
|
|
160
|
+
share_consume_once(rkshare, 500, &exceeded);
|
|
161
|
+
if (exceeded)
|
|
162
|
+
return rd_true;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return rd_false;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @brief Real-broker setup: create a single-partition topic, produce @p msgcnt
|
|
171
|
+
* messages, set the share group's offset reset to earliest, then create
|
|
172
|
+
* a subscribed share consumer with the given max.poll.interval.ms.
|
|
173
|
+
*
|
|
174
|
+
* @param topic Output buffer for the generated topic name.
|
|
175
|
+
*/
|
|
176
|
+
static rd_kafka_share_t *
|
|
177
|
+
real_setup(char *topic, size_t topic_sz, int msgcnt, int max_poll_interval_ms) {
|
|
178
|
+
char group[64];
|
|
179
|
+
uint64_t testid = test_id_generate();
|
|
180
|
+
rd_kafka_share_t *c;
|
|
181
|
+
|
|
182
|
+
rd_snprintf(topic, topic_sz, "%s",
|
|
183
|
+
test_mk_topic_name("0185_share_max_poll", 1));
|
|
184
|
+
test_str_id_generate(group, sizeof(group));
|
|
185
|
+
|
|
186
|
+
test_create_topic_wait_exists(NULL, topic, 1, -1, 5000);
|
|
187
|
+
if (msgcnt > 0)
|
|
188
|
+
test_produce_msgs_easy(topic, testid, 0, msgcnt);
|
|
189
|
+
test_share_set_auto_offset_reset(group, "earliest");
|
|
190
|
+
|
|
191
|
+
c = create_share_consumer(NULL, group, max_poll_interval_ms);
|
|
192
|
+
test_share_consumer_subscribe_multi(c, 1, topic);
|
|
193
|
+
|
|
194
|
+
return c;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
/*
|
|
199
|
+
* ===========================================================================
|
|
200
|
+
* Real broker tests
|
|
201
|
+
* ===========================================================================
|
|
202
|
+
*/
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* @brief Long "processing" (no polling) past max.poll.interval.ms must evict
|
|
206
|
+
* the consumer with MAX_POLL_EXCEEDED, after which it can rejoin.
|
|
207
|
+
*
|
|
208
|
+
* Mirrors 0089 do_test() + do_test_rejoin_after_interval_expire().
|
|
209
|
+
*/
|
|
210
|
+
static void do_test_long_processing(void) {
|
|
211
|
+
char topic[128];
|
|
212
|
+
rd_kafka_share_t *c;
|
|
213
|
+
int consumed = 0;
|
|
214
|
+
int attempts;
|
|
215
|
+
|
|
216
|
+
SUB_TEST();
|
|
217
|
+
|
|
218
|
+
c = real_setup(topic, sizeof(topic), 20, REAL_MAX_POLL_INTERVAL_MS);
|
|
219
|
+
establish_membership(c);
|
|
220
|
+
|
|
221
|
+
TEST_SAY(
|
|
222
|
+
"Simulating long processing: sleeping %ds "
|
|
223
|
+
"(> max.poll.interval.ms=%dms)\n",
|
|
224
|
+
(REAL_MAX_POLL_INTERVAL_MS + 3000) / 1000,
|
|
225
|
+
REAL_MAX_POLL_INTERVAL_MS);
|
|
226
|
+
rd_sleep((REAL_MAX_POLL_INTERVAL_MS + 3000) / 1000);
|
|
227
|
+
|
|
228
|
+
TEST_ASSERT(wait_max_poll_exceeded(c, 10000),
|
|
229
|
+
"Expected MAX_POLL_EXCEEDED after long processing");
|
|
230
|
+
|
|
231
|
+
/* The records consumed before the stall are implicitly acknowledged
|
|
232
|
+
* while detecting the timeout (implicit ack is sent at the start of
|
|
233
|
+
* the consume_batch() that returns the error), so the share-partition
|
|
234
|
+
* start offset has advanced past them. Produce fresh records and
|
|
235
|
+
* verify the consumer rejoins and resumes consuming. */
|
|
236
|
+
test_produce_msgs_easy(topic, test_id_generate(), 0, 20);
|
|
237
|
+
|
|
238
|
+
for (attempts = 0; attempts < 30 && consumed == 0; attempts++)
|
|
239
|
+
consumed += share_consume_once(c, 1000, NULL);
|
|
240
|
+
|
|
241
|
+
TEST_ASSERT(consumed > 0,
|
|
242
|
+
"Consumer did not rejoin after max.poll.interval.ms");
|
|
243
|
+
|
|
244
|
+
test_share_consumer_close(c);
|
|
245
|
+
test_share_destroy(c);
|
|
246
|
+
|
|
247
|
+
SUB_TEST_PASS();
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* @brief A share consumer that subscribes but NEVER calls consume_batch must
|
|
253
|
+
* still be evicted with MAX_POLL_EXCEEDED once the interval elapses.
|
|
254
|
+
*
|
|
255
|
+
* Mirrors 0091 do_test_no_poll().
|
|
256
|
+
*/
|
|
257
|
+
static void do_test_no_poll(void) {
|
|
258
|
+
char topic[128];
|
|
259
|
+
rd_kafka_share_t *c;
|
|
260
|
+
|
|
261
|
+
SUB_TEST();
|
|
262
|
+
|
|
263
|
+
c = real_setup(topic, sizeof(topic), 20, REAL_MAX_POLL_INTERVAL_MS);
|
|
264
|
+
|
|
265
|
+
/* Do NOT consume at all: the background heartbeat joins the group and
|
|
266
|
+
* receives an assignment, which starts the timer; rk_ts_last_poll
|
|
267
|
+
* stays at its initial value, so the interval elapses with no poll. */
|
|
268
|
+
TEST_SAY("Subscribed but never polling; sleeping %ds (> %dms)\n",
|
|
269
|
+
(REAL_MAX_POLL_INTERVAL_MS + 3000) / 1000,
|
|
270
|
+
REAL_MAX_POLL_INTERVAL_MS);
|
|
271
|
+
rd_sleep((REAL_MAX_POLL_INTERVAL_MS + 3000) / 1000);
|
|
272
|
+
|
|
273
|
+
TEST_ASSERT(
|
|
274
|
+
wait_max_poll_exceeded(c, 10000),
|
|
275
|
+
"Expected MAX_POLL_EXCEEDED even though consume_batch() was "
|
|
276
|
+
"never called before the stall");
|
|
277
|
+
|
|
278
|
+
test_share_consumer_close(c);
|
|
279
|
+
test_share_destroy(c);
|
|
280
|
+
|
|
281
|
+
SUB_TEST_PASS();
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* @brief Steady consumption with per-batch processing below
|
|
287
|
+
* max.poll.interval.ms must not evict the consumer.
|
|
288
|
+
*
|
|
289
|
+
* Mirrors 0091 do_test_with_subscribe().
|
|
290
|
+
*/
|
|
291
|
+
static void do_test_steady_consume(void) {
|
|
292
|
+
char topic[128];
|
|
293
|
+
rd_kafka_share_t *c;
|
|
294
|
+
const int msgcnt = 30;
|
|
295
|
+
int consumed = 0;
|
|
296
|
+
int64_t deadline;
|
|
297
|
+
|
|
298
|
+
SUB_TEST();
|
|
299
|
+
|
|
300
|
+
c = real_setup(topic, sizeof(topic), msgcnt, REAL_MAX_POLL_INTERVAL_MS);
|
|
301
|
+
|
|
302
|
+
/* Consume over a span longer than max.poll.interval.ms, with a short
|
|
303
|
+
* "processing" sleep between polls (all under the interval). */
|
|
304
|
+
deadline =
|
|
305
|
+
test_clock() + (int64_t)(REAL_MAX_POLL_INTERVAL_MS + 5000) * 1000;
|
|
306
|
+
while (consumed < msgcnt && test_clock() < deadline) {
|
|
307
|
+
rd_bool_t exceeded = rd_false;
|
|
308
|
+
consumed += share_consume_once(c, 2000, &exceeded);
|
|
309
|
+
TEST_ASSERT(!exceeded,
|
|
310
|
+
"Steady consumption must not trip "
|
|
311
|
+
"max.poll.interval.ms (consumed %d/%d)",
|
|
312
|
+
consumed, msgcnt);
|
|
313
|
+
rd_sleep(1);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
TEST_ASSERT(consumed >= msgcnt, "Expected %d messages, consumed %d",
|
|
317
|
+
msgcnt, consumed);
|
|
318
|
+
|
|
319
|
+
test_share_consumer_close(c);
|
|
320
|
+
test_share_destroy(c);
|
|
321
|
+
|
|
322
|
+
SUB_TEST_PASS();
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* @brief Two share consumers in the same group: the one that stops polling for
|
|
328
|
+
* longer than max.poll.interval.ms is evicted with MAX_POLL_EXCEEDED,
|
|
329
|
+
* while the other keeps consuming.
|
|
330
|
+
*
|
|
331
|
+
* Mirrors 0089 do_test() (two consumers, one stalls). Note: unlike a classic
|
|
332
|
+
* consumer group a share group has no exclusive partition ownership, so the
|
|
333
|
+
* second consumer consumes concurrently and is not gated on the first's
|
|
334
|
+
* eviction — that timing assertion from 0089 does not apply here.
|
|
335
|
+
*/
|
|
336
|
+
static void do_test_two_consumers(void) {
|
|
337
|
+
const char *topic = test_mk_topic_name("0185_share_max_poll", 1);
|
|
338
|
+
char group[64];
|
|
339
|
+
uint64_t testid;
|
|
340
|
+
rd_kafka_share_t *c[2];
|
|
341
|
+
int other_consumed = 0;
|
|
342
|
+
int i;
|
|
343
|
+
int64_t deadline;
|
|
344
|
+
|
|
345
|
+
SUB_TEST();
|
|
346
|
+
|
|
347
|
+
testid = test_id_generate();
|
|
348
|
+
test_str_id_generate(group, sizeof(group));
|
|
349
|
+
|
|
350
|
+
test_create_topic_wait_exists(NULL, topic, 1, -1, 5000);
|
|
351
|
+
test_produce_msgs_easy(topic, testid, 0, 100);
|
|
352
|
+
|
|
353
|
+
for (i = 0; i < 2; i++)
|
|
354
|
+
c[i] = create_share_consumer(NULL, group,
|
|
355
|
+
REAL_MAX_POLL_INTERVAL_MS);
|
|
356
|
+
|
|
357
|
+
test_share_set_auto_offset_reset(group, "earliest");
|
|
358
|
+
|
|
359
|
+
for (i = 0; i < 2; i++)
|
|
360
|
+
test_share_consumer_subscribe_multi(c[i], 1, topic);
|
|
361
|
+
|
|
362
|
+
/* c[0] never polls: it joins the group and is assigned via heartbeat
|
|
363
|
+
* (which starts its max.poll.interval.ms timer) but immediately stalls.
|
|
364
|
+
* Since it never fetches, it never acquires records, so c[1] can
|
|
365
|
+
* consume freely. c[1] keeps polling for longer than the interval,
|
|
366
|
+
* staying in the group and consuming. */
|
|
367
|
+
TEST_SAY("c[0] stalls (never polls); c[1] keeps consuming for %ds\n",
|
|
368
|
+
(REAL_MAX_POLL_INTERVAL_MS + 3000) / 1000);
|
|
369
|
+
deadline =
|
|
370
|
+
test_clock() + (int64_t)(REAL_MAX_POLL_INTERVAL_MS + 3000) * 1000;
|
|
371
|
+
while (test_clock() < deadline)
|
|
372
|
+
other_consumed += share_consume_once(c[1], 1000, NULL);
|
|
373
|
+
|
|
374
|
+
TEST_ASSERT(other_consumed > 0,
|
|
375
|
+
"c[1] should have kept consuming while c[0] stalled");
|
|
376
|
+
|
|
377
|
+
/* c[0] must surface MAX_POLL_EXCEEDED on its next poll (the error was
|
|
378
|
+
* enqueued by the timer while it was stalled). */
|
|
379
|
+
TEST_ASSERT(wait_max_poll_exceeded(c[0], 10000),
|
|
380
|
+
"c[0] (stalled) expected MAX_POLL_EXCEEDED");
|
|
381
|
+
|
|
382
|
+
for (i = 0; i < 2; i++) {
|
|
383
|
+
test_share_consumer_close(c[i]);
|
|
384
|
+
test_share_destroy(c[i]);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
SUB_TEST_PASS();
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* @brief While "processing", polling only the log queue must NOT reset the
|
|
393
|
+
* share consumer's max.poll.interval.ms timer.
|
|
394
|
+
*
|
|
395
|
+
* Mirrors 0089 do_test_with_log_queue().
|
|
396
|
+
*/
|
|
397
|
+
static void do_test_log_queue_no_reset(void) {
|
|
398
|
+
const char *topic = test_mk_topic_name("0185_share_max_poll", 1);
|
|
399
|
+
char group[64];
|
|
400
|
+
uint64_t testid;
|
|
401
|
+
rd_kafka_conf_t *conf;
|
|
402
|
+
rd_kafka_share_t *c;
|
|
403
|
+
rd_kafka_t *rk;
|
|
404
|
+
rd_kafka_queue_t *logq;
|
|
405
|
+
char errstr[512];
|
|
406
|
+
char tmp[32];
|
|
407
|
+
int64_t deadline;
|
|
408
|
+
|
|
409
|
+
SUB_TEST();
|
|
410
|
+
|
|
411
|
+
testid = test_id_generate();
|
|
412
|
+
test_str_id_generate(group, sizeof(group));
|
|
413
|
+
|
|
414
|
+
test_create_topic_wait_exists(NULL, topic, 1, -1, 5000);
|
|
415
|
+
test_produce_msgs_easy(topic, testid, 0, 20);
|
|
416
|
+
test_share_set_auto_offset_reset(group, "earliest");
|
|
417
|
+
|
|
418
|
+
/* Build a consumer with log.queue=true so logs are routed to a
|
|
419
|
+
* dedicated queue that we can poll during "processing". */
|
|
420
|
+
test_conf_init(&conf, NULL, 0);
|
|
421
|
+
test_conf_set(conf, "group.id", group);
|
|
422
|
+
rd_snprintf(tmp, sizeof(tmp), "%d", REAL_MAX_POLL_INTERVAL_MS);
|
|
423
|
+
test_conf_set(conf, "max.poll.interval.ms", tmp);
|
|
424
|
+
test_conf_set(conf, "log.queue", "true");
|
|
425
|
+
c = rd_kafka_share_consumer_new(conf, errstr, sizeof(errstr));
|
|
426
|
+
TEST_ASSERT(c, "Failed to create share consumer: %s", errstr);
|
|
427
|
+
|
|
428
|
+
rk = test_share_consumer_get_rk(c);
|
|
429
|
+
logq = rd_kafka_queue_new(rk);
|
|
430
|
+
TEST_CALL__(rd_kafka_set_log_queue(rk, logq));
|
|
431
|
+
|
|
432
|
+
test_share_consumer_subscribe_multi(c, 1, topic);
|
|
433
|
+
establish_membership(c);
|
|
434
|
+
|
|
435
|
+
TEST_SAY("Polling only the log queue for %ds (> %dms)\n",
|
|
436
|
+
(REAL_MAX_POLL_INTERVAL_MS + 3000) / 1000,
|
|
437
|
+
REAL_MAX_POLL_INTERVAL_MS);
|
|
438
|
+
deadline =
|
|
439
|
+
test_clock() + (int64_t)(REAL_MAX_POLL_INTERVAL_MS + 3000) * 1000;
|
|
440
|
+
while (test_clock() < deadline)
|
|
441
|
+
rd_kafka_event_destroy(rd_kafka_queue_poll(logq, 200));
|
|
442
|
+
|
|
443
|
+
TEST_ASSERT(
|
|
444
|
+
wait_max_poll_exceeded(c, 10000),
|
|
445
|
+
"Expected MAX_POLL_EXCEEDED: polling the log queue must not "
|
|
446
|
+
"reset the share consumer max.poll.interval.ms timer");
|
|
447
|
+
|
|
448
|
+
test_share_consumer_close(c);
|
|
449
|
+
test_share_destroy(c);
|
|
450
|
+
rd_kafka_queue_destroy(logq);
|
|
451
|
+
|
|
452
|
+
SUB_TEST_PASS();
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* @brief rd_kafka_poll() on the underlying handle must NOT reset the share
|
|
458
|
+
* consumer's max.poll.interval.ms timer; only
|
|
459
|
+
* rd_kafka_share_poll() does.
|
|
460
|
+
*
|
|
461
|
+
* Inverse of 0089 do_test_max_poll_reset_with_consumer_cb(): the regular
|
|
462
|
+
* consumer's poll resets the timer, the share consumer's does not.
|
|
463
|
+
*/
|
|
464
|
+
static void do_test_rd_kafka_poll_does_not_reset(void) {
|
|
465
|
+
char topic[128];
|
|
466
|
+
rd_kafka_share_t *c;
|
|
467
|
+
rd_kafka_t *rk;
|
|
468
|
+
int64_t deadline;
|
|
469
|
+
|
|
470
|
+
SUB_TEST();
|
|
471
|
+
|
|
472
|
+
c = real_setup(topic, sizeof(topic), 20, REAL_MAX_POLL_INTERVAL_MS);
|
|
473
|
+
establish_membership(c);
|
|
474
|
+
|
|
475
|
+
rk = test_share_consumer_get_rk(c);
|
|
476
|
+
|
|
477
|
+
TEST_SAY("Calling only rd_kafka_poll() for %ds (> %dms)\n",
|
|
478
|
+
(REAL_MAX_POLL_INTERVAL_MS + 3000) / 1000,
|
|
479
|
+
REAL_MAX_POLL_INTERVAL_MS);
|
|
480
|
+
deadline =
|
|
481
|
+
test_clock() + (int64_t)(REAL_MAX_POLL_INTERVAL_MS + 3000) * 1000;
|
|
482
|
+
while (test_clock() < deadline)
|
|
483
|
+
rd_kafka_poll(rk, 200);
|
|
484
|
+
|
|
485
|
+
TEST_ASSERT(
|
|
486
|
+
wait_max_poll_exceeded(c, 10000),
|
|
487
|
+
"Expected MAX_POLL_EXCEEDED: rd_kafka_poll() must not reset "
|
|
488
|
+
"the share consumer max.poll.interval.ms timer");
|
|
489
|
+
|
|
490
|
+
test_share_consumer_close(c);
|
|
491
|
+
test_share_destroy(c);
|
|
492
|
+
|
|
493
|
+
SUB_TEST_PASS();
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* @brief A single blocking rd_kafka_share_poll() that waits longer
|
|
499
|
+
* than max.poll.interval.ms must NOT trip the timeout (the wait is time
|
|
500
|
+
* spent inside librdkafka, not application processing time).
|
|
501
|
+
*/
|
|
502
|
+
static void do_test_blocking_poll_no_false_trip(void) {
|
|
503
|
+
char topic[128];
|
|
504
|
+
rd_kafka_share_t *c;
|
|
505
|
+
rd_bool_t exceeded = rd_false;
|
|
506
|
+
int consumed = 0;
|
|
507
|
+
int attempts;
|
|
508
|
+
|
|
509
|
+
SUB_TEST();
|
|
510
|
+
|
|
511
|
+
c = real_setup(topic, sizeof(topic), 5, REAL_MAX_POLL_INTERVAL_MS);
|
|
512
|
+
establish_membership(c);
|
|
513
|
+
|
|
514
|
+
/* Drain remaining produced messages so the next poll blocks. */
|
|
515
|
+
while (share_consume_once(c, 500, NULL) > 0)
|
|
516
|
+
;
|
|
517
|
+
|
|
518
|
+
TEST_SAY("Blocking in a single consume_batch() for %ds (> %dms)\n",
|
|
519
|
+
(REAL_MAX_POLL_INTERVAL_MS + 2000) / 1000,
|
|
520
|
+
REAL_MAX_POLL_INTERVAL_MS);
|
|
521
|
+
share_consume_once(c, REAL_MAX_POLL_INTERVAL_MS + 2000, &exceeded);
|
|
522
|
+
|
|
523
|
+
TEST_ASSERT(!exceeded,
|
|
524
|
+
"A blocking consume_batch() must not trip "
|
|
525
|
+
"max.poll.interval.ms");
|
|
526
|
+
|
|
527
|
+
test_produce_msgs_easy(topic, test_id_generate(), 0, 5);
|
|
528
|
+
for (attempts = 0; attempts < 30 && consumed == 0; attempts++)
|
|
529
|
+
consumed += share_consume_once(c, 1000, &exceeded);
|
|
530
|
+
|
|
531
|
+
TEST_ASSERT(!exceeded,
|
|
532
|
+
"Consumer should remain in the group after a long "
|
|
533
|
+
"blocking poll");
|
|
534
|
+
TEST_ASSERT(consumed > 0,
|
|
535
|
+
"Consumer should still consume messages after a long "
|
|
536
|
+
"blocking poll");
|
|
537
|
+
|
|
538
|
+
test_share_consumer_close(c);
|
|
539
|
+
test_share_destroy(c);
|
|
540
|
+
|
|
541
|
+
SUB_TEST_PASS();
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
int main_0185_share_consumer_max_poll_interval(int argc, char **argv) {
|
|
546
|
+
test_timeout_set(300);
|
|
547
|
+
|
|
548
|
+
do_test_long_processing();
|
|
549
|
+
do_test_no_poll();
|
|
550
|
+
do_test_steady_consume();
|
|
551
|
+
do_test_two_consumers();
|
|
552
|
+
do_test_log_queue_no_reset();
|
|
553
|
+
do_test_rd_kafka_poll_does_not_reset();
|
|
554
|
+
do_test_blocking_poll_no_false_trip();
|
|
555
|
+
|
|
556
|
+
return 0;
|
|
557
|
+
}
|