Skip to content

Commit

Permalink
Merge pull request #42 from HernanRivasAcosta/hernan.quickfix.metadat…
Browse files Browse the repository at this point in the history
…a_error_mishandling

Fixed a parsing error for some metadata responses
  • Loading branch information
HernanRivasAcosta committed Sep 1, 2016
2 parents 52340d5 + c7f9307 commit e0866b8
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 14 deletions.
File renamed without changes.
3 changes: 3 additions & 0 deletions relx.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{release, {kafkerl, "2.1.0"}, [kafkerl]}.
{sys_config, "config/sys.config"}.
{extended_start_script, true}.
2 changes: 1 addition & 1 deletion src/kafkerl.app.src
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
, kafkerl
, [ {description, "Apache Kafka 0.8.2 high performance producer/consumer for erlang."}
, {vsn, "2.1.0"}
, {applications, [kernel, stdlib]}
, {applications, [kernel, validerl, epocxy, lager, stdlib]}
, {mod, {kafkerl_app, []}}
, {modules, [ kafkerl
, kafkerl_app
Expand Down
25 changes: 12 additions & 13 deletions src/kafkerl_protocol.erl
Original file line number Diff line number Diff line change
Expand Up @@ -568,25 +568,24 @@ parse_topic_metadata(Count, <<>>, Acc) when Count =< 0 ->
parse_topic_metadata(Count, Bin, Acc) when Count =< 0 ->
lager:warning("Finished parsing topic metadata, ignoring bytes: ~p", [Bin]),
{ok, lists:reverse(Acc)};
parse_topic_metadata(Count, <<0:?SHORT,
TopicSize:?USHORT,
TopicName:TopicSize/binary,
parse_topic_metadata(Count, <<ErrorCode:?SHORT,
-1:?SHORT,
PartitionCount:?UINT,
PartitionsBin/binary>>, Acc) ->
{ok, PartitionsMetadata, Remainder} = parse_partition_metadata(PartitionCount,
PartitionsBin),
TopicMetadata = {0, TopicName, PartitionsMetadata},
TopicMetadata = {ErrorCode, <<"unknown">>, PartitionsMetadata},
parse_topic_metadata(Count - 1, Remainder, [TopicMetadata | Acc]);
parse_topic_metadata(Count, <<ErrorCode:?SHORT,
-1:?SHORT, % TopicSize
0:?UINT, % PartitionCount
Remainder/binary>>, Acc) ->
{ok, PartitionsMetadata, Remainder} = parse_partition_metadata(0, Remainder),
TopicMetadata = {ErrorCode, <<"unkown">>, PartitionsMetadata},
parse_topic_metadata(Count - 1, Remainder, [TopicMetadata | Acc]);
parse_topic_metadata(_Count, _Bin, _Acc) ->
{error, bad_binary}.

TopicSize:?USHORT,
TopicName:TopicSize/binary,
PartitionCount:?UINT,
PartitionsBin/binary>>, Acc) ->
{ok, PartitionsMetadata, Remainder} = parse_partition_metadata(PartitionCount,
PartitionsBin),
TopicMetadata = {ErrorCode, TopicName, PartitionsMetadata},
parse_topic_metadata(Count - 1, Remainder, [TopicMetadata | Acc]).
parse_partition_metadata(Count, Bin) ->
parse_partition_metadata(Count, Bin, []).

Expand Down

0 comments on commit e0866b8

Please sign in to comment.