Search in sources :

Example 21 with Scope

use of io.opentelemetry.context.Scope in project hbase by apache.

the class RecoverableZooKeeper method delete.

/**
 * delete is an idempotent operation. Retry before throwing exception.
 * This function will not throw NoNodeException if the path does not
 * exist.
 */
public void delete(String path, int version) throws InterruptedException, KeeperException {
    Span span = TraceUtil.getGlobalTracer().spanBuilder("RecoverableZookeeper.delete").startSpan();
    try (Scope scope = span.makeCurrent()) {
        RetryCounter retryCounter = retryCounterFactory.create();
        // False for first attempt, true for all retries.
        boolean isRetry = false;
        while (true) {
            try {
                checkZk().delete(path, version);
                return;
            } catch (KeeperException e) {
                switch(e.code()) {
                    case NONODE:
                        if (isRetry) {
                            LOG.debug("Node " + path + " already deleted. Assuming a " + "previous attempt succeeded.");
                            return;
                        }
                        LOG.debug("Node {} already deleted, retry={}", path, isRetry);
                        throw e;
                    case CONNECTIONLOSS:
                    case OPERATIONTIMEOUT:
                    case REQUESTTIMEOUT:
                        retryOrThrow(retryCounter, e, "delete");
                        break;
                    default:
                        throw e;
                }
            }
            retryCounter.sleepUntilNextRetry();
            isRetry = true;
        }
    } finally {
        span.end();
    }
}
Also used : Scope(io.opentelemetry.context.Scope) RetryCounter(org.apache.hadoop.hbase.util.RetryCounter) Span(io.opentelemetry.api.trace.Span) KeeperException(org.apache.zookeeper.KeeperException)

Aggregations

Span (io.opentelemetry.api.trace.Span)21 Scope (io.opentelemetry.context.Scope)21 IOException (java.io.IOException)6 LinkedBlockingQueue (java.util.concurrent.LinkedBlockingQueue)3 RetryCounter (org.apache.hadoop.hbase.util.RetryCounter)3 KeeperException (org.apache.zookeeper.KeeperException)3 Context (io.opentelemetry.context.Context)2 InetSocketAddress (java.net.InetSocketAddress)2 CellScanner (org.apache.hadoop.hbase.CellScanner)2 Result (org.apache.hadoop.hbase.client.Result)2 Table (org.apache.hadoop.hbase.client.Table)2 Message (org.apache.hbase.thirdparty.com.google.protobuf.Message)2 ConsoleReporter (com.codahale.metrics.ConsoleReporter)1 OpenTelemetry (io.opentelemetry.api.OpenTelemetry)1 StatusCode (io.opentelemetry.api.trace.StatusCode)1 Tracer (io.opentelemetry.api.trace.Tracer)1 TextMapGetter (io.opentelemetry.context.propagation.TextMapGetter)1 TextMapPropagator (io.opentelemetry.context.propagation.TextMapPropagator)1 ClosedChannelException (java.nio.channels.ClosedChannelException)1 Arrays (java.util.Arrays)1