Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Stateful broken #983

Closed
Closed
@aabmass

Description

@aabmass

Describe your environment python3.8, broken in master, bisects to #596

Steps to reproduce

# bug.py

import sys
import time

from opentelemetry import metrics
from opentelemetry.sdk.metrics import Counter, MeterProvider, ValueRecorder
from opentelemetry.sdk.metrics.export import ConsoleMetricsExporter

metrics.set_meter_provider(MeterProvider(stateful=True))
meter = metrics.get_meter(__name__)

exporter = ConsoleMetricsExporter()
metrics.get_meter_provider().start_pipeline(meter, exporter, 0.5)

requests_counter = meter.create_metric(
    name="requests",
    description="number of requests",
    unit="1",
    value_type=int,
    metric_type=Counter,
    # label_keys=("environment",),
)


staging_labels = {"environment": "staging"}

while True:
    requests_counter.add(25, staging_labels)
    requests_counter.add(50, staging_labels)
    time.sleep(1)

What is the expected behavior?
Metrics output should be increasing constantly (stateful=True)

$ python docs/examples/basic_meter/bug.py
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=150)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=150)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=225)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=225)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=300)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=300)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=375)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=375)

What is the actual behavior?
Metrics get reset every collection interval (stateful=False)

$ python docs/examples/basic_meter/bug.py
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)
ConsoleMetricsExporter(data="Counter(name="requests", description="number of requests")", labels="(('environment', 'staging'),)", value=75)

Additional context
Bisects to #596 (242d5a7) -- will start digging in from there

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmetricspriority:p0Issues which require immediate action to stop bleeding

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions