ztellman/lamina

Improvements to trace router

amalloy opened this issue · 2 comments

Some features it would be great to have for the trace router and parser:

  • A default period to specify while parsing, rather than being hard-coded to 1000ms in the aggregators. This way we can just say "the period for everything is 30s", and parse everything in that context.
  • Right now, a probe descriptor can only transform a single probe, because it starts with a probe name and then applies a series of transformations. Zach has suggested that additional probes can be specified by including :probe:name elsewhere in the descriptor.

Additionally, a bug to be fixed: there's a problem in the parser somewhere which is causing "abc.group-by(x).y.sum().where(_ > 10)" to throw an exception when used as a probe descriptor. This seems like a reasonable query, so the parser should be able to support it.

I can't reproduce the parser error, maybe it's a url-encoding -> query-string issue? We can follow up on that next week.

There is, however, an issue where filtering the output within a group-by can delay a message being sent for an arbitrarily long period, since message n relies on receiving the first facet for n+1. The correct fix for this is probably making it so that a where operator after a periodic operator within a group-by emits some sort of false signal that resets the aggregation mechanism but isn't emitted. That's a pretty gnarly special case, though, so I need to think if there's a cleaner way to approach this.

the configurable period has been in for a while, and I have a semi-reasonable workaround for the filtered group-by problem, so I'm calling this one closed