Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. BatchSpanProcessor.php

function BatchSpanProcessor::__construct

File

vendor/open-telemetry/sdk/Trace/SpanProcessor/BatchSpanProcessor.php, line 61

Class

BatchSpanProcessor

Namespace

OpenTelemetry\SDK\Trace\SpanProcessor

Code

public function __construct(SpanExporterInterface $exporter, ClockInterface $clock, int $maxQueueSize = self::DEFAULT_MAX_QUEUE_SIZE, int $scheduledDelayMillis = self::DEFAULT_SCHEDULE_DELAY, int $exportTimeoutMillis = self::DEFAULT_EXPORT_TIMEOUT, int $maxExportBatchSize = self::DEFAULT_MAX_EXPORT_BATCH_SIZE, bool $autoFlush = true, ?MeterProviderInterface $meterProvider = null) {
    if ($maxQueueSize <= 0) {
        throw new InvalidArgumentException(sprintf('Maximum queue size (%d) must be greater than zero', $maxQueueSize));
    }
    if ($scheduledDelayMillis <= 0) {
        throw new InvalidArgumentException(sprintf('Scheduled delay (%d) must be greater than zero', $scheduledDelayMillis));
    }
    if ($exportTimeoutMillis <= 0) {
        throw new InvalidArgumentException(sprintf('Export timeout (%d) must be greater than zero', $exportTimeoutMillis));
    }
    if ($maxExportBatchSize <= 0) {
        throw new InvalidArgumentException(sprintf('Maximum export batch size (%d) must be greater than zero', $maxExportBatchSize));
    }
    if ($maxExportBatchSize > $maxQueueSize) {
        throw new InvalidArgumentException(sprintf('Maximum export batch size (%d) must be less than or equal to maximum queue size (%d)', $maxExportBatchSize, $maxQueueSize));
    }
    $this->maxQueueSize = $maxQueueSize;
    $this->scheduledDelayNanos = $scheduledDelayMillis * 1000000;
    $this->maxExportBatchSize = $maxExportBatchSize;
    $this->exportContext = Context::getCurrent();
    $this->queue = new SplQueue();
    $this->flush = new SplQueue();
    if ($meterProvider === null) {
        return;
    }
    $meter = $meterProvider->getMeter('io.opentelemetry.sdk');
    $meter->createObservableUpDownCounter('otel.trace.span_processor.spans', '{spans}', 'The number of sampled spans received by the span processor')
        ->observe(function (ObserverInterface $observer) : void {
        $queued = $this->queue
            ->count() * $this->maxExportBatchSize + count($this->batch);
        $pending = $this->queueSize - $queued;
        $processed = $this->processed;
        $dropped = $this->dropped;
        $observer->observe($queued, self::ATTRIBUTES_QUEUED);
        $observer->observe($pending, self::ATTRIBUTES_PENDING);
        $observer->observe($processed, self::ATTRIBUTES_PROCESSED);
        $observer->observe($dropped, self::ATTRIBUTES_DROPPED);
    });
    $meter->createObservableUpDownCounter('otel.trace.span_processor.queue.limit', '{spans}', 'The queue size limit')
        ->observe(function (ObserverInterface $observer) : void {
        $observer->observe($this->maxQueueSize, self::ATTRIBUTES_PROCESSOR);
    });
    $meter->createObservableUpDownCounter('otel.trace.span_processor.queue.usage', '{spans}', 'The current queue usage')
        ->observe(function (ObserverInterface $observer) : void {
        $queued = $this->queue
            ->count() * $this->maxExportBatchSize + count($this->batch);
        $pending = $this->queueSize - $queued;
        $free = $this->maxQueueSize - $this->queueSize;
        $observer->observe($queued, self::ATTRIBUTES_QUEUED);
        $observer->observe($pending, self::ATTRIBUTES_PENDING);
        $observer->observe($free, self::ATTRIBUTES_FREE);
    });
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal