Revision history for Kafka package 1.08 Add support SASL authentication support Use Dist::Zilla static_install Migrate to milla 1.07 Sun September 17 2017 Added support for v1 Messages at Producer side, which allows to produce messages with CreateTime timestamp. Added support for LZ4 compression. BUGFIXES: - Fix Snappy compression to be compatible with xerial's snappy-java multiframes. 1.06 Fri July 28 2017 Important fix for offset commit/fetch bug In Kafka versions > 0.8.2 offset commits/fetch are stored on Kafka itself, not zookeeper (that's version 1 of protocol instead of version 0). The code before that commit was claiming that it supported version 0 for commiting offsets, and version 1 for fetching. As a result, offsets were stored on zookeeper, but fetched from Kafka, where they were never found. This fix provides support for version 1 when storing and fetching offsets. It required implementing the API call for finding a group coordinator as well. 1.05 Tue June 20 2017 BUGFIXES: - Fix message offsets for messages in compressed MessageSet (Damien Krotkine). - Do not use $_ in IO::connect (Petr Plavjanik). 1.04 Wed June 07 2017 CHANGES: - Added offset commit/fetch API (thanks to Greg Franklin and Damien Krotkine). BUGFIXES: - Fix key-value arguments validation. - Fix MessageSet incomplete data check. 1.03 Mon May 22 2017 BUGFIXES: - Prevent exceptions with Kafka 0.9 (where API versioning is not supported). 1.02 Fri May 12 2017 Special thanks to Damien Krotkine for API versioning implementation. CHANGES: - Added API versioning support with auto-detection. - Timestamps in messages. - Improvements in offset methods: to be able to query offsets in an easier, simpler and more complete way (including support for version 0 and version 1 of message formats) - Support for array of keys in Kafka::Producer->send with array of messages. - Use Gzip::Faster to improve compression speed. BUGFIXES: - Improved timeouts handling for big payloads in Kafka::IO. 1.001013 Fri Feb 24 2017 CHANGES: - Removed support for custom CorrelationID in constructor arguments. - Use seconds for Consumer.MaxWaitTime to make it similar to Producer.Timeout. - Removed deprecated constants $RECEIVE_MAX_ATTEMPTS, $RECEIVE_MAX_RETRIES, $SEND_MAX_RETRIES. - Replaced Kafka::Connection->is_server_alive, Kafka::IO->is_alive with private methods (to be used for internal tests only). BUGFIXES: - Fixed incorrect timeout values in requests. - Improved socket handling in Kafka::IO. 1.001012 Thu Nov 17 2016 BUGFIXES: - Do not use $Kafka::SEND_MAX_ATTEMPTS in Kafka::Producer->send request to prevent duplicates. 1.001011 Wed Nov 09 2016 CHANGES: - Decrease tcp connections creation. BUGFIXES: - The dependency declaration corrected. 1.001001 Tue Jun 07 2016 CHANGES: - Version schema changed to reflect supported Kafka version. N.XXYYZZ where XXYY - major Kafka version N and ZZ - major and minor versions of Perl module. - Adapted for kafka 0.10.0.0 . - Added new Apache Kafka server error codes. - $MESSAGE_SIZE_OVERHEAD increased to 34. 0.9012 Thu May 26 2016 CHANGES: - Test improvements. BUGFIXES: - Data::Dumper 'Sparseseen' method not used now. 0.9011 Tue May 24 2016 BUGFIXES: - Test::More required version corrected. 0.9010 Thu Apr 28 2016 CHANGES: - Adapted for kafka 0.9.0.1 . BUGFIXES: - Tests corrected. - Require perl 5.10 core modules version. 0.9001 Tri Feb 05 2016 BUGFIXES: - Tests corrected. 0.9000 Thu Feb 04 2016 CHANGES: - Adapted for kafka 0.9 . - Updated error codes to conform with Kafka documentation. - Kafka::Producer->new does not support values of RequiredAcks > 1 anymore. - Added 'ip_version' argument for Kafka::Connection->new and Kafka::IO->new to force host name resolving (or IP address interpretation) in IPv4 or IPv6. - Added error codes $ERROR_INCOMPATIBLE_HOST_IP_VERSION . BUGFIXES: - Incorrect osvers comparison for NetBSD. - Remove unnecessary dependency on List::MoreUtils (thanks to Dan Book). 0.8013 Tue Nov 24 2015 BUGFIXES: - Packing timeval for NetBSD 6.0 and later. - Use inet_aton instead inet_pton for IPv4 addresses. - t/03_io_ipv6.t fixed to work with perl earlier than 5.014 . 0.8012 Mon Nov 09 2015 CHANGES: - Support IPv6. IPv6 address in standard form. BUGFIXES: - Fix MANIFEST. - Error analysis is improved in Kafka::Connection . 0.8011 Mon Aug 18 2015 CHANGES: - Kafka::Connection connection is closed only when $connection->close method is called explicitly. - Kafka::IO object destruction do not close socket. BUGFIXES: - Added Apache Kafka server error codes: $ERROR_LOAD_IN_PROGRESS_CODE, $ERROR_CONSUMER_COORDINATOR_NOT_AVAILABLE_CODE, $ERROR_NOT_COORDINATOR_FOR_CONSUMER_CODE - $ERROR_REPLICA_NOT_AVAILABLE error ignored according to Apache Kafka documentation (reported by Shabnam Shamaei). - Kafka::IO->is_alive method correctly determines server availability. 0.8010 Fri Feb 06 2015 CHANGES: - $RECEIVE_MAX_RETRIES, $SEND_MAX_RETRIES renamed to $RECEIVE_MAX_ATTEMPTS, $SEND_MAX_ATTEMPTS . - Method Kafka::Connection->is_server_alive renamed to is_server_connected . - New Kafka::Connection->is_server_alive method properly checks for availability of Kafka server. - Added method Kafka::Connection->get_metadata . - Added method Kafka::Connection->exists_topic_partition . - $Kafka::MIN_BYTES_RESPOND_HAS_DATA changed to 10. - Testing supports Kafka version 0.8.2 . BUGFIXES: - Partititon cannot be negative. - Improved reporting for ERROR_UNKNOWN_TOPIC_OR_PARTITION error. - Receiving metadata for a new topic fixed. 0.8009 Tue Jan 13 2015 CHANGES: - Added error $ERROR_RESPONSEMESSAGE_NOT_RECEIVED . BUGFIXES: - Module Kafka::IO no longer uses sigtrap (thanks to Mark Hedges). - Taint mode support (reported by Hari Sekhon). 0.8008 Tue Apr 29 2014 - Support for GZIP and Snappy compression (thanks to Colin Blower). - 'Kafka' module extended with the following constants: $COMPRESSION_NONE, $COMPRESSION_GZIP, $COMPRESSION_SNAPPY, $ERROR_COMPRESSION, $ERROR_METADATA_ATTRIBUTES. - Removed $ERROR_COMPRESSED_PAYLOAD constant. - Added test 't/45_compression.t'. 0.8007 Fri Mar 14 2014 CHANGES: - Kafka::Cluster adapted for kafka 0.8.1 . 0.8006 Thu Feb 20 2014 BUGFIXES: - Corrected description of the error in Kafka::Connection. 0.8001_1 - 0.8005 Fri Dec 27 2013 CHANGES: - t/*_io.t examines possibility of using gethostbyname( 'localhost' ) . - Debug diagnostic and test improved. BUGFIXES: - 'localhost' is no longer used in the t/*_io.t . 0.8001 Tue Dec 24 2013 CHANGES: - Improvements to error handling and tests. - 'MaxLoggedErrors' argument is added to Kafka::Connection->new. - Added new methods Kafka::Connection->nonfatal_errors, Kafka::Connection->clear_nonfatals, Kafka::Internals->debug_level . - Added error $Kafka::ERROR_SEND_NO_ACK . - Added setting $Kafka::RECEIVE_MAX_RETRIES . 0.800_17 Fri Nov 15 2013 CHANGES: - 'AutoCreateTopicsEnable' argument is added to Kafka::Connection->new (thanks to Ed Silva). 0.800_16 Fri Nov 08 2013 BUGFIXES: - Fixed problem with connecting to servers running on localhost. 0.800_15 Wed Nov 06 2013 CHANGES: - Improvement of test t/*_io.t . 0.800_14 Thu Oct 31 2013 CHANGES: - We use alarm internally in Kafka::IO (not Time::HiRes::alarm). - For 'gethostbyname' operations the timeout is rounded to the nearest greater positive integer. 0.800_8 - 0.800_13 Wed Oct 30 2013 CHANGES: - Debugging Test t/*_io.t . 0.800_7 Mon Oct 28 2013 CHANGES: - t/*_io.t test more ways how external alarm may interfere with internal alarm used by Kafka::IO. - Added to META.yml the list of the modules provided by this distribution. 0.800_6 Fri Oct 25 2013 CHANGES: - You can disable ALARMS usage by Kafka by passing timeout => undef to Kafka::Connection->new or Kafka::IO->new. In this case '$REQUEST_TIMEOUT' is used for the rest of IO operations. BUGFIXES: - Kafka::IO->new preserves external alarms but this may delay alarm signal delivery (thanks to Stephen Sprague). 0.800_5 Fri Oct 18 2013 CHANGES: - Test t/??_io.t checks the external ALRM signal handler. - Minor improvements in documentation. 0.800_4 Fri Sep 27 2013 CHANGES: - Refactored error handling. See documentation for module Kafka::Exceptions. Retired methods RaiseError, last_error last_errorcode. - Added method Kafka::Connection->cluster_errors. 0.800_3 Tue Sep 17 2013 CHANGES: - Use Try::Tiny for proper preservation of $@ . 0.800_2 Mon Sep 16 2013 BUGFIXES: - Fixed to make it working on Perl 5.10 and over. 0.800_1 Fri Sep 06 2013 !!! This is a major upgrade that changes API. It's strongly advised to study revised documentation and update your code where necessary !!! CHANGES: - Implement Kafka API ver 0.8.0 . For communication with earlier versions of Kafka use Kafka module versions before 0.8.0 . - Added Kafka::Connection, Kafka::Internals. - Kafka::Mock renamed to Kafka::MockIO and moved to t/lib. - Additional testing units (in t/lib) for the following modules: Kafka::Cluster, Kafka::MockProtocol, Kafka::TestInternals. - Various service scripts & configurations added in t/bin and t/config. - Profiling scripts are added to the tools directory. - Introducted KAFKA_BASE_DIR environment variable to specify alternative location to Kafka base directory. Defaults to t/data. - Updated service files needed to build the package. 0.12 Fri Mar 08 2013 CHANGES: - Change the port used in the Kafka::Mock 0.11 Thu Feb 28 2013 CHANGES: - Use String::CRC32 instead of Digest::CRC 0.10 Thu Feb 07 2013 CHANGES: - 03_kafka_bench.t does not depend on previous tests 0.09 Mon Jan 14 2013 CHANGES: - benchmark_consumer.pl and benchmark_producer.pl are moved to directory tools - Makefile.PL by default does not ask questions interactively 0.08 Fri Dec 21 2012 CHANGES: - Tests reorganized 0.07 Thu Dec 18 2012 FIXES: - Checking OS and Perl version in Makefile.PL CPAN RT #82018: Tests hang on Windows. (reported by Alexandr Ciornii) 0.06 Wed Sep 26 2012 CHANGES: - Refinement of calculation operation time in benchmarks - Some improvements in tests 0.05 Thu Sep 13 2012 CHANGES: - Mock server tests moved to 'xt' directory 0.04 Mon Sep 10 2012 CHANGES: - Author and release tests moved to 'xt' directory 0.03 Thu Aug 30 2012 CHANGES: - Makefile.PL modified for the use of command line - Added control code coverage 'coverage.sh' - Added test 't/94_fixme.t' - Added test 't/95_critic.t' BUGFIXES: - Fixed version number to 'use 5.010' 0.02 Wed Jun 13 2012 CHANGES: - Minor changes in documentation BUGFIXES: - Fixed Kafka::Int64 to make it working on Perl 5.12 - Disallow using 0 timeouts in Kafka::IO and Kafka::Mock 0.01 Tue Jun 12 2012 - Original version