-
[OPIK-6308] [BE] fix: make online evaluation score path non-blocking end-to-end (#6584)
发布于
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.下载附件