The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Kafka package

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