cookpad / cookpad/grpc_kit

Unbounded Client Streaming Bug (with repro)

Open
#35 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Ruby
Stars
160
Forks
14
Avg merge
6d 11h
Merged PRs (30d)
2

Description

Hi grpc_kit,

I've got a bug I can't debug myself. I ended up within the are of DS9 and couldn't figure out what was going on so I couldn't fix it myself.

Basically the issue I ran into was when client is streaming from an unending source it would just stop yielding messages at some point. It LOOKED like the socket stopped receiving data from what I could tell.

I've reproduced the problem (or similar) in the following git repo which has more notes. This is just a slightly hacked up routeguide so that it is unending. I'd expect it to never end, but the client starts missing messages and eventually it stops receiving all messages. This is over the course of minutes, not immediately.

https://github.com/brocktimus/grpc-kit-stream-repro

The server in this case also continue to stream, even when the client has disconnected. But I'm not as concerned about that one in my exact use case since I'm only streaming as a client and not a server.

Thanks, I really like the project. The forking server model for griffin looks fantastic.

Contributor guide

No contributing guide indexed for this repository

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.

Research direction

Clone and run the linked grpc-stream-repro repository, starting with its hacked-up routeguide and notes to reproduce the unbounded client-streaming failure. Trace why messages stop arriving over several minutes and verify that the client continues receiving messages from the unending source without the server-side disconnect behavior being required.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.