-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
Clarify attributes support in API_v3 request query parameters to find traces #3108
Comments
My preference is to clearly document that the filter parameters represent a conjunction on the same span. Expressing conditions that could apply to multiple spans, like endpoint=X on one span and error=true on any other span, requires non-trivial query language, and is not trivial to support e.g. on ES. |
For reference, this is the case I had in mind:
|
One more reason to choose one backing storage and make the best tracing solution based on it. What I hear you saying is that we are OK to compromise the user experience in favor of supporting multiple backing stores, settling on the minimum common denominator. |
I am not saying that, I am saying that the docs / API must reflect the reality of what we actually support. I am also saying that to support the use case you cite we need not only the support of the backing store, but also a different query language, because in the current API your query simply cannot be expressed without internal contradiction (namely, there is a mandatory serviceName field that is meant to match every span otherwise matching the query). If we want to support matching conditions against more than one span, than I would much rather have that explicitly expressed in the query. |
True. Note that this is a new version of the API (v3), we have the opportunity to change the current behavior and the documentation.
Might be just a way of how we present the search form to users. Keeping the requirement to provide the service name, the query could be "give me traces touching the service X, with spans anywhere in the trace containing the userID=123 and spans anywhere containing an attribute error=false." By query language, you didn't mean a formal language, right? |
(a) are you sure changing the behavior is in scope of what Pavol had in mind for this project? (b) I don't mind evolving the API in such a way as to allow it to express the cross-span queries and then degrade to current behavior with certain restrictions.
Well, no, we'd need to change the API itself to be expressive. We actually discuss this in the past that the UI representation of the query may need to be more nuanced, i.e. dependent on the capabilities of the backing store, because a generic search form always leads to confusion when not every combination can be supported.
Ironically, ES implementation does not impose this as a requirement, only our indexing method in Cassandra does.
Right, I just mean the API. If I were to make a concrete proposal, I would say that the way to address your use case is to make This would still not address the aspect of duration being applicable to the whole trace vs. individual spans, but I am not actually convinced that this is a very well defined use case, because in practice I often see that the "root" of the trace is a pretty arbitrary node in the graph, especially in systems that allow upsampling. However, it is actually very easy to support by adding a Boolean |
Created from jaegertracing/jaeger-idl#76 (comment)
The current definition:
@jpkrohling suggests thinking about changing the semantics of
attributes
.The text was updated successfully, but these errors were encountered: