From 7f655d8e9ec4eb39b78d4fc74adfa9b977e92d1e Mon Sep 17 00:00:00 2001 From: Anton Kaliaev Date: Fri, 3 Jan 2020 12:10:36 +0400 Subject: [PATCH] =?UTF-8?q?rpc:=20pass=20`outCapacity`=20to=20`eventBus#Su?= =?UTF-8?q?bscribe`=20when=20subscribing=20using=20a=20l=E2=80=A6=20(#4279?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * pass `outCapacity` to `eventBus#Subscribe` when subscribing using a local client Fixes #4256 * use outCap directly --- CHANGELOG_PENDING.md | 1 + rpc/client/localclient.go | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index d28c727b9..aebc387f2 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -142,3 +142,4 @@ program](https://hackerone.com/tendermint). efforts of @gchaincl and @ancazamfir) - [p2p] \#4140 `SecretConnection`: use the transcript solely for authentication (i.e. MAC) - [consensus/types] \#4243 fix BenchmarkRoundStateDeepCopy panics (@cuonglm) +- [rpc] \#4256 Pass `outCapacity` to `eventBus#Subscribe` when subscribing using a local client diff --git a/rpc/client/localclient.go b/rpc/client/localclient.go index 95cc879b8..c1d0809a6 100644 --- a/rpc/client/localclient.go +++ b/rpc/client/localclient.go @@ -177,16 +177,22 @@ func (c *Local) Subscribe( if err != nil { return nil, errors.Wrap(err, "failed to parse query") } - sub, err := c.EventBus.Subscribe(ctx, subscriber, q) - if err != nil { - return nil, errors.Wrap(err, "failed to subscribe") - } outCap := 1 if len(outCapacity) > 0 { outCap = outCapacity[0] } + var sub types.Subscription + if outCap > 0 { + sub, err = c.EventBus.Subscribe(ctx, subscriber, q, outCap) + } else { + sub, err = c.EventBus.SubscribeUnbuffered(ctx, subscriber, q) + } + if err != nil { + return nil, errors.Wrap(err, "failed to subscribe") + } + outc := make(chan ctypes.ResultEvent, outCap) go c.eventsRoutine(sub, subscriber, q, outc)