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

Error: 8 RESOURCE_EXHAUSTED: Bandwidth exhausted #1158

Closed
kirillgroshkov opened this issue Nov 4, 2019 · 40 comments
Closed

Error: 8 RESOURCE_EXHAUSTED: Bandwidth exhausted #1158

kirillgroshkov opened this issue Nov 4, 2019 · 40 comments

Comments

@kirillgroshkov
Copy link

Problem description

We use @googlecloud/datastore dependency in our code. Since some version of grpc-js (currently we're on 0.6.9) we started to receive the following error in our production and staging backends, also in our cron jobs that stream over ~100K / 1M records in Datastore (sometimes after ~5 minutes, sometimes after ~30 minutes). Error details as seen in our Sentry:

Error: 8 RESOURCE_EXHAUSTED: Bandwidth exhausted
    at Object.callErrorFromStatus (/root/repo/node_modules/@grpc/grpc-js/build/src/call.js:30:26)
    at Http2CallStream.<anonymous> (/root/repo/node_modules/@grpc/grpc-js/build/src/client.js:96:33)
    at Http2CallStream.emit (events.js:215:7)
    at Http2CallStream.EventEmitter.emit (domain.js:476:20)
    at /root/repo/node_modules/@grpc/grpc-js/build/src/call-stream.js:75:22
    at processTicksAndRejections (internal/process/task_queues.js:75:11) {
  code: 8,
  details: 'Bandwidth exhausted',
  metadata: Metadata { internalRepr: Map {}, options: {} },
  note: 'Exception occurred in retry method that was not classified as transient'
}

Reproduction steps

Very hard to give reproduction steps. Stack trace is not "async", in a way that it doesn't like to exact place where it was called in the code (like it would have done with return await). We know that in the backend service we're doing all kinds of Datastore calls, but NOT stream. In cron jobs we DO stream as well as other (get, save) api calls.

Environment

  • Backend service is in AppEngine (was in Node10, now in Node12 beta, which runs node 12.4.0)
  • @grpc/grpc-js@0.6.9

We definitely did NOT see this error in 0.5.x, but I don't remember exactly since which version of 0.6.x it started to appear.

Additional context

Error happens quite seldomly, maybe ~1-2 times a days on a backend service that serves ~1M requests a day. But when it fails - it fails hard, it's impossible to try/catch such error, and usually one "occurrence" of such error fails multiple requests from our clients. For example, last night it failed in our staging environment that was running e2e tests (many browsers open in parallel) which produced ~480 errors in one spike. So, looks like this error does not "recover the connection" very quickly.

Another annoying thing of this error is that if it happens inside a long-running cron job that streams some table - we have no way to recover from that error and the whole cron job becomes "failed in the middle" (imagine running a DB migration that fails in the middle in a non-transactional way). So, if our cron job needs to run for ~3 hours and fails after 2 hours - we have no choice but to restart it from the very beginning (paying all the datastore costs).

@kirillgroshkov
Copy link
Author

kirillgroshkov commented Nov 4, 2019

UPD. Don't want to complicate this github issue with different errors, but trying now the same cron job multiple times gives me different error. Don't know how it is related to the original one. Tell me if I should open another issue for it or not. Stack trace:

Error: 13 INTERNAL: 
    at Object.callErrorFromStatus (/Users/kirill/Idea/NCBackend3/node_modules/google-gax/node_modules/@grpc/grpc-js/build/src/call.js:30:26)
    at Http2CallStream.<anonymous> (/Users/kirill/Idea/NCBackend3/node_modules/google-gax/node_modules/@grpc/grpc-js/build/src/client.js:96:33)
    at Http2CallStream.emit (events.js:215:7)
    at Http2CallStream.EventEmitter.emit (domain.js:476:20)
    at /Users/kirill/Idea/NCBackend3/node_modules/google-gax/node_modules/@grpc/grpc-js/build/src/call-stream.js:75:22
    at processTicksAndRejections (internal/process/task_queues.js:75:11) {
  code: 13,
  details: '',
  metadata: Metadata { internalRepr: Map {}, options: {} },
  note: 'Exception occurred in retry method that was not classified as transient'
}

Currently I have a script that reproduced this error after ~7 minutes 3 times in a row (will try more times, but looks "consistently reproducible"). All this script does is it opens 16 streams in parallel, reading data from Datastore and saving it (streaming) into a gzipped file.

This is when running on my local MacOS.

yarn list @grpc/grpc-js

├─ @grpc/grpc-js@0.6.10
└─ google-gax@1.7.5
   └─ @grpc/grpc-js@0.6.9

@murgatroid99
Copy link
Member

murgatroid99 commented Nov 4, 2019

OK, there are a couple of issues here. Tracking down the source of these errors may be tricky for the reasons you mentioned, but they are definitely the result of errors being sent by the server in some form.

You also mention that you can't try/catch these errors. These are errors that the Datastore library is outputting. They may be promise rejections or something but you should be able to handle them.

@kirillgroshkov
Copy link
Author

I'm confident that these errors we're unable to try catch. We have a code like:

try {
await datastore.get(...)
} catch (err) {
console.error('datastore error!', err)
}

This console.error fires sometimes on "normal" occasions (non-grpc-related), but it never fired when we had this Bandwidth exhausted error or any of the previous errors from grpc-js in the past (like the ones that other people experienced and that were closed in 0.6.x versions). So, I'm suspecting there's some problem in how @google-cloud/datastore fires errors. In other words, example of "non-try-catchable" error is:

try { ... 
setTimeout(() => throw new Error('catch me if you can!'), 500)
} catch ....

AFAIK - nothing can catch such error, so it'll become unhandledRejection or uncaughtException.
Correct me if I'm wrong.

Or, is there a way to do an experiment, add some throw error in grpc source code in node_modules and see if try/catch around Datastore api call gonna be caught or not?

@murgatroid99
Copy link
Member

Well, grpc doesn't throw that error. It just passes it along to the client (Datastore, in this case). I am fairly certain that Datastore propagates the error as a promise rejection, but either way, it's not a grpc issue if Datastore is propagating that error improperly.

@MiLk
Copy link

MiLk commented Dec 11, 2019

We started to observe the same issue since yesterday.
We have a client using grpc-js that we updated from 0.5.2 to 0.6.11 about 3 weeks ago,
and a server using grpc-go that we updated from v1.21.1 to v1.25.1 about 3 weeks ago.
What is strange is that we didn't update anything in the past days, but the issue started to show only now.

We get a lot of 8 RESOURCE_EXHAUSTED: Bandwidth exhausted and a few 13 INTERNAL errors on the client after running for a few hours.

We have no error logs on the backend which could help us track down this issue.
We used to have a keepalive enforcement policy set with a 25 seconds MinTime.
It has been temporarily disabled.

@MiLk
Copy link

MiLk commented Dec 13, 2019

So far, our best guess has been that it has been related to the amount of concurrent requests we are doing. But the numbers are not consistent.

After enabling tracing and using 0.6.14, if we try to send 50k requests with a concurrency of 1k, we reach a situation where we start getting errors 13 and 8.

At some point we receive:

2019-12-13T01:12:48.970Z | resolving_load_balancer | xxxx:8443 READY -> SHUTDOWN
2019-12-13T01:12:48.970Z | connectivity_state | xxxx:8443 READY -> SHUTDOWN
2019-12-13T01:12:48.970Z | connectivity_state | xxxx:8443 SHUTDOWN -> SHUTDOWN

Here is some logs from around the time it starts failing.

2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.932Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576199598932)
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T01:12:48.932Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576199598932)
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T01:12:48.932Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576199598932)
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T01:12:48.932Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576199598932)
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T01:12:48.932Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576199598932)
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T01:12:48.932Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576199598932)
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T01:12:48.932Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T01:12:48.933Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576199598933)
2019-12-13T01:12:48.933Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T01:12:48.933Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T01:12:48.933Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel xxxx:8443
2019-12-13T01:12:48.933Z | subchannel | xxxx:8443 callRefcount 993 -> 994
2019-12-13T01:12:48.933Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel xxx:8443
2019-12-13T01:12:48.933Z | subchannel | xxxx:8443 callRefcount 994 -> 995
2019-12-13T01:12:48.933Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel xxxx:8443
2019-12-13T01:12:48.933Z | subchannel | xxxx:8443 callRefcount 995 -> 996
2019-12-13T01:12:48.933Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel xxxx:8443
2019-12-13T01:12:48.933Z | subchannel | xxxx:8443 callRefcount 996 -> 997
2019-12-13T01:12:48.933Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel xxxx:8443
2019-12-13T01:12:48.933Z | subchannel | xxxx:8443 callRefcount 997 -> 998
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel xxxx:8443
2019-12-13T01:12:48.936Z | subchannel | xxxx:8443 callRefcount 998 -> 999
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel xxxx:8443
2019-12-13T01:12:48.936Z | subchannel | xxxx:8443 callRefcount 999 -> 1000
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.936Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 headers frame
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:48.948Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3316
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3316
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3316
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3311
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 1656
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3312
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3312
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3307
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3313
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3313
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3313
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3308
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:48.949Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 434
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:48.959Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:48.963Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:48.963Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:48.964Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.964Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.964Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.964Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.964Z | subchannel | xxx:8443 callRefcount 1000 -> 999
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.965Z | subchannel | xxxx:8443 callRefcount 999 -> 998
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.965Z | subchannel | xxxx:8443 callRefcount 998 -> 997
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.965Z | subchannel | xxxx:8443 callRefcount 997 -> 996
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.965Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.965Z | subchannel | xxxx:8443 callRefcount 996 -> 995
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.966Z | subchannel | xxxx:8443 callRefcount 995 -> 994
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.966Z | subchannel | xxxx:8443 callRefcount 994 -> 993
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.966Z | subchannel | xxxx:8443 callRefcount 993 -> 992
2019-12-13T01:12:48.966Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3316
2019-12-13T01:12:48.967Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3316
2019-12-13T01:12:48.967Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3316
2019-12-13T01:12:48.967Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3311
Error: 13 INTERNAL:
    at Object.callErrorFromStatus (/Users/xxxx/client/node/node_modules/@grpc/grpc-js/build/src/call.js:30:26)
    at Http2CallStream.<anonymous> (/Users/xxxx/client/node/node_modules/@grpc/grpc-js/build/src/client.js:96:33)
    at Http2CallStream.emit (events.js:215:7)
    at /Users/xxxx/client/node/node_modules/@grpc/grpc-js/build/src/call-stream.js:98:22
    at processTicksAndRejections (internal/process/task_queues.js:75:11) {
  code: 13,
  details: '',
  metadata: Metadata { internalRepr: Map {}, options: {} }
}
2019-12-13T01:12:48.970Z | subchannel | xxxx:8443 callRefcount 2 -> 1
2019-12-13T01:12:48.970Z | resolving_load_balancer | xxxx:8443 READY -> SHUTDOWN
2019-12-13T01:12:48.970Z | connectivity_state | xxxx:8443 READY -> SHUTDOWN
2019-12-13T01:12:48.970Z | connectivity_state | xxxx:8443 SHUTDOWN -> SHUTDOWN
2019-12-13T01:12:48.970Z | subchannel | xxxx:8443 callRefcount 1 -> 0
2019-12-13T01:12:48.970Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.970Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.970Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.970Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.970Z | subchannel | xxxx:8443 callRefcount 992 -> 991
2019-12-13T01:12:48.971Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3314
2019-12-13T01:12:48.971Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3314
2019-12-13T01:12:48.971Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3314
2019-12-13T01:12:48.971Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3309
2019-12-13T01:12:48.971Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.971Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.972Z | subchannel | xxxx:8443 callRefcount 991 -> 990
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 1315
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.972Z | subchannel | xxxx:8443 callRefcount 990 -> 989
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.972Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.994Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.995Z | subchannel | xxxx:8443 callRefcount 989 -> 988
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.995Z | subchannel | xxxx:8443 callRefcount 988 -> 987
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:48.995Z | subchannel | xxxx:8443 callRefcount 987 -> 986
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:48.995Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.004Z | subchannel | xxxx:8443 callRefcount 986 -> 985
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.005Z | subchannel | xxxx:8443 callRefcount 985 -> 984
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.005Z | subchannel | xxxx:8443 callRefcount 984 -> 983
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.005Z | subchannel | xxxx:8443 callRefcount 983 -> 982
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.005Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.005Z | subchannel | xxxx:8443 callRefcount 982 -> 981
2019-12-13T01:12:49.006Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:49.006Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:49.006Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:49.006Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:49.006Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3307
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3307
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3307
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3302
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3318
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3318
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3318
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3313
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.026Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:49.041Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.042Z | subchannel | xxxx:8443 callRefcount 981 -> 980
2019-12-13T01:12:49.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.053Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.053Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.053Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.053Z | subchannel | xxxx:8443 callRefcount 980 -> 979
2019-12-13T01:12:49.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.054Z | subchannel | xxxx:8443 callRefcount 979 -> 978
2019-12-13T01:12:49.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.055Z | subchannel | xxxx:8443 callRefcount 978 -> 977
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.073Z | subchannel | xxxx:8443 callRefcount 977 -> 976
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.073Z | subchannel | xxxx:8443 callRefcount 976 -> 975
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.073Z | subchannel | xxxx:8443 callRefcount 975 -> 974
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.074Z | subchannel | xxxx:8443 callRefcount 974 -> 973
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.074Z | subchannel | xxxx:8443 callRefcount 973 -> 972
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.074Z | subchannel | xxxx:8443 callRefcount 972 -> 971
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.075Z | subchannel | xxxx:8443 callRefcount 971 -> 970
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.075Z | subchannel | xxxx:8443 callRefcount 970 -> 969
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.075Z | subchannel | xxxx:8443 callRefcount 969 -> 968
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.075Z | subchannel | xxxx:8443 callRefcount 968 -> 967
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.076Z | subchannel | xxxx:8443 callRefcount 967 -> 966
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.076Z | subchannel | xxxx:8443 callRefcount 966 -> 965
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.076Z | subchannel | xxxx:8443 callRefcount 965 -> 964
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.076Z | subchannel | xxxx:8443 callRefcount 964 -> 963
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.076Z | subchannel | xxxx:8443 callRefcount 963 -> 962
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.077Z | subchannel | xxxx:8443 callRefcount 962 -> 961
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.077Z | subchannel | xxxx:8443 callRefcount 961 -> 960
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.077Z | subchannel | xxxx:8443 callRefcount 960 -> 959
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.077Z | subchannel | xxxx:8443 callRefcount 959 -> 958
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.077Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.077Z | subchannel | xxxx:8443 callRefcount 958 -> 957
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.078Z | subchannel | xxxx:8443 callRefcount 957 -> 956
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3306
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3306
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3306
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3301
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.078Z | subchannel | xxxx:8443 callRefcount 956 -> 955
2019-12-13T01:12:49.078Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.079Z | subchannel | xxxx:8443 callRefcount 955 -> 954
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.079Z | subchannel | xxxx:8443 callRefcount 954 -> 953
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3120
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:49.079Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.080Z | subchannel | xxxx:8443 callRefcount 953 -> 952
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 2715
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.080Z | subchannel | xxxx:8443 callRefcount 952 -> 951
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.080Z | subchannel | xxxx:8443 callRefcount 951 -> 950
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.080Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.080Z | subchannel | xxxx:8443 callRefcount 950 -> 949
2019-12-13T01:12:49.088Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3314
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3314
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3314
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3309
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.089Z | subchannel | xxxx:8443 callRefcount 949 -> 948
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3309
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3309
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3309
2019-12-13T01:12:49.089Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3304
2019-12-13T01:12:49.091Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.091Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.091Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.091Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.091Z | subchannel | xxxx:8443 callRefcount 948 -> 947
2019-12-13T01:12:49.092Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3312
2019-12-13T01:12:49.092Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3312
2019-12-13T01:12:49.092Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3312
2019-12-13T01:12:49.092Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3307
2019-12-13T01:12:49.092Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.092Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.114Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.114Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.114Z | subchannel | xxxx:8443 callRefcount 947 -> 946
2019-12-13T01:12:49.114Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3049
2019-12-13T01:12:49.114Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.114Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.114Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.114Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.114Z | subchannel | xxxx:8443 callRefcount 946 -> 945
2019-12-13T01:12:49.114Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 266
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3315
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3315
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3310
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.115Z | subchannel | xxxx:8443 callRefcount 945 -> 944
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3314
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3314
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3314
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3309
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3312
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3312
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3312
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3307
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3308
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3308
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3308
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3303
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 101
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3309
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3309
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3309
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3304
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3315
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3315
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3315
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3310
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.115Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.116Z | subchannel | xxxx:8443 callRefcount 944 -> 943
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.116Z | subchannel | xxxx:8443 callRefcount 943 -> 942
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.116Z | subchannel | xxxx:8443 callRefcount 942 -> 941
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.116Z | subchannel | xxxx:8443 callRefcount 941 -> 940
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.116Z | subchannel | xxxx:8443 callRefcount 940 -> 939
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.116Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.117Z | subchannel | xxxx:8443 callRefcount 939 -> 938
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3312
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3312
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3312
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3307
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.117Z | subchannel | xxxx:8443 callRefcount 938 -> 937
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.117Z | subchannel | xxxx:8443 callRefcount 937 -> 936
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.117Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.118Z | subchannel | xxxx:8443 callRefcount 936 -> 935
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.118Z | subchannel | xxxx:8443 callRefcount 935 -> 934
2019-12-13T01:12:49.118Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.123Z | subchannel | xxxx:8443 callRefcount 934 -> 933
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3314
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3314
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3314
2019-12-13T01:12:49.123Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3309
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.124Z | subchannel | xxxx:8443 callRefcount 933 -> 932
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3313
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3313
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3313
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3308
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.124Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.124Z | subchannel | xxxx:8443 callRefcount 932 -> 931
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3309
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3309
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3309
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3304
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.125Z | subchannel | xxxx:8443 callRefcount 931 -> 930
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 2517
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.125Z | subchannel | xxxx:8443 callRefcount 930 -> 929
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.125Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3309
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3309
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3309
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3304
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.126Z | subchannel | xxxx:8443 callRefcount 929 -> 928
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.126Z | subchannel | xxxx:8443 callRefcount 928 -> 927
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.126Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.127Z | subchannel | xxxx:8443 callRefcount 927 -> 926
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 1065
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3313
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3313
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3308
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.127Z | subchannel | xxxx:8443 callRefcount 926 -> 925
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 1970
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.127Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.127Z | subchannel | xxxx:8443 callRefcount 925 -> 924
2019-12-13T01:12:49.130Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 1340
2019-12-13T01:12:49.130Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.131Z | subchannel | xxxx:8443 callRefcount 924 -> 923
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3314
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3314
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3314
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3309
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3312
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3312
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3312
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3307
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.131Z | subchannel | xxxx:8443 callRefcount 923 -> 922
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.131Z | subchannel | xxxx:8443 callRefcount 922 -> 921
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.131Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.132Z | subchannel | xxxx:8443 callRefcount 921 -> 920
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 2354
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T01:12:49.132Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T01:12:49.132Z | subchannel | xxxx:8443 callRefcount 920 -> 919
2019-12-13T01:12:49.136Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3311
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3311
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3311
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3306
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3310
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3310
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3310
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3305
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.137Z | subchannel | xxxx:8443 callRefcount 919 -> 918
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3309
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3309
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3309
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3304
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.137Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.138Z | subchannel | xxxx:8443 callRefcount 918 -> 917
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3312
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3312
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3312
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3307
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.138Z | subchannel | xxxx:8443 callRefcount 917 -> 916
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3053
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 11
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=8 details="Bandwidth exhausted"
2019-12-13T01:12:49.138Z | subchannel | xxxx:8443 callRefcount 916 -> 915
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 253
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3306
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3306
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3301
2019-12-13T01:12:49.138Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 1479

