Skip to content

[Bug]: Invalid cost rows still abort collector config generation #1460

Description

@dajiaohuang

Component and version

OpenTelemetry Collector config builder 0.1.0, repository main at f8e907b92dabe47232978023fdcb01e2a7d4b752.

Description

load_model_costs() catches pydantic.ValidationError and prints that the model is being skipped, but then unconditionally executes costs.append(cost). If the first row is invalid, cost is unbound and the loader raises UnboundLocalError. If an invalid row follows a valid one, the previous model can be appended a second time. The loader is called while rendering the OpenTelemetry Collector processor configuration, so an invalid price row stops configuration generation.

Reproduction

Call load_model_costs() with a temporary model_prices.json whose first entry has invalid required data, such as a zero input cost. The existing validator maps zero to None, and the required input field raises ValidationError; the loader prints its skip warning and then raises UnboundLocalError at costs/__init__.py:119.

Expected behavior

Invalid rows are omitted and loading continues without duplicating a prior model. If invalid rows are intended to be fatal, return a clear validation error instead of logging that the row was skipped.

Environment and validation

Reproduced against repository main at the commit above using Python 3.13 and a temporary JSON fixture; no repository files were changed. The focused builder test module had 9 passing tests; its 2 integration failures require the absent tokencost installation, which was not installed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions