This allows clien implementors to micromanage the state of the protobuf
`encoder` if they want, or to just let the library handle allocation and
garbage collection of encoder states when that level of resource
managment is not required.
Matches the convention in /src/trace/dune and prevents dependency on
the library from polluting the global namespace of a component with the
generic `Client` module.
As of OCaml 5.3, the OCaml runtime doesn't support signals on
Windows. Trying to block them with Thread.sigmask will raise:
Thread 5 killed on uncaught exception Invalid_argument("Thread.sigmask not implemented")
Raised by primitive operation at Opentelemetry_client_ocurl.start_bg_thread.run in file "src/client-ocurl/opentelemetry_client_ocurl.ml", line 106, characters 12-49
it's less dangerous to emit spans for self-tracing, even
if nothing else is going on, than risk having them accumulate
in case the program emits no spans but emits a lot of
metrics and logs (which create self-tracing spans)
we don't go through OTEL for self tracing as it can create
regular span emission where normally there would be none
(emitting a self-tracing span might create a batch, which then
has to be sent after the batch timeout, and sending
that one creates a new span, etc.)
it's cleaner to emit GC events on ticks rather than on GC,
because it avoids both spamming if the GC is very active, and
emitting nothing when there are few allocations.
* master:
fix ocurl: have ticker thread stop when work queue is closed
fix get_url test to take config.url into account
add get_url test with explicit config url
chore: makefile
update generated code
opentelemetry: in Trace, change default span kind
chore: migrate to OTEL proto files 1.0
CI: run on 5.0; run on every branch push
remove use of String.ends_with for compat with 4.08
remove trailing slash from url
shorter name for the instrumentation library
use named signals