Skip to content

Commit

Permalink
ensure inputSize state value is reset during buftok.flush (#16760) (#…
Browse files Browse the repository at this point in the history
…16770)

(cherry picked from commit e36cace)

Co-authored-by: João Duarte <[email protected]>
  • Loading branch information
github-actions[bot] and jsvd authored Dec 9, 2024
1 parent 6f8fd5a commit 33ac279
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
29 changes: 29 additions & 0 deletions logstash-core/spec/logstash/util/buftok_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,35 @@
expect(subject.extract("\n\n\n")).to eq(["", "", ""])
end

describe 'flush' do
let(:data) { "content without a delimiter" }
before(:each) do
subject.extract(data)
end

it "emits the contents of the buffer" do
expect(subject.flush).to eq(data)
end

it "resets the state of the buffer" do
subject.flush
expect(subject).to be_empty
end

context 'with decode_size_limit_bytes' do
subject { FileWatch::BufferedTokenizer.new("\n", 100) }

it "emits the contents of the buffer" do
expect(subject.flush).to eq(data)
end

it "resets the state of the buffer" do
subject.flush
expect(subject).to be_empty
end
end
end

context 'with delimiter' do
subject { FileWatch::BufferedTokenizer.new(delimiter) }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,13 @@ public RubyArray extract(final ThreadContext context, IRubyObject data) {
public IRubyObject flush(final ThreadContext context) {
final IRubyObject buffer = input.join(context);
input.clear();
inputSize = 0;
return buffer;
}

@JRubyMethod(name = "empty?")
public IRubyObject isEmpty(final ThreadContext context) {
return input.empty_p();
return RubyUtil.RUBY.newBoolean(input.isEmpty() && (inputSize == 0));
}

}

0 comments on commit 33ac279

Please sign in to comment.