When agent sends profiling to backend, it always wait for backend to return the stacktrace IDs needing symbolization
Just didn't get why we design the behavior:
When agent sends profiling to backend, it always wait for backend to return the stacktrace IDs needing symbolization. Then returns the stacktraces to backend again.
And checking parca server code, it always returns all IDs in request to fetch the symbolization directly.
Why don't we just send profiling data with symbolization directly? Because seems except native code, all symbolization is finished in agent side right?
The one reason i can understand is, after we send the symbolization info to backed first time, server can cache them and for additional request, no need to do the symbolization job in agent side again to save resource.
And we should have no metadata creation in backend right? The bager cache should only be cached when query.
You're exactly right, that backends have the option to cache stacks, and that allows the network bandwidth to be reduced. It's essentially a memory to network bandwidth trade-off.