@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,318 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2020-2022, Magnus Edenhill
|
|
5
|
+
* 2025, Confluent Inc.
|
|
6
|
+
* All rights reserved.
|
|
7
|
+
*
|
|
8
|
+
* Redistribution and use in source and binary forms, with or without
|
|
9
|
+
* modification, are permitted provided that the following conditions are met:
|
|
10
|
+
*
|
|
11
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
12
|
+
* this list of conditions and the following disclaimer.
|
|
13
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
14
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
15
|
+
* and/or other materials provided with the distribution.
|
|
16
|
+
*
|
|
17
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
18
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
19
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
20
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
21
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
22
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
23
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
24
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
25
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
26
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
27
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#include "test.h"
|
|
31
|
+
|
|
32
|
+
#include "../src/rdkafka_proto.h"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @name Verify that the high-level consumer times out itself if
|
|
37
|
+
* heartbeats are not successful (issue #2631).
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
static const char *commit_type;
|
|
41
|
+
static int rebalance_cnt;
|
|
42
|
+
static rd_kafka_resp_err_t rebalance_exp_event;
|
|
43
|
+
static rd_kafka_resp_err_t commit_exp_err;
|
|
44
|
+
|
|
45
|
+
static void rebalance_cb(rd_kafka_t *rk,
|
|
46
|
+
rd_kafka_resp_err_t err,
|
|
47
|
+
rd_kafka_topic_partition_list_t *parts,
|
|
48
|
+
void *opaque) {
|
|
49
|
+
|
|
50
|
+
rebalance_cnt++;
|
|
51
|
+
TEST_SAY("Rebalance #%d: %s: %d partition(s)\n", rebalance_cnt,
|
|
52
|
+
rd_kafka_err2name(err), parts->cnt);
|
|
53
|
+
|
|
54
|
+
TEST_ASSERT(
|
|
55
|
+
err == rebalance_exp_event, "Expected rebalance event %s, not %s",
|
|
56
|
+
rd_kafka_err2name(rebalance_exp_event), rd_kafka_err2name(err));
|
|
57
|
+
|
|
58
|
+
if (err == RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS) {
|
|
59
|
+
test_consumer_assign_by_rebalance_protocol("assign", rk, parts);
|
|
60
|
+
} else {
|
|
61
|
+
rd_kafka_resp_err_t commit_err;
|
|
62
|
+
|
|
63
|
+
if (strcmp(commit_type, "auto")) {
|
|
64
|
+
rd_kafka_resp_err_t perr;
|
|
65
|
+
|
|
66
|
+
TEST_SAY("Performing %s commit\n", commit_type);
|
|
67
|
+
|
|
68
|
+
perr = rd_kafka_position(rk, parts);
|
|
69
|
+
TEST_ASSERT(!perr, "Failed to acquire position: %s",
|
|
70
|
+
rd_kafka_err2str(perr));
|
|
71
|
+
|
|
72
|
+
/* Sleep a short while so the broker times out the
|
|
73
|
+
* member too. */
|
|
74
|
+
rd_sleep(1);
|
|
75
|
+
|
|
76
|
+
commit_err = rd_kafka_commit(
|
|
77
|
+
rk, parts, !strcmp(commit_type, "async"));
|
|
78
|
+
|
|
79
|
+
if (!strcmp(commit_type, "async"))
|
|
80
|
+
TEST_ASSERT(!commit_err,
|
|
81
|
+
"Async commit should not fail, "
|
|
82
|
+
"but it returned %s",
|
|
83
|
+
rd_kafka_err2name(commit_err));
|
|
84
|
+
else
|
|
85
|
+
TEST_ASSERT(
|
|
86
|
+
commit_err == commit_exp_err ||
|
|
87
|
+
(!commit_exp_err &&
|
|
88
|
+
commit_err ==
|
|
89
|
+
RD_KAFKA_RESP_ERR__NO_OFFSET),
|
|
90
|
+
"Expected %s commit to return %s, "
|
|
91
|
+
"not %s",
|
|
92
|
+
commit_type,
|
|
93
|
+
rd_kafka_err2name(commit_exp_err),
|
|
94
|
+
rd_kafka_err2name(commit_err));
|
|
95
|
+
}
|
|
96
|
+
test_consumer_unassign_by_rebalance_protocol("unassign", rk,
|
|
97
|
+
parts);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* Make sure only one rebalance callback is served per poll()
|
|
101
|
+
* so that expect_rebalance() returns to the test logic on each
|
|
102
|
+
* rebalance. */
|
|
103
|
+
rd_kafka_yield(rk);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @brief Wait for an expected rebalance event, or fail.
|
|
109
|
+
*/
|
|
110
|
+
static void expect_rebalance(const char *what,
|
|
111
|
+
rd_kafka_t *c,
|
|
112
|
+
rd_kafka_resp_err_t exp_event,
|
|
113
|
+
int timeout_s) {
|
|
114
|
+
int64_t tmout = test_clock() + (timeout_s * 1000000);
|
|
115
|
+
int start_cnt = rebalance_cnt;
|
|
116
|
+
|
|
117
|
+
TEST_SAY("Waiting for %s (%s) for %ds\n", what,
|
|
118
|
+
rd_kafka_err2name(exp_event), timeout_s);
|
|
119
|
+
|
|
120
|
+
rebalance_exp_event = exp_event;
|
|
121
|
+
|
|
122
|
+
while (tmout > test_clock() && rebalance_cnt == start_cnt) {
|
|
123
|
+
if (test_consumer_poll_once(c, NULL, 1000))
|
|
124
|
+
rd_sleep(1);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (rebalance_cnt == start_cnt + 1) {
|
|
128
|
+
rebalance_exp_event = RD_KAFKA_RESP_ERR_NO_ERROR;
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
TEST_FAIL("Timed out waiting for %s (%s)\n", what,
|
|
133
|
+
rd_kafka_err2name(exp_event));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* @brief Verify that session timeouts are handled by the consumer itself.
|
|
139
|
+
*
|
|
140
|
+
* @param use_commit_type "auto", "sync" (manual), "async" (manual)
|
|
141
|
+
*/
|
|
142
|
+
static void do_test_session_timeout(const char *use_commit_type) {
|
|
143
|
+
const char *bootstraps;
|
|
144
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
145
|
+
rd_kafka_conf_t *conf;
|
|
146
|
+
rd_kafka_t *c;
|
|
147
|
+
const char *groupid = "mygroup";
|
|
148
|
+
const char *topic = "test";
|
|
149
|
+
|
|
150
|
+
rebalance_cnt = 0;
|
|
151
|
+
commit_type = use_commit_type;
|
|
152
|
+
|
|
153
|
+
SUB_TEST0(!strcmp(use_commit_type, "sync") /*quick*/,
|
|
154
|
+
"Test session timeout with %s commit", use_commit_type);
|
|
155
|
+
|
|
156
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
157
|
+
|
|
158
|
+
rd_kafka_mock_coordinator_set(mcluster, "group", groupid, 1);
|
|
159
|
+
|
|
160
|
+
/* Seed the topic with messages */
|
|
161
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, 100, 10, "bootstrap.servers",
|
|
162
|
+
bootstraps, "batch.num.messages", "10", NULL);
|
|
163
|
+
|
|
164
|
+
test_conf_init(&conf, NULL, 30);
|
|
165
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
166
|
+
test_conf_set(conf, "security.protocol", "PLAINTEXT");
|
|
167
|
+
test_conf_set(conf, "group.id", groupid);
|
|
168
|
+
test_conf_set(conf, "session.timeout.ms", "5000");
|
|
169
|
+
test_conf_set(conf, "heartbeat.interval.ms", "1000");
|
|
170
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
171
|
+
test_conf_set(conf, "enable.auto.commit",
|
|
172
|
+
!strcmp(commit_type, "auto") ? "true" : "false");
|
|
173
|
+
rd_kafka_mock_set_group_consumer_session_timeout_ms(mcluster, 1000);
|
|
174
|
+
rd_kafka_mock_set_group_consumer_heartbeat_interval_ms(mcluster, 100);
|
|
175
|
+
|
|
176
|
+
c = test_create_consumer(groupid, rebalance_cb, conf, NULL);
|
|
177
|
+
|
|
178
|
+
test_consumer_subscribe(c, topic);
|
|
179
|
+
|
|
180
|
+
if (test_consumer_group_protocol_classic()) {
|
|
181
|
+
/* Let Heartbeats fail after a couple of successful ones */
|
|
182
|
+
rd_kafka_mock_push_request_errors(
|
|
183
|
+
mcluster, RD_KAFKAP_Heartbeat, 9,
|
|
184
|
+
RD_KAFKA_RESP_ERR_NO_ERROR, RD_KAFKA_RESP_ERR_NO_ERROR,
|
|
185
|
+
RD_KAFKA_RESP_ERR_NOT_COORDINATOR,
|
|
186
|
+
RD_KAFKA_RESP_ERR_NOT_COORDINATOR,
|
|
187
|
+
RD_KAFKA_RESP_ERR_NOT_COORDINATOR,
|
|
188
|
+
RD_KAFKA_RESP_ERR_NOT_COORDINATOR,
|
|
189
|
+
RD_KAFKA_RESP_ERR_NOT_COORDINATOR,
|
|
190
|
+
RD_KAFKA_RESP_ERR_NOT_COORDINATOR,
|
|
191
|
+
RD_KAFKA_RESP_ERR_NOT_COORDINATOR);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
expect_rebalance("initial assignment", c,
|
|
195
|
+
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS, 5 + 2);
|
|
196
|
+
|
|
197
|
+
/* Consume a couple of messages so that we have something to commit */
|
|
198
|
+
test_consumer_poll("consume", c, 0, -1, 0, 10, NULL);
|
|
199
|
+
|
|
200
|
+
if (!test_consumer_group_protocol_classic()) {
|
|
201
|
+
/* Increase HB interval so member is fenced from the group */
|
|
202
|
+
rd_kafka_mock_set_group_consumer_heartbeat_interval_ms(mcluster,
|
|
203
|
+
2000);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* The commit in the rebalance callback should fail when the
|
|
207
|
+
* member has timed out from the group. */
|
|
208
|
+
commit_exp_err = RD_KAFKA_RESP_ERR_UNKNOWN_MEMBER_ID;
|
|
209
|
+
|
|
210
|
+
expect_rebalance("session timeout revoke", c,
|
|
211
|
+
RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS, 2 + 5 + 2);
|
|
212
|
+
|
|
213
|
+
expect_rebalance("second assignment", c,
|
|
214
|
+
RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS, 5 + 2);
|
|
215
|
+
|
|
216
|
+
/* Final rebalance in close().
|
|
217
|
+
* Its commit will work. */
|
|
218
|
+
rebalance_exp_event = RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS;
|
|
219
|
+
commit_exp_err = RD_KAFKA_RESP_ERR_NO_ERROR;
|
|
220
|
+
|
|
221
|
+
test_consumer_close(c);
|
|
222
|
+
|
|
223
|
+
rd_kafka_destroy(c);
|
|
224
|
+
|
|
225
|
+
test_mock_cluster_destroy(mcluster);
|
|
226
|
+
|
|
227
|
+
SUB_TEST_PASS();
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* @brief Attempt manual commit when assignment has been lost (#3217)
|
|
233
|
+
*/
|
|
234
|
+
static void do_test_commit_on_lost(void) {
|
|
235
|
+
const char *bootstraps;
|
|
236
|
+
rd_kafka_mock_cluster_t *mcluster;
|
|
237
|
+
rd_kafka_conf_t *conf;
|
|
238
|
+
rd_kafka_t *c;
|
|
239
|
+
const char *groupid = "mygroup";
|
|
240
|
+
const char *topic = "test";
|
|
241
|
+
rd_kafka_resp_err_t err;
|
|
242
|
+
|
|
243
|
+
SUB_TEST();
|
|
244
|
+
|
|
245
|
+
test_curr->is_fatal_cb = test_error_is_not_fatal_cb;
|
|
246
|
+
|
|
247
|
+
mcluster = test_mock_cluster_new(3, &bootstraps);
|
|
248
|
+
|
|
249
|
+
rd_kafka_mock_coordinator_set(mcluster, "group", groupid, 1);
|
|
250
|
+
|
|
251
|
+
/* Seed the topic with messages */
|
|
252
|
+
test_produce_msgs_easy_v(topic, 0, 0, 0, 100, 10, "bootstrap.servers",
|
|
253
|
+
bootstraps, "batch.num.messages", "10", NULL);
|
|
254
|
+
|
|
255
|
+
test_conf_init(&conf, NULL, 30);
|
|
256
|
+
test_conf_set(conf, "bootstrap.servers", bootstraps);
|
|
257
|
+
test_conf_set(conf, "security.protocol", "PLAINTEXT");
|
|
258
|
+
test_conf_set(conf, "group.id", groupid);
|
|
259
|
+
test_conf_set(conf, "session.timeout.ms", "5000");
|
|
260
|
+
test_conf_set(conf, "heartbeat.interval.ms", "1000");
|
|
261
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
262
|
+
test_conf_set(conf, "enable.auto.commit", "false");
|
|
263
|
+
|
|
264
|
+
c = test_create_consumer(groupid, test_rebalance_cb, conf, NULL);
|
|
265
|
+
|
|
266
|
+
test_consumer_subscribe(c, topic);
|
|
267
|
+
|
|
268
|
+
/* Consume a couple of messages so that we have something to commit */
|
|
269
|
+
test_consumer_poll("consume", c, 0, -1, 0, 10, NULL);
|
|
270
|
+
|
|
271
|
+
/* Make the coordinator unreachable, this will cause a local session
|
|
272
|
+
* timeout followed by a revoke and assignment lost. */
|
|
273
|
+
rd_kafka_mock_broker_set_down(mcluster, 1);
|
|
274
|
+
|
|
275
|
+
/* Wait until the assignment is lost */
|
|
276
|
+
TEST_SAY("Waiting for assignment to be lost...\n");
|
|
277
|
+
while (!rd_kafka_assignment_lost(c))
|
|
278
|
+
rd_sleep(1);
|
|
279
|
+
|
|
280
|
+
TEST_SAY("Assignment is lost, committing\n");
|
|
281
|
+
/* Perform manual commit */
|
|
282
|
+
err = rd_kafka_commit(c, NULL, 0 /*sync*/);
|
|
283
|
+
TEST_SAY("commit() returned: %s\n", rd_kafka_err2name(err));
|
|
284
|
+
TEST_ASSERT(err, "expected commit to fail");
|
|
285
|
+
|
|
286
|
+
test_consumer_close(c);
|
|
287
|
+
|
|
288
|
+
rd_kafka_destroy(c);
|
|
289
|
+
|
|
290
|
+
test_mock_cluster_destroy(mcluster);
|
|
291
|
+
|
|
292
|
+
test_curr->is_fatal_cb = NULL;
|
|
293
|
+
|
|
294
|
+
SUB_TEST_PASS();
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
int main_0106_cgrp_sess_timeout(int argc, char **argv) {
|
|
299
|
+
|
|
300
|
+
TEST_SKIP_MOCK_CLUSTER(0);
|
|
301
|
+
|
|
302
|
+
do_test_session_timeout("sync");
|
|
303
|
+
do_test_session_timeout("async");
|
|
304
|
+
do_test_session_timeout("auto");
|
|
305
|
+
|
|
306
|
+
/* With KIP-848 session timeout is remote only.
|
|
307
|
+
* Partitions will stay assigned and fetchable
|
|
308
|
+
* when there's no communication with the
|
|
309
|
+
* coordinator, but the messages won't be
|
|
310
|
+
* committed.
|
|
311
|
+
* TODO: see if session timeout can be received by
|
|
312
|
+
* the broker and be enforced locally too. */
|
|
313
|
+
if (test_consumer_group_protocol_classic()) {
|
|
314
|
+
do_test_commit_on_lost();
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
return 0;
|
|
318
|
+
}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2020-2022, Magnus Edenhill
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
#include "test.h"
|
|
30
|
+
|
|
31
|
+
#include "../src/rdkafka_proto.h"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @name Verify that producer and consumer resumes operation after
|
|
36
|
+
* a topic has been deleted and recreated.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The message value to produce, one of:
|
|
41
|
+
* "before" - before topic deletion
|
|
42
|
+
* "during" - during topic deletion
|
|
43
|
+
* "after" - after topic has been re-created
|
|
44
|
+
* "end" - stop producing
|
|
45
|
+
*/
|
|
46
|
+
static mtx_t value_mtx;
|
|
47
|
+
static char *value;
|
|
48
|
+
|
|
49
|
+
static const int msg_rate = 10; /**< Messages produced per second */
|
|
50
|
+
|
|
51
|
+
static struct test *this_test; /**< Exposes current test struct (in TLS) to
|
|
52
|
+
* producer thread. */
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @brief Treat all error_cb as non-test-fatal.
|
|
57
|
+
*/
|
|
58
|
+
static int
|
|
59
|
+
is_error_fatal(rd_kafka_t *rk, rd_kafka_resp_err_t err, const char *reason) {
|
|
60
|
+
return rd_false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @brief Producing thread
|
|
65
|
+
*/
|
|
66
|
+
static int run_producer(void *arg) {
|
|
67
|
+
const char *topic = arg;
|
|
68
|
+
rd_kafka_t *producer = test_create_producer();
|
|
69
|
+
int ret = 0;
|
|
70
|
+
|
|
71
|
+
test_curr = this_test;
|
|
72
|
+
|
|
73
|
+
/* Don't check message status */
|
|
74
|
+
test_curr->exp_dr_status = (rd_kafka_msg_status_t)-1;
|
|
75
|
+
|
|
76
|
+
while (1) {
|
|
77
|
+
rd_kafka_resp_err_t err;
|
|
78
|
+
|
|
79
|
+
mtx_lock(&value_mtx);
|
|
80
|
+
if (!strcmp(value, "end")) {
|
|
81
|
+
mtx_unlock(&value_mtx);
|
|
82
|
+
break;
|
|
83
|
+
} else if (strcmp(value, "before")) {
|
|
84
|
+
/* Ignore Delivery report errors after topic
|
|
85
|
+
* has been deleted and eventually re-created,
|
|
86
|
+
* we rely on the consumer to verify that
|
|
87
|
+
* messages are produced. */
|
|
88
|
+
test_curr->ignore_dr_err = rd_true;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
err = rd_kafka_producev(
|
|
92
|
+
producer, RD_KAFKA_V_TOPIC(topic),
|
|
93
|
+
RD_KAFKA_V_MSGFLAGS(RD_KAFKA_MSG_F_COPY),
|
|
94
|
+
RD_KAFKA_V_VALUE(value, strlen(value)), RD_KAFKA_V_END);
|
|
95
|
+
|
|
96
|
+
if (err == RD_KAFKA_RESP_ERR_UNKNOWN_TOPIC_OR_PART ||
|
|
97
|
+
err == RD_KAFKA_RESP_ERR__UNKNOWN_TOPIC)
|
|
98
|
+
TEST_SAY("Produce failed (expectedly): %s\n",
|
|
99
|
+
rd_kafka_err2name(err));
|
|
100
|
+
else
|
|
101
|
+
TEST_ASSERT(!err, "producev() failed: %s",
|
|
102
|
+
rd_kafka_err2name(err));
|
|
103
|
+
|
|
104
|
+
mtx_unlock(&value_mtx);
|
|
105
|
+
|
|
106
|
+
rd_usleep(1000000 / msg_rate, NULL);
|
|
107
|
+
|
|
108
|
+
rd_kafka_poll(producer, 0);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (rd_kafka_flush(producer, 5000)) {
|
|
112
|
+
TEST_WARN("Failed to flush all message(s), %d remain\n",
|
|
113
|
+
rd_kafka_outq_len(producer));
|
|
114
|
+
/* Purge the messages to see which partition they were for */
|
|
115
|
+
rd_kafka_purge(producer, RD_KAFKA_PURGE_F_QUEUE |
|
|
116
|
+
RD_KAFKA_PURGE_F_INFLIGHT);
|
|
117
|
+
rd_kafka_flush(producer, 5000);
|
|
118
|
+
TEST_SAY("%d message(s) in queue after purge\n",
|
|
119
|
+
rd_kafka_outq_len(producer));
|
|
120
|
+
|
|
121
|
+
ret = 1; /* Fail test from main thread */
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
rd_kafka_destroy(producer);
|
|
125
|
+
|
|
126
|
+
return ret;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @brief Expect at least \p cnt messages with value matching \p exp_value,
|
|
132
|
+
* else fail the current test.
|
|
133
|
+
*/
|
|
134
|
+
static void
|
|
135
|
+
expect_messages(rd_kafka_t *consumer, int cnt, const char *exp_value) {
|
|
136
|
+
int match_cnt = 0, other_cnt = 0, err_cnt = 0;
|
|
137
|
+
size_t exp_len = strlen(exp_value);
|
|
138
|
+
|
|
139
|
+
TEST_SAY("Expecting >= %d messages with value \"%s\"...\n", cnt,
|
|
140
|
+
exp_value);
|
|
141
|
+
|
|
142
|
+
while (match_cnt < cnt) {
|
|
143
|
+
rd_kafka_message_t *rkmessage;
|
|
144
|
+
|
|
145
|
+
rkmessage = rd_kafka_consumer_poll(consumer, 1000);
|
|
146
|
+
if (!rkmessage)
|
|
147
|
+
continue;
|
|
148
|
+
|
|
149
|
+
if (rkmessage->err) {
|
|
150
|
+
TEST_SAY("Consume error: %s\n",
|
|
151
|
+
rd_kafka_message_errstr(rkmessage));
|
|
152
|
+
err_cnt++;
|
|
153
|
+
} else if (rkmessage->len == exp_len &&
|
|
154
|
+
!memcmp(rkmessage->payload, exp_value, exp_len)) {
|
|
155
|
+
match_cnt++;
|
|
156
|
+
} else {
|
|
157
|
+
TEST_SAYL(3,
|
|
158
|
+
"Received \"%.*s\", expected \"%s\": "
|
|
159
|
+
"ignored\n",
|
|
160
|
+
(int)rkmessage->len,
|
|
161
|
+
(const char *)rkmessage->payload, exp_value);
|
|
162
|
+
other_cnt++;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
rd_kafka_message_destroy(rkmessage);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
TEST_SAY(
|
|
169
|
+
"Consumed %d messages matching \"%s\", "
|
|
170
|
+
"ignored %d others, saw %d error(s)\n",
|
|
171
|
+
match_cnt, exp_value, other_cnt, err_cnt);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @brief Test topic create + delete + create with first topic having
|
|
177
|
+
* \p part_cnt_1 partitions and second topic having \p part_cnt_2 .
|
|
178
|
+
*/
|
|
179
|
+
static void do_test_create_delete_create(int part_cnt_1, int part_cnt_2) {
|
|
180
|
+
rd_kafka_t *consumer;
|
|
181
|
+
thrd_t producer_thread;
|
|
182
|
+
const char *topic = test_mk_topic_name(__FUNCTION__, 1);
|
|
183
|
+
int ret = 0;
|
|
184
|
+
|
|
185
|
+
TEST_SAY(_C_MAG
|
|
186
|
+
"[ Test topic create(%d parts)+delete+create(%d parts) ]\n",
|
|
187
|
+
part_cnt_1, part_cnt_2);
|
|
188
|
+
|
|
189
|
+
consumer = test_create_consumer(topic, NULL, NULL, NULL);
|
|
190
|
+
|
|
191
|
+
/* Create topic */
|
|
192
|
+
test_create_topic_wait_exists(consumer, topic, part_cnt_1, 3, 5000);
|
|
193
|
+
|
|
194
|
+
/* Start consumer */
|
|
195
|
+
test_consumer_subscribe(consumer, topic);
|
|
196
|
+
test_consumer_wait_assignment(consumer, rd_true);
|
|
197
|
+
|
|
198
|
+
mtx_lock(&value_mtx);
|
|
199
|
+
value = "before";
|
|
200
|
+
mtx_unlock(&value_mtx);
|
|
201
|
+
|
|
202
|
+
/* Create producer thread */
|
|
203
|
+
if (thrd_create(&producer_thread, run_producer, (void *)topic) !=
|
|
204
|
+
thrd_success)
|
|
205
|
+
TEST_FAIL("thrd_create failed");
|
|
206
|
+
|
|
207
|
+
/* Consume messages for 5s */
|
|
208
|
+
expect_messages(consumer, msg_rate * 5, value);
|
|
209
|
+
|
|
210
|
+
/* Delete topic */
|
|
211
|
+
mtx_lock(&value_mtx);
|
|
212
|
+
value = "during";
|
|
213
|
+
mtx_unlock(&value_mtx);
|
|
214
|
+
|
|
215
|
+
test_delete_topic(consumer, topic);
|
|
216
|
+
rd_sleep(5);
|
|
217
|
+
|
|
218
|
+
/* Re-create topic */
|
|
219
|
+
test_create_topic_wait_exists(consumer, topic, part_cnt_2, 3, 5000);
|
|
220
|
+
|
|
221
|
+
mtx_lock(&value_mtx);
|
|
222
|
+
value = "after";
|
|
223
|
+
mtx_unlock(&value_mtx);
|
|
224
|
+
|
|
225
|
+
/* Consume for 5 more seconds, should see new messages */
|
|
226
|
+
expect_messages(consumer, msg_rate * 5, value);
|
|
227
|
+
|
|
228
|
+
rd_kafka_destroy(consumer);
|
|
229
|
+
|
|
230
|
+
/* Wait for producer to exit */
|
|
231
|
+
mtx_lock(&value_mtx);
|
|
232
|
+
value = "end";
|
|
233
|
+
mtx_unlock(&value_mtx);
|
|
234
|
+
|
|
235
|
+
if (thrd_join(producer_thread, &ret) != thrd_success || ret != 0)
|
|
236
|
+
TEST_FAIL("Producer failed: see previous errors");
|
|
237
|
+
|
|
238
|
+
TEST_SAY(_C_GRN
|
|
239
|
+
"[ Test topic create(%d parts)+delete+create(%d parts): "
|
|
240
|
+
"PASS ]\n",
|
|
241
|
+
part_cnt_1, part_cnt_2);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
int main_0107_topic_recreate(int argc, char **argv) {
|
|
246
|
+
this_test = test_curr; /* Need to expose current test struct (in TLS)
|
|
247
|
+
* to producer thread. */
|
|
248
|
+
|
|
249
|
+
this_test->is_fatal_cb = is_error_fatal;
|
|
250
|
+
|
|
251
|
+
mtx_init(&value_mtx, mtx_plain);
|
|
252
|
+
|
|
253
|
+
test_conf_init(NULL, NULL, 60);
|
|
254
|
+
|
|
255
|
+
do_test_create_delete_create(10, 3);
|
|
256
|
+
do_test_create_delete_create(3, 6);
|
|
257
|
+
|
|
258
|
+
return 0;
|
|
259
|
+
}
|