Conversation
unflxw
force-pushed
the
per-process-resource-identity
branch
from
September 30, 2026 14:30
ce1b4a4 to
0edd573
Compare
unflxw
force-pushed
the
contrib-logging-handler
branch
from
September 30, 2026 15:13
d5b62c9 to
e4e36b8
Compare
unflxw
force-pushed
the
per-process-resource-identity
branch
from
September 30, 2026 15:16
0edd573 to
10ec810
Compare
unflxw
force-pushed
the
contrib-logging-handler
branch
from
September 30, 2026 15:20
e4e36b8 to
3ca65d0
Compare
unflxw
force-pushed
the
per-process-resource-identity
branch
from
September 30, 2026 15:21
10ec810 to
0c8028f
Compare
The resource the providers report under is built without running the OpenTelemetry resource detectors, so it carries neither a `service.instance.id` nor a `process.pid`, and AppSignal has nothing to tell one process from another when several report the same metric. Building it with `Resource.create` runs the detectors, and asking for the one that reports the process adds the process id. Every provider re-runs them after a fork, so a forked worker gets an identity of its own rather than its parent's. The `appsignal.service.process_id` attribute is dropped. It is read nowhere, and it is captured once at startup, so a forked worker reported the process id of its parent.
unflxw
marked this pull request as ready for review
October 2, 2026 08:37
unflxw
force-pushed
the
per-process-resource-identity
branch
from
October 2, 2026 08:38
0c8028f to
d2befed
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The resource the providers report under is built without running the
OpenTelemetry resource detectors, so it carries neither a
service.instance.idnor aprocess.pid, and AppSignal has nothing totell one process from another when several report the same metric.
Building it with
Resource.createruns the detectors, and asking forthe one that reports the process adds the process id. Every provider
re-runs them after a fork, so a forked worker gets an identity of its
own rather than its parent's.
The
appsignal.service.process_idattribute is dropped. It is readnowhere, and it is captured once at startup, so a forked worker reported
the process id of its parent.
Stacked on #295, which this depends on for the OpenTelemetry version
range. Review and merge that one first.
Pairs with appsignal/appsignal-collector#449, which keys the
cumulative-to-delta store by the resource attributes, and
appsignal/appsignal-ruby#1629, which does the same for Ruby.