Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

limit number of /subscribe clients and queries per client #3269

Merged
merged 5 commits into from
Mar 11, 2019

Commits on Mar 4, 2019

  1. limit number of /subscribe clients and queries per client

    Add the following config variables (under [rpc] section):
      * max_subscription_clients
      * max_subscriptions_per_client
      * timeout_broadcast_tx_commit
    
    Fixes #2826
    
    new HTTPClient interface for subscriptions
    
    finalize HTTPClient events interface
    
    remove EventSubscriber
    
    fix data race
    
    ```
    WARNING: DATA RACE
    Read at 0x00c000a36060 by goroutine 129:
      github.com/tendermint/tendermint/rpc/client.(*Local).Subscribe.func1()
          /go/src/github.com/tendermint/tendermint/rpc/client/localclient.go:168 +0x1f0
    
    Previous write at 0x00c000a36060 by goroutine 132:
      github.com/tendermint/tendermint/rpc/client.(*Local).Subscribe()
          /go/src/github.com/tendermint/tendermint/rpc/client/localclient.go:191 +0x4e0
      github.com/tendermint/tendermint/rpc/client.WaitForOneEvent()
          /go/src/github.com/tendermint/tendermint/rpc/client/helpers.go:64 +0x178
      github.com/tendermint/tendermint/rpc/client_test.TestTxEventsSentWithBroadcastTxSync.func1()
          /go/src/github.com/tendermint/tendermint/rpc/client/event_test.go:139 +0x298
      testing.tRunner()
          /usr/local/go/src/testing/testing.go:827 +0x162
    
    Goroutine 129 (running) created at:
      github.com/tendermint/tendermint/rpc/client.(*Local).Subscribe()
          /go/src/github.com/tendermint/tendermint/rpc/client/localclient.go:164 +0x4b7
      github.com/tendermint/tendermint/rpc/client.WaitForOneEvent()
          /go/src/github.com/tendermint/tendermint/rpc/client/helpers.go:64 +0x178
      github.com/tendermint/tendermint/rpc/client_test.TestTxEventsSentWithBroadcastTxSync.func1()
          /go/src/github.com/tendermint/tendermint/rpc/client/event_test.go:139 +0x298
      testing.tRunner()
          /usr/local/go/src/testing/testing.go:827 +0x162
    
    Goroutine 132 (running) created at:
      testing.(*T).Run()
          /usr/local/go/src/testing/testing.go:878 +0x659
      github.com/tendermint/tendermint/rpc/client_test.TestTxEventsSentWithBroadcastTxSync()
          /go/src/github.com/tendermint/tendermint/rpc/client/event_test.go:119 +0x186
      testing.tRunner()
          /usr/local/go/src/testing/testing.go:827 +0x162
    ==================
    ```
    
    lite client works (tested manually)
    
    godoc comments
    
    httpclient: do not close the out channel
    
    use TimeoutBroadcastTxCommit
    
    no timeout for unsubscribe
    
    but 1s Local (5s HTTP) timeout for resubscribe
    
    format code
    
    change Subscribe#out cap to 1
    
    and replace config vars with RPCConfig
    
    TimeoutBroadcastTxCommit can't be greater than rpcserver.WriteTimeout
    
    rpc: Context as first parameter to all functions
    
    reformat code
    
    fixes after my own review
    
    fixes after Ethan's review
    
    add test stubs
    
    fix config.toml
    melekes committed Mar 4, 2019
    Configuration menu
    Copy the full SHA
    529ec9b View commit details
    Browse the repository at this point in the history

Commits on Mar 5, 2019

  1. fixes after manual testing

    - rpc: do not recommend to use BroadcastTxCommit because it's slow and wastes
    Tendermint resources (pubsub)
    - rpc: better error in Subscribe and BroadcastTxCommit
    - HTTPClient: do not resubscribe if err = ErrAlreadySubscribed
    melekes committed Mar 5, 2019
    Configuration menu
    Copy the full SHA
    2aba9e3 View commit details
    Browse the repository at this point in the history

Commits on Mar 6, 2019

  1. fixes after Ismail's review

    melekes committed Mar 6, 2019
    Configuration menu
    Copy the full SHA
    f4552ef View commit details
    Browse the repository at this point in the history

Commits on Mar 11, 2019

  1. Update rpc/grpc/grpc_test.go

    Co-Authored-By: melekes <anton.kalyaev@gmail.com>
    liamsi and melekes committed Mar 11, 2019
    Configuration menu
    Copy the full SHA
    f997475 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    6fdd3b3 View commit details
    Browse the repository at this point in the history