Comments (6)
I have published the fix in v0.32.0. Thanks again!
from tarpc.
Thank you for raising this! I'm sorry it made incident mitigation more difficult.
Just to double check, the limit you ran into was the client-side limit? I think I can pretty easily add a better error message when the client stops an RPC from being sent. Here's a prototype:
2023-01-10T02:49:32.528939Z WARN client: the client failed to send the request
Caused by:
0: could not write to the transport
1: frame size too big
(On the server side, it's more complicated for the server to remediate the byte stream if there is a lot of junk on the stream from a request that is too large.)
from tarpc.
Yes, the limit we ran into was on the client-side, because a parameter of a request was too big.
I just confirmed this with a test that sets the max frame size to something very low on the client and something very high on the server, and my test failed with the mentioned RpcError::Disconnected
on the client side. (Typically we have the same limits on both the client and the server, however.)
That being said, I could imagine a similar issue happening on the server if a response gets too big.
Thanks for creating a prototype so quickly! An error message containing such specific error details ("frame size too big") in a new enum variant (RpcError::Send
in your prototype) would definitely be very helpful (and would certainly have helped in our debugging).
from tarpc.
@tikue any chance of moving forward with the prototype? I am looking at a similar issue where it's hard to understand the underlying cause. It would be very helpful to have this kind of information available
from tarpc.
Hey, sorry for the delay here! I've been busy and haven't had time to work on this. I'd be happy for someone else to pick it up. The main thing missing from the above was tests.
from tarpc.
@tikue thanks for replying, I have cherry picked your commits and added a test. Let me know if the direction looks good and if anything else is missing.
from tarpc.
Related Issues (20)
- log spammed with `OpenTelemetry subscriber not installed; making unsampled child context` when used w/o Otel HOT 3
- Clippy Warnings in `tarpc`
- Example code only seems to work if I change the server to use ipv4 HOT 6
- Sending from multiple sources to a memory server
- Server acting as a client to another server HOT 5
- On `poll_flush` timing of RPC client and server HOT 3
- Forward thinking discussion on static async support HOT 2
- Removing the dependency on tokio HOT 3
- use qualified paths for all macro generated signatures HOT 1
- Why is it called tarpc? HOT 2
- How to save transport context? HOT 24
- Multi-client requests HOT 2
- Bidirectional RPC HOT 3
- Cross Platform Procedure Call HOT 2
- [FEATURE REQUEST] Stream responses HOT 4
- QUESTION: how to get tcp server features for custom transport? HOT 1
- Consider making tracing optional HOT 8
- Bubble up server side transport errors to the client HOT 5
- Design problem, how to call other structs method ?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tarpc.