Current section

113 Versions

Jump to

Compare versions

4 files changed
+19 additions
-12 deletions
  @@ -1,7 +1,7 @@
1 1 KAFKA_VERSION ?= 1.1
2 2 PROJECT = brod
3 3 PROJECT_DESCRIPTION = Kafka client library in Erlang
4 - PROJECT_VERSION = 3.7.6
4 + PROJECT_VERSION = 3.7.7
5 5
6 6 DEPS = supervisor3 kafka_protocol
  @@ -1,5 +1,5 @@
1 1 {<<"name">>,<<"brod">>}.
2 - {<<"version">>,<<"3.7.6">>}.
2 + {<<"version">>,<<"3.7.7">>}.
3 3 {<<"requirements">>,
4 4 #{<<"kafka_protocol">> =>
5 5 #{<<"app">> => <<"kafka_protocol">>,<<"optional">> => false,
  @@ -1,6 +1,6 @@
1 1 {application,brod,
2 2 [{description,"Apache Kafka Erlang client library"},
3 - {vsn,"3.7.6"},
3 + {vsn,"3.7.7"},
4 4 {registered,[]},
5 5 {applications,[kernel,stdlib,kafka_protocol,supervisor3]},
6 6 {env,[]},
  @@ -473,19 +473,26 @@ handle_consumer_delivery(#kafka_message_set{ topic = Topic
473 473 , partition = Partition
474 474 , messages = Messages
475 475 } = MsgSet,
476 - #state{message_type = MsgType} = State0) ->
477 - State = update_last_offset({Topic, Partition}, Messages, State0),
478 - case MsgType of
479 - message -> handle_messages(Topic, Partition, Messages, State);
480 - message_set -> handle_message_set(MsgSet, State)
476 + #state{ message_type = MsgType
477 + , consumers = Consumers0
478 + } = State0) ->
479 + case get_consumer({Topic, Partition}, Consumers0) of
480 + #consumer{} = C ->
481 + Consumers = update_last_offset(Messages, C, Consumers0),
482 + State = State0#state{consumers = Consumers},
483 + case MsgType of
484 + message -> handle_messages(Topic, Partition, Messages, State);
485 + message_set -> handle_message_set(MsgSet, State)
486 + end;
487 + false ->
488 + State0
481 489 end.
482 490
483 - update_last_offset(TP, Messages, #state{consumers = Consumers} = State) ->
491 + update_last_offset(Messages, Consumer0, Consumers) ->
484 492 %% brod_consumer never delivers empty message set, lists:last is safe
485 493 #kafka_message{offset = LastOffset} = lists:last(Messages),
486 - C = get_consumer(TP, Consumers),
487 - Consumer = C#consumer{last_offset = LastOffset},
488 - State#state{consumers = put_consumer(Consumer, Consumers)}.
494 + Consumer = Consumer0#consumer{last_offset = LastOffset},
495 + put_consumer(Consumer, Consumers).
489 496
490 497 -spec start_subscribe_timer(?undef | reference(), timeout()) -> reference().
491 498 start_subscribe_timer(?undef, Delay) ->