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

jjatria / perl-opentelemetry / 6114784652 / 1
98%
main: 98%

Build:
DEFAULT BRANCH: main
Ran 07 Sep 2023 09:08PM UTC
Files 34
Run time 0s
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.1

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)

685 of 745 relevant lines covered (91.95%)

6.03 hits per line

Source Files on job 6114784652.1
  • Tree
  • List 0
  • Changed 14
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 6114784652
  • d9e321bd on github
  • Prev Job for on main (#6114444849.1)
  • Next Job for on main (#6139967339.1)
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