- 2.4.0 Added brod-cli
- 2.4.1 Fixed brod-cli typo fix
- 2.5.0
- Pluggable SASL authentication backend (contributor: ElMaxo)
- Brod-cli support extra ebin to code path
- Fix group subscriber duplicated loopback messages (bug)
- SASL-PLAIN username password in text file
- Hide SASL-PLAIN password in an anonymous function in
brod_client
state
- 2.5.1
- Fix ignored commit history when committed offset is 0 (bug)
- 3.0.0
- New Features
- New API
brod:connect_group_cordinator
to estabilish a sockt towards group coordinator broker. - New API
brod:fetch_committed_offsets
to fetch consumer group commited offsets. - New API
brod:list_groups
,brod:list_all_groups
andbrod:describe_groups/3
. - Brod-cli new command
groups
to list / describe consumer groups. - Brod-cli new command
commits
to list comsuer group committed offsets.
- New API
- Backward-incompatible changes
brod:get_offsets
API replaced withbrod:resolve_offset
. Reason:brod:get_offsets
andbrod_utils:fetch_offsets
are very confusing, because they look like fetching consumer group committed offsets. Also, the return value has been changed from a list of offsets to a single offset.brod:get_metadata
return value changed from#kpro_MetadataResponse{}
record tokpro:struct()
.brod_utils:fetch/4
is removed, usemake_fetch_fun/8
instead.--count
option removed frombrod-cli
offset
command, The command now resolves only one (or maybe none) offset at a time.- All type specs defined in
brod.hrl
are moved to exported types frombrod.erl
- Backward-compatible changes
#kafka_message{}
record is extended with new fieldsts_type
andts
.#kafka_message.crc
changed from signed to unsigned integer.
- New Features
- 3.1.0
- New Features
- New message type option for topic and group subscribers that specifies whether to
handle a Kafka
message
ormessage_set
.
- New message type option for topic and group subscribers that specifies whether to
handle a Kafka
- New Features
- 3.2.0
- New Features
- Support produce_request version 0 - 2
- Support fetch_request version 0 - 3
- Support offsets_request version 0 - 1
- Support metadata_request version 0 - 2
- Support message create time by allowing
Value
to be[{Ts, Key, Value}]
inbrod:produce
andbrod:produce_sync
APIs - Bind all
#kafka_message{}
fields to variables so they can be used in brod-clifetch
command's--fmt
expression
- Bug Fixes
- Remove sasl application from dependent app list
- New Features
- 3.3.0
- New Features
- Support offset_fetch_request version 1 - 2
- Provide APIs to reset committed offsets
- Support offset commit in brod-cli
- Improved group coordinator logging: 1) stop showing member ID, 2) show callback process.
- Cache queried version ranges per kafka host
- Brod-cli 'offset' command by default resolves offsets for all partitions if '--partition' option is 'all' or missing
- Enhancements
- Brod rock with elvis with travis
- Travis run dialyzer check
- Bug Fixes
- Fixed brod-cli offset_fetch_request version when working with kafka 0.10.1.x or earlier
- Make group coordinator restart on heartbeat timeout
- New Features
- 3.3.1
- Fix brod-cli commits command redandunt socket usage.
- 3.3.2
- Enhancements
- Add sh script to wrap brod-cli escript for erts dir auto discover
- Detailed log for connection estabilishment failures
- Bug Fixes
- Demonitor producer pid after sync_produce_request timeout
- Enhancements
- 3.3.3
- Add a --no-api-vsn-query option for brod-cli to support kafka 0.9
- Bump kafka_protocol to 1.1.1 to fix relative offsets issue so brod-cli can fetch compressed batches as expected, also brod_consumer can start picking fetch request version
- Upgrade roundrobin group protocol to roundrobin_v2 to fix offset commit incompatiblility with kafka spec and monitoring tools etc. see #241 for details
- 3.3.4
- Fix issue #247 -- revert the handling of offset = -1 in offset_fetch_response, bug introduced in 3.3.0 offset = -1 in offset_fetch_response is an indicator of 'no commit' should be ignored (not taken as 'latest')
- 3.3.5
- Fix issue #252 -- Kafka 0.11 and 1.0 have more strict validations on compressed batch wrapper message. Changed kafka_protocol 1.1.2 has the wrapper timestamp and offsets fixed.
- 3.4.0
- Add
prefetch_bytes' consumer config.
brod_consumer' should stop fetch-ahead only when bothprefetch_count' and
prefetch_bytes' limits are exceeded
- Add
- 3.5.0
- Add
*_offset
variants toproduce
APIs, returning the base offsets that were assigned by Kafka. Producers need to be restarted when upgrading to this version.
- Add
- 3.5.1
- Add
extra_sock_opts
client socket options. It would be helpful for tuning the performance of tcp socket.
- Add
- 3.5.2
- Fix issue #263: Kafka 0.11 may send empty batch in fetch response when messages are deleted in compacted topics.
- 3.6.0
- Moved 3 modules to kafka_protocol:
brod_sock
->kpro_connection
brod_auth_backed
->kpro_auth_backend
brod_kafka_requests
->kpro_sent_reqs
#kafka_message.key
and#kafka_message.value
are now alwaysbinary()
(they were of specundefined | binary()
prior to this version). i.e. empty bytes are now decoded as<<>>
instead ofundefined
. This may cause dialyzer check failures.brod_client
no longer logs about metadata socket down, it had been confusing rather than being helpful- There is no more cool-down delay for metadata socket re-establishment
brod_group_coordinator
default session timeout changed from 10 seconds to 30, and heartbeat interval changed from 2 seconds to 5.- Add
brod:produce_cb/4
andbrod:produce_cb/6
to support user defined callback as produce ack handler. - Add
brod:produce_no_ack/3
andbrod:produce_no_ack/5
. min_compression_batch_size
is removed from producer config.- Support magic v2 batch/message format (message headers).
- Use rebar3 as primary build tool for travis-ci, erlang.mk is still supported.
- Support
SCRAM-SHA-256
andSCRAM-SHA-512
SASL authentication mechanisms.
- Moved 3 modules to kafka_protocol:
- 3.6.1
- Make produce request version configurable as
produce_req_vsn
inbrod:producer_config()
- Upgrade
kafka_protocol
to2.1.2
to support alpine/busybox build
- Make produce request version configurable as
- 3.6.2
- Allow
brod_topic_subscriber
to explicitly start consuming from partition offset 0 (by passing in a committed offset of -1).
- Allow
- 3.7.0
- Add
brod_group_subscriber:ack/5
andbrod_group_subscriber:commit/4
to let group subscribers commit offsets asynchronously - Pr #284: In compacted topics, Kafka may return a MessageSet which contains only messages before the desired offset. Just keep reading forward in this case.
- Issue #285
brod_consumer
no longer restart onleader_not_availble
andnot_leader_for_partition
error codes received in fetch response. It resets connection and rediscover leader after delay.
- Add
- 3.7.1
- Fix brod_topic_subscriber and brod_group_subscriber re-subscribe behaviour to avoid fetching duplicated messages.
- Add 'random' and 'hash' partitioner for produce APIs
- Allow
brod_group_subscrber:assign_partitions/3
to return an updated cb_state brod_client:get_connection
is back- Make it possible to run tests on both mac and linux
- Position group leader member at the head of members list when assigning partitions
- 3.7.2
- Pr #298: Subscriber now automatically reconnects to Kafka on topic rebalances where the previous partition leader no longer holds the partition at all.
- Pr #299: Fix topic subscriber returning partition offsets from callback module's init.
- 3.7.3
- Bump kafka_protocol version to 2.2.3
- Discard stale async-ack messages to group subscriber
- 3.7.4
- Add callback to make user_data in group join request
- 3.7.5
- Bump kafka protocol version to 2.2.5
- Fix empty assignment handling. In case a group member has no partition assigned,
member_assignment
data field in group sync response can either benull
(kafka 0.10) or a struct having emptytopic_partitions
(kafka 0.11 or later). The later case was not handled properly inbrod
before this fix.