@murgatroid99
Copy link
Member

These logs show that the HTTP/2 streams are being closed with RST_STREAM frames with error codes 2 (INTERNAL_ERROR) and 11 (ENHANCE_YOUR_CALM which translates to RESOURCE_EXHAUSTED). It is very likely (but not 100% guaranteed) that these error codes are being sent by the server and not generated on the client. Specifically, they are likely being generated by the server's HTTP/2 implementation, not gRPC. You mentioned that you are using grpc-go on the server, so you may have some luck filing a bug report with the grpc-go repository and including a link to this comment.

@MiLk
Copy link

MiLk commented Dec 13, 2019

Ok, thank you for your help.

@MiLk
Copy link

MiLk commented Dec 13, 2019

After spending more time troubleshooting this, I think the problem might come from the client and not the server.
The client seems to be the one sending the RST_STREAM frames.

I've reproduced the issue locally with the same go server and node client, and I'm using wireshark to check the traffic.

Here a the logs of the client at the time of the issue:

2019-12-13T05:55:01.041Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 trailing headers frame
2019-12-13T05:55:01.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T05:55:01.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T05:55:01.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=0 details=""
2019-12-13T05:55:01.042Z | subchannel | 127.0.0.1:8443 callRefcount 996 -> 995
2019-12-13T05:55:01.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 0
2019-12-13T05:55:01.042Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3031
2019-12-13T05:55:01.043Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3031
2019-12-13T05:55:01.043Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3031
2019-12-13T05:55:01.043Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3026
2019-12-13T05:55:01.044Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3031
2019-12-13T05:55:01.044Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3031
2019-12-13T05:55:01.044Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3031
2019-12-13T05:55:01.044Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3026
2019-12-13T05:55:01.045Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3099
2019-12-13T05:55:01.045Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3099
2019-12-13T05:55:01.045Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3099
2019-12-13T05:55:01.045Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3094
2019-12-13T05:55:01.045Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3099
2019-12-13T05:55:01.045Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3099
2019-12-13T05:55:01.045Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3099
2019-12-13T05:55:01.045Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3094
2019-12-13T05:55:01.049Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T05:55:01.049Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T05:55:01.050Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T05:55:01.051Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T05:55:01.051Z | subchannel | 127.0.0.1:8443 callRefcount 995 -> 994
2019-12-13T05:55:01.052Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T05:55:01.052Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T05:55:01.052Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T05:55:01.053Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T05:55:01.053Z | subchannel | 127.0.0.1:8443 callRefcount 994 -> 993
2019-12-13T05:55:01.053Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T05:55:01.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T05:55:01.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T05:55:01.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T05:55:01.054Z | subchannel | 127.0.0.1:8443 callRefcount 993 -> 992
2019-12-13T05:55:01.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3065
2019-12-13T05:55:01.054Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3065
2019-12-13T05:55:01.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3065
2019-12-13T05:55:01.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3060
2019-12-13T05:55:01.055Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576216531055)
2019-12-13T05:55:01.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T05:55:01.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T05:55:01.055Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576216531055)
2019-12-13T05:55:01.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T05:55:01.055Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T05:55:01.055Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576216531055)
2019-12-13T05:55:01.056Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T05:55:01.056Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T05:55:01.056Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576216531056)
2019-12-13T05:55:01.056Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T05:55:01.056Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
2019-12-13T05:55:01.056Z | channel | createCall(method="/oneminute.v1.OneMinute/GetPriceList", deadline=1576216531056)
2019-12-13T05:55:01.056Z | call_stream | /oneminute.v1.OneMinute/GetPriceList Sending metadata
2019-12-13T05:55:01.056Z | call_stream | /oneminute.v1.OneMinute/GetPriceList write() called with message of length 1210
Error: 13 INTERNAL:
    at Object.callErrorFromStatus (/Users/emilien/Dev/marketdata-api/client/node/node_modules/@grpc/grpc-js/build/src/call.js:30:26)
    at Http2CallStream.<anonymous> (/Users/emilien/Dev/marketdata-api/client/node/node_modules/@grpc/grpc-js/build/src/client.js:96:33)
    at Http2CallStream.emit (events.js:215:7)
    at /Users/emilien/Dev/marketdata-api/client/node/node_modules/@grpc/grpc-js/build/src/call-stream.js:98:22
    at processTicksAndRejections (internal/process/task_queues.js:75:11) {
  code: 13,
  details: '',
  metadata: Metadata { internalRepr: Map {}, options: {} }
}
2019-12-13T05:55:01.062Z | subchannel | 127.0.0.1:8443 callRefcount 2 -> 1
2019-12-13T05:55:01.062Z | resolving_load_balancer | 127.0.0.1:8443 READY -> SHUTDOWN
2019-12-13T05:55:01.062Z | connectivity_state | 127.0.0.1:8443 READY -> SHUTDOWN
2019-12-13T05:55:01.062Z | connectivity_state | 127.0.0.1:8443 SHUTDOWN -> SHUTDOWN
2019-12-13T05:55:01.062Z | subchannel | 127.0.0.1:8443 callRefcount 1 -> 0
2019-12-13T05:55:01.063Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel 127.0.0.1:8443
2019-12-13T05:55:01.063Z | subchannel | 127.0.0.1:8443 callRefcount 992 -> 993
2019-12-13T05:55:01.063Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel 127.0.0.1:8443
2019-12-13T05:55:01.063Z | subchannel | 127.0.0.1:8443 callRefcount 993 -> 994
2019-12-13T05:55:01.063Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel 127.0.0.1:8443
2019-12-13T05:55:01.063Z | subchannel | 127.0.0.1:8443 callRefcount 994 -> 995
2019-12-13T05:55:01.063Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel 127.0.0.1:8443
2019-12-13T05:55:01.063Z | subchannel | 127.0.0.1:8443 callRefcount 995 -> 996
2019-12-13T05:55:01.063Z | call_stream | /oneminute.v1.OneMinute/GetPriceList attachHttp2Stream from subchannel 127.0.0.1:8443
2019-12-13T05:55:01.067Z | subchannel | 127.0.0.1:8443 callRefcount 996 -> 997
2019-12-13T05:55:01.068Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T05:55:01.068Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T05:55:01.068Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T05:55:01.069Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T05:55:01.069Z | subchannel | 127.0.0.1:8443 callRefcount 997 -> 996
2019-12-13T05:55:01.069Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 3167
2019-12-13T05:55:01.070Z | call_stream | /oneminute.v1.OneMinute/GetPriceList parsed message of length 3167
2019-12-13T05:55:01.071Z | call_stream | /oneminute.v1.OneMinute/GetPriceList filterReceivedMessage of length 3167
2019-12-13T05:55:01.071Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length 3162
2019-12-13T05:55:01.071Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T05:55:01.071Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T05:55:01.071Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T05:55:01.072Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T05:55:01.072Z | call_stream | /oneminute.v1.OneMinute/GetPriceList end() called
2019-12-13T05:55:01.072Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T05:55:01.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T05:55:01.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T05:55:01.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T05:55:01.073Z | subchannel | 127.0.0.1:8443 callRefcount 996 -> 995
2019-12-13T05:55:01.073Z | call_stream | /oneminute.v1.OneMinute/GetPriceList receive HTTP/2 data frame of length 1450
2019-12-13T05:55:01.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T05:55:01.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T05:55:01.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T05:55:01.074Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T05:55:01.074Z | subchannel | 127.0.0.1:8443 callRefcount 995 -> 994
2019-12-13T05:55:01.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag
2019-12-13T05:55:01.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceListpushing to reader message of length null
2019-12-13T05:55:01.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList HTTP/2 stream closed with code 2
2019-12-13T05:55:01.075Z | call_stream | /oneminute.v1.OneMinute/GetPriceList ended with status: code=13 details=""
2019-12-13T05:55:01.075Z | subchannel | 127.0.0.1:8443 callRefcount 994 -> 993
2019-12-13T05:55:01.076Z | call_stream | /oneminute.v1.OneMinute/GetPriceList received HTTP/2 end of data flag

