AckingProtocolV1 only ever sends one ACK

Open
#26 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
45/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
ruby
Domain
networking

Research direction

Locate AckingProtocolV1 and inspect ack? together with the @next_ack and window_size handling described in the issue. Reproduce a sequence of server ACKs and verify that each subsequent ACK advances the sequence number rather than remaining tied to the first one.

Written by the indexing model from the issue text.

Description

A while ago I wrote a Python lumberjack client for logstash-1.4.2 which uses ruby-lumberjack version 0.0.22. I recently upgraded to logstash-2.3.2 and this pulled in version 0.0.26 which seems to no longer send more than one ACK.

I've debugged it and have found that there is a bug in the AckingProtocolV1 logic which means it will only ever send one ACK. AckingProtocolV1 sets the sequence number for the next ACK as @next_ack in method ack? but this is only set on the first time when @next_ack is nil, and not updated when the server has sent an ACK. The only time it would be updated would be if the client sent another window_size frame (which mine doesn't).

Dominant language
Ruby
Stars
3
Forks
17
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from elastic/ruby-lumberjack

All issues in elastic/ruby-lumberjack

Similar issues

More Ruby issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.