File tree 3 files changed +22
-2
lines changed
3 files changed +22
-2
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,8 @@ Changes and additions to the library will be listed here.
4
4
5
5
## Unreleased
6
6
7
+ - Fix bug when using compression (#458 ).
8
+
7
9
## v0.5.0
8
10
9
11
- Drops support for Kafka 0.9 in favor of Kafka 0.10 (#381 )!
Original file line number Diff line number Diff line change @@ -56,8 +56,20 @@ def decompress
56
56
# For some weird reason we need to cut out the first 20 bytes.
57
57
data = codec . decompress ( value )
58
58
message_set_decoder = Decoder . from_string ( data )
59
+ message_set = MessageSet . decode ( message_set_decoder )
60
+
61
+ # The contained messages need to have their offset corrected.
62
+ messages = message_set . messages . each_with_index . map do |message , i |
63
+ Message . new (
64
+ offset : offset + i ,
65
+ value : message . value ,
66
+ key : message . key ,
67
+ create_time : message . create_time ,
68
+ codec_id : message . codec_id
69
+ )
70
+ end
59
71
60
- MessageSet . decode ( message_set_decoder )
72
+ MessageSet . new ( messages : messages )
61
73
end
62
74
63
75
def self . decode ( decoder )
Original file line number Diff line number Diff line change 15
15
decoder = Kafka ::Protocol ::Decoder . from_string ( data )
16
16
decoded_message = Kafka ::Protocol ::Message . decode ( decoder )
17
17
decoded_message_set = decoded_message . decompress
18
+ messages = decoded_message_set . messages
18
19
19
- expect ( decoded_message_set . messages . map ( &:value ) ) . to eq [ "hello1" , "hello2" ]
20
+ expect ( messages . map ( &:value ) ) . to eq [ "hello1" , "hello2" ]
21
+
22
+ # When decoding a compressed message, the offsets are calculated relative to that
23
+ # of the container message. The broker will set the offset in normal operation,
24
+ # but at the client-side we set it to -1.
25
+ expect ( messages . map ( &:offset ) ) . to eq [ -1 , 0 ]
20
26
end
21
27
22
28
it "only compresses the messages if there are at least the configured threshold" do
You can’t perform that action at this time.
0 commit comments