Closed David-Noble-at-work closed 5 years ago
I am not sure if the 99 percentile printed by metrics/dropwizard to console is for the whole duration of the run or the last period (1s or 10s). @David-Noble-at-work to get the accurate numbers for the TCP could you check please?
We now use the transport request id header to track pending requests. See issue #130 which this PR resolves.
Also revised:
Channel pool management strategy
These changes address issue #144 and result in smoother startup and reduce the number of retries that may result when many connections are being opened simultaneously. We now allow just one pending request on a channel while awaiting completion of the RNTBD context request. We've also simplified
RntbdClientChannelPool.pollChannel
quite a bit.See changes to
RntbdClientChannelPool
. Note addition ofRntbdRequestManager.isServiceable
.Error handling
See changes to
RntbdRequestManager.completeAllPendingRequestsExceptionally
and a fewtoString
methods. The messages produced when a connection closes with pending requests are now easier to visually parse/understand. Further: with our revised channel pool management strategy many fewer pending request failure messages are produced.SslHandler management
Moved the code which calls
SslHandler.closeOutbound
fromRntbdRequestManager.exceptionCaught
toRntbdRequestManager.close
so that we knowSslHandler.closeOutbound
is always called.Project dependencies
Removed dependency on commons-validator (issue #140) to eliminate a security vulnerability reported by Snyk.
RntbdReporter
Addressed an issue that manifested on class loader exception on Windows systems. See issue #145.
RntbdRequestManager
Addressed a memory leak that occurs when a connection is reset (closed) by the Cosmos server. See issue #163.
Performance Benchmarks
Read latency is improved. Write latency is about the same. Anecdotal evidence that batch write times are improved due to revised channel pool management strategy.
Read Latency
Direct TCP
Direct HTTPS
Write Latency benchmarks
Direct TCP
Direct HTTPS
This change is