56c6503a93
First one is related to `OpenTelemetry.Ctx` API. I've noticed in a few scenarios the current span of a trace may get lost after Ecto calls. Looking at the The `attach/1` typespec, it's a Ctx -> Token, while `dettach/1` as Token -> Ctx function. That made me assume the expected input of dettach is the return type of attach. Indeed, after this change we got the behavior of Ecto calls preserve the parent span untouched. That leads to a second bug found. When ecto does simple calls within a Task, due the special propagation code for preloads that means it will skip the current span, if any. The solution here is to first check the current process. One test was added to reproduce this bug. |
||
---|---|---|
.. | ||
config | ||
lib | ||
priv/test_repo/migrations | ||
test | ||
.formatter.exs | ||
.gitignore | ||
CHANGELOG.md | ||
LICENSE | ||
README.md | ||
docker-compose.yml | ||
mix.exs | ||
mix.lock | ||
rebar.lock |
README.md
OpentelemetryEcto
Telemetry handler that creates Opentelemetry spans from Ecto query events. Because Ecto emits telemetry events only after queries have finished, OpentelemetryEcto estimates the start time of the span by subtracting the reported total duration from the current timestamp.
After installing, setup the handler in your application behaviour before your top-level supervisor starts.
OpentelemetryEcto.setup([:blog, :repo])
See the documentation for OpentelemetryEcto.setup/2
for additional options that
may be supplied.
Installation
If available in Hex, the package can be installed
by adding opentelemetry_ecto
to your list of dependencies in mix.exs
:
def deps do
[
{:opentelemetry_ecto, "~> 1.0"}
]
end
Compatibility Matrix
OpentelemetryEcto Version | Otel Version | Notes |
---|---|---|
v0.1.0 | <= v.0.5.0 | |
v1.0.0-rc.1 | v1.0.0-rc.1 | |
v1.0.0-rc.2 | v1.0.0-rc.2 | |
v1.0.0-rc.3 | v1.0.0-rc.3 | |
v1.0.0-rc.4 | v1.0.0-rc.4 | |
v1.0 | v1.0 |
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/opentelemetry_ecto.