jaegertracing/jaeger

[storage] limitations of Cassandra search on LIMIT and complex queries

Open

#166 opened on May 16, 2017

View on GitHub
 (16 comments) (0 reactions) (0 assignees)Go (18,974 stars) (2,326 forks)batch import
area/storagehelp wanted

Description

When querying for traces using serviceName, operationName and a tag with the default LIMIT of 20, some results might be omitted.

This is because of this logic which does the following:

  1. Retrieve all traceIDs matching the operation name
  2. Retrieve all traceIDs matching tags
  3. Intersect 1 & 2

Because Cassandra doesn't guarantee ordering, this could eliminate results.

I propose that we do the following instead (or in addition to what we do now),

  1. Retrieve all traceIds matching tags
  2. Filter by operation name

The reason for retrieving traceIds matching tags first targets the use case when somebody is searching for a jaeger-debug-id or some other tag with low cardinality, guaranteeing them a result when it exists.

Contributor guide