发布

  • [OPIK-6308] [BE] fix: make online evaluation score path non-blocking end-to-end (#6584)

    frostbyte_neo 发布于 2026-05-04 09:47:17 +00:00

    • [OPIK-6308] [BE] fix: make online evaluation score path non-blocking end-to-end

    Production metrics showed JVM threads piling up in WAITING state on
    Mono.block() calls in the online evaluation path during a span ingestion
    spike that coincided with a spike of Online Evaluation requests for
    Python custom metrics. Per-call, the Java BE was holding a workersScheduler
    thread, a global Schedulers.boundedElastic() thread, and a Jersey
    ClientExecutor thread for the entire upstream wait — even when the upstream
    was just slow, not failing.

    • fix(python-evaluator): use jakarta @NotNull for timeout fields to fail fast on missing config

    • fix(online-eval): drop redundant error.getMessage() in trace-thread Python outer doOnError

    The outer .doOnError on score() in OnlineScoringTraceThreadUserDefinedMetricPythonScorer
    called log.error with both an inline {} placeholder for error.getMessage() and the error
    itself as a trailing Throwable, so the error message was printed twice (once inline and
    once at the head of SLF4J's stack trace). Drop the inline placeholder and keep only the
    trailing Throwable, matching the trace-thread LLM scorer's existing pattern.

    下载附件