Skip to content

Latest commit

 

History

History
165 lines (115 loc) · 8.26 KB

CHANGELOG.md

File metadata and controls

165 lines (115 loc) · 8.26 KB

Changelog

Unreleased

2.11.0

  • Allow the liveness probe command to skip loading config files
  • Add unix domain socket support for Datadog StatsD metrics
  • Bump minimum rdkafka gem version to 0.15.0
  • Bump minimum Ruby version to 3.0
  • Configurable strategy for consuming multiple topics

2.10.0

  • Bump rdkafka gem version to 0.13.0
  • Support cooperative-sticky
  • Instrument produce delivery errors
  • Resolve Rails 7.1 logger incompatibility
  • Don't load rails env for liveness probe
  • Fix config load for liveness probe
  • Send exceptions to process_batch instrumenter
  • Docker test fixes
  • Test in CI with Ruby 3.2

v2.9.0, v2.9.0.beta1

  • Add partitioner producer config option to allow changing the strategy to determine which topic partition a message is written to when racecar produces a kafka message
  • Add built-in liveness probe for Kubernetes deployments.

v2.8.2

  • Handles ErroneousStateError, in previous versions the consumer would do several unnecessary group leave/joins. The log level is also changed to WARN instead of ERROR. (#295)

v2.8.1

  • Adds new ErroneousStateError to racecar in order to give more information on this new possible exception.

v2.8.0

  • Update librdkafka version from 1.8.2 to 1.9.0 by upgrading from rdkafka 0.10.0 to 0.12.0. (#293)

v2.7.0

  • Update librdkafka version from 1.5.0 to 1.8.2 by upgrading from rdkafka 0.10.0 to 0.11.1. (#283)
  • Bumps minimum required Ruby version to 2.6

v2.6.0

  • Add capability to specify partition number when producing messages

v2.5.0

  • fetch_messages can be configured per consumer, just as the maximum timeout to wait for a full batch.

v2.4.0

  • Update librdkafka version from 1.4.0 to 1.5.0 by upgrading from rdkafka 0.8.0 to 0.10.0. (#263)
  • Restore support for Ruby 2.4 (#258)

racecar v2.3.1

  • Handle ERR_NOT_COORDINATOR (#209)

racecar v2.3.0

  • Add native support for Heroku (#248)
  • [Racecar::Consumer] When messages fail to deliver, an extended error with hints is now raised. Instead of Rdkafka::RdkafkaError you'll get a Racecar::MessageDeliveryError instead. (#219). If you have set a Racecar.config.error_handler, it might need to be updated.
  • [Racecar::Consumer] When message delivery times out, Racecar will reset the producer in an attempt to fix some of the potential causes for this error. (#219)
  • Validate the process and process_batch method signature on consumer classes when initializing (#236)
  • Add Ruby 3.0 compatibility (#237)
  • Introduce parallel runner, which forks a number of independent consumers, allowing partitions to be processed in parallel. (#222)
  • [Racecar::Runner] Ensure producer is closed, whether it closes or errors. (#222)
  • Configure statistics_interval directly in the config. Disable statistics when no callback is defined (#232)

racecar v2.2.0

  • [Racecar::ConsumerSet] breaking change Racecar::ConsumerSet's functions poll and batch_pall expect the max wait values to be given in milliseconds. The defaults were using config.max_wait_time, which is in seconds. If you do not directly use Racecar::ConsumerSet, or always call its poll and batch_poll functions by specfiying the max wait time (the first argument), then this breaking change does not affect you. (#214)

racecar v2.1.1

  • [Bugfix] Close RdKafka consumer in ConsumerSet#reset_current_consumer to prevent memory leak (#196)
  • [Bugfix] poll/batch_poll would not retry in edge cases and raise immediately. They still honor the max_wait_time setting, but might return no messages instead and only retry on their next call. (#177)

racecar v2.1.0

  • Bump rdkafka to 0.8.0 (#191)

racecar v2.0.0

  • Replace ruby-kafka with rdkafka-ruby as the low-level library underneath Racecar (#91).
  • Fix max_wait_time usage (#179).
  • Removed config option sasl_over_ssl.
  • [Racecar::Consumer] Do not pause consuming partitions on exception.
  • [Racecar::Consumer] topic, payload and key are mandadory to method produce.
  • [Racecar::Consumer] process_batch retrieves an array of messages instead of batch object.
  • [Racecar::Consumer] Remove offset_retention_time.
  • [Racecar::Consumer] Allow providing additional_config for subscriptions.
  • [Racecar::Consumer] Provide access to producer and consumer.
  • [Racecar::Consumer] Enforce delivering messages with method deliver!.
  • [Racecar::Consumer] instead of raising when a partition EOF is reached, the result can be queried through consumer.last_poll_read_partition_eof?.
  • [Racecar::Config] Remove offset_retention_time, connect_timeout and offset_commit_threshold.
  • [Racecar::Config] Pass config to rdkafka-ruby via producer and consumer.
  • [Racecar::Config] Replace max_fetch_queue_size with min_message_queue_size.
  • [Racecar::Config] Add synchronous_commits to control blocking of consumer.commit (default false).
  • [Racecar::Config] Add security_protocol to control protocol between client and broker.
  • [Racecar::Config] SSL configuration via ssl_ca_location, ssl_crl_location, ssl_keystore_location and ssl_keystore_password.
  • [Racecar::Config] SASL configuration via sasl_mechanism, sasl_kerberos_service_name, sasl_kerberos_principal, sasl_kerberos_kinit_cmd, sasl_kerberos_keytab, sasl_kerberos_min_time_before_relogin, sasl_username and sasl_password.
  • [Instrumentation] produce_message.racecar sent whenever a produced message is queued. Payload includes topic, key, value and create_time.
  • [Instrumentation] acknowledged_message.racecar send whenever a produced message was successfully received by Kafka. Payload includes offset and partition, but no message details.
  • [Instrumentation] rdkafka-ruby does not yet provide instrumentation rdkafka-ruby#54.
  • [Instrumentation] if processors define a statistics_callback, it will be called once every second for every subscription or producer connection. The first argument will be a Hash, for contents see librdkafka STATISTICS.md.
  • Add current directory to $LOAD_PATH only when --require option is used (#117).
  • Remove manual heartbeat support, see Long-running message processing section in README.
  • Rescue exceptions--then log and pass to on_error--at the outermost level of exe/racecar, so that exceptions raised outside Cli.run are not silently discarded (#186).
  • When exceptions with a cause are logged, recursively log the cause detail, separated by --- Caused by: ---\n.

racecar v1.0.0

Unchanged from v0.5.0.

racecar v0.5.0

  • Add support for manually sending heartbeats with heartbeat (#105).
  • Allow configuring sasl_over_ssl.
  • Add current directory to $LOAD_PATH only when --require option is used (#117).
  • Support for ssl_verify_hostname in the configuration (#120)

racecar v0.4.2

  • Allow configuring max_bytes and max_fetch_queue_size.

racecar v0.4.1

  • Allow configuring the producer (#77).
  • Add support for configuring exponential pause backoff (#76).

racecar v0.4.0

  • Require Kafka 0.10 or higher.
  • Support configuring SASL SCRAM authentication (#65).

racecar v0.3.8

  • Change the default max_wait_time to 1 second.
  • Allow setting the offset_retention_time for consumers.
  • Allow pausing partitions indefinitely (#63).

racecar v0.3.7

  • Allow setting the key and/or partition key when producing messages.

racecar v0.3.6

  • Allow producing messages (alpha).

racecar v0.3.5

  • Instrument using ActiveSupport::Notifications (#43).
  • Add support for SASL.

racecar v0.3.4

  • Use KingKonf for defining configuration variables.
  • Allow setting configuration variables through the CLI.
  • Make all configuration variables available over the ENV.
  • Allow configuring Datadog monitoring.