• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jjatria / perl-opentelemetry / 6114784652
98%

Build:
DEFAULT BRANCH: main
Ran 07 Sep 2023 09:08PM UTC
Jobs 1
Files 34
Run time 2s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

07 Sep 2023 09:03PM UTC coverage: 91.946% (-0.2%) from 92.149%
6114784652

push

github

jjatria
Remove trace proxy classes

The proxy tracer provider (and by extension the proxy tracer) were
added to this distribution as part of the initial port from the Ruby
version of the API. In that gem, the role of the proxies was to
support cases where the global tracer provider had been used to create
a tracer before the SDK had had a chance to set a different provider,
and the caller had cached the instance of the provided tracer.

The code made sure that, when setting a new tracer provider, if the
current tracer provider was a proxy, it would be set to delegate to
the new user-defined provider (so that future tracers would be created
by the new provider), and go through all of the internally cached tracers
to make _those_ also delegate to the tracers created by the new tracer
provider.

This worked fine, and the Perl version of this code also did what was
expected of it.

However, there is a fundamental difference between the Perl version of
this API and the Ruby one that makes this solution not really workable
in the long term.

This version of the API makes use of dynamic scoping for certain global
variables (eg. the current context), and this works well in the Perl
domain. There is ongoing work to make more of the global variables
(the error handler, the propagator, etc) also support dynamic scoping,
which would make for a more consistent interface throughout. But the
tracer provider then sticks out as an exception.

We can make the proxy tracers recognise a dynamically scoped tracer
provider, so that changing the global provider will dynamically affect
the proxy tracers to create spans using the correct tracer. This is not
the problem.

The problem is that, if we have the proxies, it is because we want to
support the use case where a user will cache the tracer from the provider.
And while we can make the proxy tracers support dynamic tracer providers,
there's no way to do this with regular tracers, because ultimately we do
not control how those trac... (continued)

3 of 3 new or added lines in 1 file covered. (100.0%)

685 of 745 relevant lines covered (91.95%)

6.03 hits per line

Jobs
ID Job ID Ran Files Coverage
1 6114784652.1 07 Sep 2023 09:08PM UTC 0
91.95
GitHub Action Run
Source Files on build 6114784652
Detailed source file information is not available for this build.
  • Back to Repo
  • d9e321bd on github
  • Prev Build on main (#6114444849)
  • Next Build on main (#6139967339)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc