I think open tracing is a good library to use. Accumulo started using it
after HTrace went to the attic. Accumulo also uses ZooKeeper. It remains to
be seen if open telemetry will be stable in the long term, since it is
relatively new.

Lots of projects in an application stack may want to use open telemetry,
but it may be difficult because of dependency hell and class path issues if
lots of libraries in an application are all using open telemetry, but using
different incompatible versions. That was certainly a big problem with
HTrace when Hadoop was using one version and Accumulo was using a different
version (notably, this problem arose, even though HTrace was originally
derived from code that started out in Accumulo as "cloudtrace", because it
was modified to be more general purpose and began being used by multiple
applications in the application stack). This is not a unique issue, but
other places where this could be a problem, such as logging, have well
established solutions, like slf4j. It's not clear to me yet whether open
telemetry can be relied upon to be stable like that in the long term. If
zookeeper starts using it, it would be safest to use it only on the server
code, at least to start, and not require it as a dependency of zookeeper
client code, to make sure it doesn't conflict with other applications that
use ZooKeeper.

If it is used for client code, it should be possible to completely disable
it with a property so nothing breaks if it is disabled and it is missing
from the class path, or if a different version that is incompatible exists
on the class path. That could be hard to do.

This doesn't mean it shouldn't be done, just that if it is done, these are
some things to consider to try to avoid potential problems down the line.

On Tue, Jan 2, 2024, 10:57 Andor Molnar <an...@apache.org> wrote:

> Hi all,
>
> Inspired by the following CURATOR ticket I started to think about what
> needs to be done for ZooKeeper to support OpenTelemetry.
>
> CURATOR-695 Open Telemetry Tracing Driver [1]
>
> Unfortunately we don't have such generic tracing driver, even ZooTrace
> class looks unusable for this use case, but we should be able to
> implement it in a generic fashion. Start the trace in
> PrepRequestProcessor when request comes in and finish it in
> FinalRequestProcessor with adding some in-process events too.
>
> It's never that simple obviously, because, for instance, we also need
> to track the failing code paths too, but looks to me a good starting
> point and something we should invest into.
>
> Thoughts?
>
> Regards,
> Andor
>
> [1] https://issues.apache.org/jira/browse/CURATOR-695
>
>
>
>

Reply via email to