Here are the server logs (using GODEBUG=http2debug=2):

2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5559 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514195798\x1a\n1514197622\x1a\n1514210735\x1a\n1514214652\x1a\n1514207407\x1a\n1514195862\x1a\n1514213526\x1a\n1514216456\x1a\n1514202964\x1a\n1514203507\x1a\n1514197864\x1a\n1514195251\x1a\n1514219151\x1a\n1514214573\x1a\n1514215480\x1a\n1514203627\x1a\n1514207168\x1a\n1514211962\x1a\n1514219793\x1a\n1514218139\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5561 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514193435\x1a\n1514211548\x1a\n1514205144\x1a\n1514214597\x1a\n1514213517\x1a\n1514216157\x1a\n1514193027\x1a\n1514206873\x1a\n1514206242\x1a\n1514209745\x1a\n1514199109\x1a\n1514191297\x1a\n1514197718\x1a\n1514210083\x1a\n1514219654\x1a\n1514199819\x1a\n1514206641\x1a\n1514191809\x1a\n1514202896\x1a\n1514213763\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5563 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514207702\x1a\n1514210168\x1a\n1514192077\x1a\n1514196931\x1a\n1514206869\x1a\n1514194985\x1a\n1514191583\x1a\n1514211602\x1a\n1514196245\x1a\n1514198900\x1a\n1514211997\x1a\n1514214266\x1a\n1514207333\x1a\n1514214994\x1a\n1514213545\x1a\n1514214718\x1a\n1514194741\x1a\n1514217055\x1a\n1514200714\x1a\n1514200579\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5565 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514216876\x1a\n1514214713\x1a\n1514192594\x1a\n1514215289\x1a\n1514192855\x1a\n1514190409\x1a\n1514216880\x1a\n1514207284\x1a\n1514211560\x1a\n1514193596\x1a\n1514190716\x1a\n1514204442\x1a\n1514197595\x1a\n1514190699\x1a\n1514215349\x1a\n1514204644\x1a\n1514203151\x1a\n1514200892\x1a\n1514191634\x1a\n1514191997\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5567 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514206729\x1a\n1514212004\x1a\n1514218297\x1a\n1514200161\x1a\n1514202898\x1a\n1514211497\x1a\n1514214489\x1a\n1514192321\x1a\n1514190169\x1a\n1514203657\x1a\n1514219087\x1a\n1514205301\x1a\n1514199391\x1a\n1514208225\x1a\n1514211981\x1a\n1514190853\x1a\n1514201200\x1a\n1514200797\x1a\n1514219237\x1a\n1514191830\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5569 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514197480\x1a\n1514191687\x1a\n1514208400\x1a\n1514207546\x1a\n1514193449\x1a\n1514204695\x1a\n1514202403\x1a\n1514212336\x1a\n1514192004\x1a\n1514216226\x1a\n1514190064\x1a\n1514196263\x1a\n1514215057\x1a\n1514191456\x1a\n1514192972\x1a\n1514216331\x1a\n1514201026\x1a\n1514196692\x1a\n1514207221\x1a\n1514208342\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5571 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514211730\x1a\n1514210292\x1a\n1514197393\x1a\n1514200997\x1a\n1514218238\x1a\n1514205570\x1a\n1514199158\x1a\n1514191634\x1a\n1514191439\x1a\n1514216897\x1a\n1514201043\x1a\n1514211160\x1a\n1514198868\x1a\n1514199051\x1a\n1514205822\x1a\n1514208781\x1a\n1514202075\x1a\n1514191867\x1a\n1514204235\x1a\n1514204847\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5573 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514199242\x1a\n1514195215\x1a\n1514219559\x1a\n1514190933\x1a\n1514201999\x1a\n1514215559\x1a\n1514205038\x1a\n1514205433\x1a\n1514205049\x1a\n1514203409\x1a\n1514211466\x1a\n1514214445\x1a\n1514191968\x1a\n1514194224\x1a\n1514208636\x1a\n1514195412\x1a\n1514215932\x1a\n1514202490\x1a\n1514192936\x1a\n1514204286\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5575 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514208561\x1a\n1514209266\x1a\n1514218913\x1a\n1514212235\x1a\n1514213785\x1a\n1514201081\x1a\n1514207339\x1a\n1514197787\x1a\n1514210408\x1a\n1514195749\x1a\n1514200435\x1a\n1514203784\x1a\n1514205614\x1a\n1514194935\x1a\n1514202863\x1a\n1514211401\x1a\n1514191824\x1a\n1514198650\x1a\n1514201723\x1a\n1514219021\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5577 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514194170\x1a\n1514212039\x1a\n1514216237\x1a\n1514208607\x1a\n1514218675\x1a\n1514193502\x1a\n1514193758\x1a\n1514200669\x1a\n1514210650\x1a\n1514194251\x1a\n1514192010\x1a\n1514190228\x1a\n1514207736\x1a\n1514199306\x1a\n1514196649\x1a\n1514208590\x1a\n1514202123\x1a\n1514215024\x1a\n1514206273\x1a\n1514205816\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA stream=5579 len=1215 data="\x00\x00\x00\x04\xba\n\x03BTC\x12\x03EUR\x1a\n1514210323\x1a\n1514192573\x1a\n1514198772\x1a\n1514213081\x1a\n1514197161\x1a\n1514192374\x1a\n1514207278\x1a\n1514201585\x1a\n1514209830\x1a\n1514196047\x1a\n1514195248\x1a\n1514190815\x1a\n1514204048\x1a\n1514204076\x1a\n1514208386\x1a\n1514193614\x1a\n1514201895\x1a\n1514190029\x1a\n1514200799\x1a\n1514195920\x1a" (959 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=4965 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=2975 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5559 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5561 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5563 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5565 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5567 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5569 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5571 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5573 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5575 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5577 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read DATA flags=END_STREAM stream=5579 len=0 data=""
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=1289 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5411 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5131 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5265 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5123 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5473 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5291 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5255 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=4565 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5477 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=3499 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=4457 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5447 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5355 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read PING flags=ACK len=8 ping="\x02\x04\x10\x10\t\x0e\a\a"
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read WINDOW_UPDATE len=4 (conn) incr=34007
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=3239 len=3065 data="\x00\x00\x00\v\xf4\n \n\x1211948.725000000000\x12\n1514190660\n \n\x1211963.689999999999\x12\n1514190960\n \n\x1211983.783333333333\x12\n1514191080\n \n\x1211992.700000000003\x12\n1514191140\n \n\x1211995.668749999999\x12\n1514191320\n \n\x1211995.564999999999\x12\n1514191380\n \n\x1211998.114285714288\x12\n1514191560\n \n\x1211965.700" (2809 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=3239 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read RST_STREAM stream=4839 len=4 ErrCode=INTERNAL_ERROR
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=3133 len=3133 data="\x00\x00\x00\f8\n \n\x1211831.167567567567\x12\n1514190360\n \n\x1211846.000000000000\x12\n1514190420\n \n\x1211862.523529411767\x12\n1514190600\n \n\x1211948.725000000000\x12\n1514190660\n \n\x1211995.668749999999\x12\n1514191320\n \n\x1211986.400000000001\x12\n1514191680\n \n\x1211968.937500000000\x12\n1514192100\n \n\x1211965.700" (2877 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=3133 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read RST_STREAM stream=4423 len=4 ErrCode=INTERNAL_ERROR
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=1501 len=3031 data="\x00\x00\x00\v\xd2\n \n\x1211815.955555555554\x12\n1514190300\n \n\x1211846.000000000000\x12\n1514190420\n \n\x1211983.783333333333\x12\n1514191080\n \n\x1211992.959999999999\x12\n1514191260\n \n\x1211999.272222222222\x12\n1514191500\n \n\x1211975.203125000000\x12\n1514192460\n \n\x1211997.941666666666\x12\n1514192580\n \n\x1211976.095" (2775 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=1501 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=425 len=3031 data="\x00\x00\x00\v\xd2\n \n\x1211819.419999999998\x12\n1514190000\n \n\x1211963.689999999999\x12\n1514190960\n \n\x1211992.700000000003\x12\n1514191140\n \n\x1211989.400000000000\x12\n1514191740\n \n\x1211990.181250000001\x12\n1514191800\n \n\x1211957.296153846150\x12\n1514192220\n \n\x1211939.635714285714\x12\n1514192340\n \n\x1211999.968" (2775 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=425 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: read RST_STREAM stream=2193 len=4 ErrCode=INTERNAL_ERROR
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=5175 len=3031 data="\x00\x00\x00\v\xd2\n \n\x1211823.335714285713\x12\n1514190180\n \n\x1211831.167567567567\x12\n1514190360\n \n\x1211989.520000000000\x12\n1514191020\n \n\x1211995.668749999999\x12\n1514191320\n \n\x1211968.937500000000\x12\n1514192100\n \n\x1211975.203125000000\x12\n1514192460\n \n\x1212055.107142857143\x12\n1514193000\n \n\x1212004.368" (2775 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=5175 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=3495 len=3031 data="\x00\x00\x00\v\xd2\n \n\x1211820.049999999999\x12\n1514190240\n \n\x1211995.564999999999\x12\n1514191380\n \n\x1211999.272222222222\x12\n1514191500\n \n\x1211993.622222222222\x12\n1514191620\n \n\x1211990.181250000001\x12\n1514191800\n \n\x1211968.937500000000\x12\n1514192100\n \n\x1211997.941666666666\x12\n1514192580\n \n\x1212004.368" (2775 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=3495 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=4823 len=2963 data="\x00\x00\x00\v\x8e\n \n\x1211820.049999999999\x12\n1514190240\n \n\x1211963.689999999999\x12\n1514190960\n \n\x1211993.799999999999\x12\n1514191200\n \n\x1211992.959999999999\x12\n1514191260\n \n\x1211995.564999999999\x12\n1514191380\n \n\x1211986.400000000001\x12\n1514191680\n \n\x1211939.635714285714\x12\n1514192340\n \n\x1211975.203" (2707 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=4823 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=5011 len=2929 data="\x00\x00\x00\vl\n \n\x1211862.523529411767\x12\n1514190600\n \n\x1211952.903846153846\x12\n1514190780\n \n\x1211963.689999999999\x12\n1514190960\n \n\x1211992.700000000003\x12\n1514191140\n \n\x1211992.959999999999\x12\n1514191260\n \n\x1211995.668749999999\x12\n1514191320\n \n\x1211995.564999999999\x12\n1514191380\n \n\x1211997.443" (2673 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=5011 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=2077 len=2595 data="\n1514197020\n \n\x1211895.888888888889\x12\n1514197140\n \n\x1211905.273333333333\x12\n1514197200\n \n\x1211905.268749999999\x12\n1514197260\n \n\x1211909.811111111112\x12\n1514197320\n \n\x1211872.108333333332\x12\n1514197800\n \n\x1211748.179999999998\x12\n1514198100\n \n\x1211773.973333333332\x12\n1514198280\n \n\x12117" (2339 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=2077 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=3355 len=3099 data="\x00\x00\x00\f\x16\n \n\x1211862.956521739130\x12\n1514190540\n \n\x1211995.564999999999\x12\n1514191380\n \n\x1211986.400000000001\x12\n1514191680\n \n\x1211968.937500000000\x12\n1514192100\n \n\x1211957.296153846150\x12\n1514192220\n \n\x1211975.203125000000\x12\n1514192460\n \n\x1212007.380000000003\x12\n1514192760\n \n\x1212080.422" (2843 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=3355 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=2101 len=3099 data="\x00\x00\x00\f\x16\n \n\x1211819.419999999998\x12\n1514190000\n \n\x1211831.167567567567\x12\n1514190360\n \n\x1211846.000000000000\x12\n1514190420\n \n\x1211846.000000000002\x12\n1514190480\n \n\x1211948.725000000000\x12\n1514190660\n \n\x1211995.564999999999\x12\n1514191380\n \n\x1211962.707142857140\x12\n1514191920\n \n\x1211965.700" (2843 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_STREAM|END_HEADERS stream=2101 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote DATA stream=5235 len=1000 data="\x00\x00\x00\v\xf4\n \n\x1211989.520000000000\x12\n1514191020\n \n\x1211982.722222222226\x12\n1514191860\n \n\x1212080.422727272728\x12\n1514192940\n \n\x1211883.503448275866\x12\n1514193480\n \n\x1211877.564285714285\x12\n1514193600\n \n\x1211905.200000000001\x12\n1514193720\n \n\x1211931.460416666667\x12\n1514193840\n \n\x1211774.772" (744 bytes omitted)
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=1393 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=5503 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=4445 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=4835 len=2
2019/12/13 14:55:01 http2: Framer 0xc0003f6000: wrote HEADERS flags=END_HEADERS stream=3763 len=2

We can see that it says read RST_STREAM at the time the errors start to occur.
I wanted to confirm that the server was not misbehaving and so I ran wireshark.

image
Here we can see it's coming from the client (port 65517) to the server (8443).

I'm going to continue digging into the client.

@MiLk
Copy link

MiLk commented Dec 13, 2019

After moving from node 12 to node 13, we no longer have the issue.
It's most likely related to nodejs/node@18a1796 and nodejs/node@8a4a193

The fix is scheduled for v10.17.1 and v12.13.2.
nodejs/node#30684

@murgatroid99
Copy link
Member

Thank you for sharing those extra details.

@shynome
Copy link

shynome commented Feb 6, 2020

the error is disappear after I upgrade to v13.
Thank you for sharing those extra details.

@ajayhjaiswal
Copy link

ajayhjaiswal commented Feb 13, 2020

Thanks guys for information, Does google Cloud support Nodejs 13 for AppEngine deployment for Production use, Sorry for adding different context to original topic but are inter-link.

@isaiah-coleman
Copy link

I've upgraded to node v13 and haven't had any luck in supressing these errors. Is this the case for anyone else? Running @grpc/grpc-js@0.7.9 for reference

@stephenplusplus
Copy link
Member

This would seem to relate to this issue as well: googleapis/nodejs-datastore#525. So to avoid the error, it basically comes down to finding the right batch size of concurrent requests to send at a time?

@jamie-pate
Copy link

Having this issue with node 12.17 which supposedly has nodejs/node#30684

@samelie
Copy link

samelie commented Jul 30, 2020

Experiencing on 12.18.2

Interestingly, following interop_extra_test
after creating a client

const client = new Client(
 '0.0.0.0:50051',
 grpc.credentials.createInsecure(),
 {
  'grpc.max_send_message_length': -1,
  'grpc.max_receive_message_length': -1
 }
);

and for good measure the server

 const server = new grpc.Server({
    'grpc.max_send_message_length': -1,
    'grpc.max_receive_message_length': -1
  })

I still get the err Error: 8 RESOURCE_EXHAUSTED: Bandwidth exhausted

However it appears as all the messages are getting processed

@kskalski
Copy link
Contributor

kskalski commented Nov 4, 2020

I'm seeing this error in my application at Electron main process, just switched to Electron v11.0.0-beta.19, which runs on NodeJS 12.18.3, but it doesn't help.

Interestingly I got into the scenario, where the rate of request processing doesn't really matter, it seems that there is just some kind of limit in amount of processed data.
My app is using streaming gRPC with grpc-js (1.1.7) receiving state from backend on call start and then just receiving small updates when data changes. I got a situation where initial data change arrives correctly, but then adding even a single record of additional data crashes the receiver process and then with such data-set starting the app again isn't possible (the initial state reception immediately crashes the app).

@murgatroid99
Copy link
Member

I made a change in grpc-js version 1.2.0 that changed the timing of keepalive pings. That may address some of the problems reported here.

@kskalski
Copy link
Contributor

I made a change in grpc-js version 1.2.0 that changed the timing of keepalive pings. That may address some of the problems reported here.

Changing to grpc-js 1.2.0 didn't make a difference for me, however I just switched to Electron 12.beta1 (which includes NodeJS 14) and the problem disappeared for me.

@jmeinke
Copy link

jmeinke commented Feb 3, 2021

This bug in grpc-js or in node has turned out to become a nightmare for us and it's affecting our customers.

We are using firestore in combination with electron. As electron 12 is not stable yet (and crashes a lot), and because there are no working grpc-node prebuilt binaries for electron 10.1, 10.2, 10.3 and 11, we had to downgrade our app to electron 10.0.1, downgrade firebase to v7.13.2 (because that's the last version that relies on grpc and not grpc-js), and upgrade grpc in the @firebase/firestore dependencies to grpc v1.24.4 using yarn resolutions and npm shrinkwrap (because we use it in two projects). As we currently are forced to use electron 10.0.1, we are missing out on many fixes of the subsequent patch versions. This makes it very hard for us to provide a stable app version to our customers...

@kirillgroshkov
Copy link
Author

We switched to grpc (not grpc-js), as was advised in some thread, around a year ago and never had this bug since. Don't know if it works with Electron or not.

@kskalski
Copy link
Contributor

kskalski commented Feb 3, 2021

I'm using Electron 12 beta for a few months now and it's quite stable, including elimination of this bug in grpc-js

@jmeinke
Copy link

jmeinke commented Feb 4, 2021

For us in the latest Electron 12 beta there are multiple crashes and we can't rely on its general stability. However, we can confirm that grpc-js does not produce this bug with Electron 12 as opposed to version 11 and 10.

@jacoscaz
Copy link

I'm encountering this in a gRPC client that makes roughly ~1M requests per day, currently using Node.js 10.x. When this happens, all open streams fail and seemingly cannot be recovered. As @kirillgroshkov stated, it's impossible (or at least really hard) to try/catch this. I'll report back here if/when I get to test with Node.js 14.x.

@Limule
Copy link

Limule commented Apr 27, 2021

@jacoscaz Any news ? How did you solve it ?

@jacoscaz
Copy link

Hi all. @Limule I did try using Node 14.x and, more recently, 16.x but I'm still getting these errors. However, I should note that moving to newer versions of Node did increase the uptime between crashes, going from ~1h15m to ~2h30m. We're not actively working on this ATM but monitoring the situation.

@murgatroid99
Copy link
Member

PR #1666 has been published in grpc-js version 1.3.0. It adds a channel option grpc-node.max_session_memory. Setting that to a value larger than 10 may stop these RESOURCE_EXHAUSTED errors from happening in some cases. The specific value to set probably depends on your specific workload.

@paulish
Copy link

paulish commented May 25, 2022

Had the same problem. Fixed by the following code:

   const server = new grpc.Server({
        'grpc-node.max_session_memory': Number.MAX_SAFE_INTEGER
    });

@pagoru
Copy link

pagoru commented Sep 23, 2022

Had the same problem. Fixed by the following code:

   const server = new grpc.Server({
        'grpc-node.max_session_memory': Number.MAX_SAFE_INTEGER
    });

This solves the issue! Thanks @paulish !

@pagoru
Copy link

pagoru commented Sep 23, 2022

The bug is related with this:

if ('grpc-node.max_session_memory' in this.options) {
connectionOptions.maxSessionMemory = this.options[
'grpc-node.max_session_memory'
];
} else {
/* By default, set a very large max session memory limit, to effectively
* disable enforcement of the limit. Some testing indicates that Node's
* behavior degrades badly when this limit is reached, so we solve that
* by disabling the check entirely. */
connectionOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;
}

The default value is Number.MAX_SAFE_INTEGER, but it's not working, if you assign again the value works. Please, check this, the error still occurs and looks simple to fix. 'grpc-node.max_session_memory' looks defined and it's not.

@murgatroid99
Copy link
Member

It seems to be working in my tests. Can you provide a complete example that demonstrates the problem you are experiencing?

@pagoru
Copy link

pagoru commented Sep 26, 2022

I cannot provide an example because it's internal code from my company.
Btw, this are the options assigned (the last one was added on Friday and fixes the problem), maybe another one causes the problem?

const grpcOptions = {
  // Reconnection
  "grpc.initial_reconnect_backoff_ms": 1500,
  "grpc.min_reconnect_backoff_ms": 1000,
  "grpc.max_reconnect_backoff_ms": 5000,
  // Keepalive
  "grpc.http2.min_time_between_pings_ms": 5 * 60000, // grpc default
  "grpc.http2.max_pings_without_data": 0,
  "grpc.keepalive_permit_without_calls": 1,
  "grpc.keepalive_time_ms": 10 * 1000,
  "grpc.keepalive_timeout_ms": 20 * 1000,
  "grpc.max_connection_idle_ms": 0,
  // limits
  "grpc-node.max_session_memory": Number.MAX_SAFE_INTEGER
}

@murgatroid99
Copy link
Member

Please verify what version of the library you are using. That option was added in version 1.3.0, but the default was not set to Number.MAX_SAFE_INTEGER until version 1.6.3.

@pagoru
Copy link

pagoru commented Sep 26, 2022

Using:

    "@grpc/grpc-js": "1.6.8",
    "@grpc/proto-loader": "0.4.0",

@murgatroid99
Copy link
Member

OK, that is the right version. Well, if you can provide a code sample that has different behavior when that option is set to Number.MAX_SAFE_INTEGER than when it is omitted, then I can debug it, otherwise there is nothing more I can do.

@sberthier
Copy link

It seems that I have a similar problem. I have tested to set "grpc-node.max_session_memory": Number.MAX_SAFE_INTEGER and it seems to do the job. I can confirm that in following days.

I may have an explanation about this issue.
In subchannel.ts, we have

https://github.com/grpc/grpc-node/blob/master/packages/grpc-js/src/subchannel.ts#L414

if ('grpc-node.max_session_memory' in this.options) {
      connectionOptions.maxSessionMemory = this.options[
        'grpc-node.max_session_memory'
      ];
    } else {
      /* By default, set a very large max session memory limit, to effectively
       * disable enforcement of the limit. Some testing indicates that Node's
       * behavior degrades badly when this limit is reached, so we solve that
       * by disabling the check entirely. */
      connectionOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;
    }

There is a default value of Number.MAX_SAFE_INTEGER for the client side.
But in the server.ts side, there isn't

https://github.com/grpc/grpc-node/blob/master/packages/grpc-js/src/server.ts#L345

    if ('grpc-node.max_session_memory' in this.options) {
      serverOptions.maxSessionMemory = this.options[
        'grpc-node.max_session_memory'
      ];
    }

It may be why inject grpc-node.max_session_memory in server config solves our pb.

@murgatroid99
Copy link
Member

Thank you for pointing that out. I will fix that inconsistency.

@murgatroid99
Copy link
Member

I have published grpc-js 1.7.2 with Number.MAX_SAFE_INTEGER as the default value for that option on the server too.

bors bot added a commit to pulumi/pulumi that referenced this issue Jun 24, 2023
13237: Update @grpc/grpc-js r=Frassle a=Frassle

<!--- 
Thanks so much for your contribution! If this is your first time contributing, please ensure that you have read the [CONTRIBUTING](https://github.com/pulumi/pulumi/blob/master/CONTRIBUTING.md) documentation.
-->

# Description

<!--- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. -->

We've seen some issues from customers that might be due to grpc/grpc-node#1158 which looks like it should be better after 1.7.2. 

## Checklist

- [x] I have run `make tidy` to update any new dependencies
- [x] I have run `make lint` to verify my code passes the lint check
  - [ ] I have formatted my code using `gofumpt`

<!--- Please provide details if the checkbox below is to be left unchecked. -->
- [ ] I have added tests that prove my fix is effective or that my feature works
<!--- 
User-facing changes require a CHANGELOG entry.
-->
- [x] I have run `make changelog` and committed the `changelog/pending/<file>` documenting my change
<!--
If the change(s) in this PR is a modification of an existing call to the Pulumi Cloud,
then the service should honor older versions of the CLI where this change would not exist.
You must then bump the API version in /pkg/backend/httpstate/client/api.go, as well as add
it to the service.
-->
- [ ] Yes, there are changes in this PR that warrants bumping the Pulumi Cloud API version
  <!-- `@Pulumi` employees: If yes, you must submit corresponding changes in the service repo. -->


Co-authored-by: Fraser Waters <fraser@pulumi.com>
@murgatroid99
Copy link
Member

Since there have been no new comments since that fix went out, I assume this is resolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests