unclechu's fork of gRPC-haskell
Find a file
Joel Stanley 72160cea89 Fixes a concurrency bug wherein a thread (running beyond the maximum number of
pluckers) would register a CQ notification via
grpc_server_request_registered_call prior to obtaining pluck permission, block
on acquiring such permission, and thus miss notification of the server call.

The bug can could be witnessed with particular interleavings by ensuring that
GRPC_MAX_COMPLETION_QUEUE_PLUCKERS server threads are blocked on their own
server call notifications, and then using the
(GRPC_MAX_COMPLETION_QUEUE_PLUCKERS+1)th server thread to attempt to block on a
notification for an additional server call.

In order to fix this, we simply extended the pluck permission held window for
serverRequestCall, and created a variant of pluck (called pluck') which assumes
permission to pluck is already held by the calling thread.
2016-07-10 17:15:57 -05:00
cbits Preliminary streaming mode support (client streaming, server streaming, bidirectional) (#37) 2016-07-06 08:59:38 -05:00
examples/echo Fixes a concurrency bug wherein a thread (running beyond the maximum number of 2016-07-10 17:15:57 -05:00
include Preliminary streaming mode support (client streaming, server streaming, bidirectional) (#37) 2016-07-06 08:59:38 -05:00
src/Network/GRPC Fixes a concurrency bug wherein a thread (running beyond the maximum number of 2016-07-10 17:15:57 -05:00
tests Preliminary streaming mode support (client streaming, server streaming, bidirectional) (#37) 2016-07-06 08:59:38 -05:00
.gitignore ignore compiled cpp binaries (#31) 2016-06-22 10:41:38 -07:00
grpc-haskell.cabal Preliminary streaming mode support (client streaming, server streaming, bidirectional) (#37) 2016-07-06 08:59:38 -05:00
LICENSE Initial commit. 2015-02-27 18:14:32 +01:00
Setup.hs Initial commit. 2015-02-27 18:14:32 +01:00
stack.yaml Preliminary streaming mode support (client streaming, server streaming, bidirectional) (#37) 2016-07-06 08:59:38 -05:00