[ 
https://issues.apache.org/jira/browse/FLINK-40292?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Weiqing Yang updated FLINK-40292:
---------------------------------
    Description: 
  This is the first of four sub-tasks implementing FLIP-485.

  FLIP: 
https://cwiki.apache.org/confluence/spaces/FLINK/pages/373885706/FLIP-485+Add+UDF+Metrics
  Vote thread: https://lists.apache.org/thread/symqpswsohl2s5wmtkcw0jjp1w5dot0n

  Add the shared runtime helper {{UdfMetrics}} to flink-table-runtime, in the 
package
  org.apache.flink.table.runtime.operators.metrics. It owns metric 
registration, the
  sampling decision, timing, and exception counting, and it is the piece that 
both the
  synchronous and the asynchronous instrumentation paths use.

  The helper registers two metrics under {{addGroup("udf", udfName)}} on the 
executing
  operator's metric group, so the full identifier is
  {{<operator_name>.udf.<udf_name>.<metric>}}:

  * {{udfProcessingTime}}: a DescriptiveStatisticsHistogram of per-invocation 
nanoseconds.
    It is sampled with the same counter-based scheme as state latency tracking
    (FLINK-21736), including the "sample interval == 1" case that measures 
every call.
  * {{udfExceptionCount}}: a ThreadSafeSimpleCounter, incremented on every 
exception and
    not sampled.

  The histogram is safe to update from an async callback thread. The sampling 
counter is
  only advanced on the task thread at dispatch.

  No call site is added here. The first caller arrives in the sub-task that 
adds the
  configuration options and instruments synchronous scalar and table UDF calls.

  Covered by a new UdfMetricsTest unit test.

  was:
  This is the first of four sub-tasks implementing FLIP-485: Add UDF Metrics, 
which was
  accepted on 2026-08-01 with 3 binding +1 and no -1.

  FLIP: 
https://cwiki.apache.org/confluence/spaces/FLINK/pages/373885706/FLIP-485+Add+UDF+Metrics
  Vote thread: https://lists.apache.org/thread/symqpswsohl2s5wmtkcw0jjp1w5dot0n

  Add the shared runtime helper {{UdfMetrics}} to flink-table-runtime, in the 
package
  org.apache.flink.table.runtime.operators.metrics. It owns metric 
registration, the
  sampling decision, timing, and exception counting, and it is the piece that 
both the
  synchronous and the asynchronous instrumentation paths use.

  The helper registers two metrics under {{addGroup("udf", udfName)}} on the 
executing
  operator's metric group, so the full identifier is
  {{<operator_name>.udf.<udf_name>.<metric>}}:

  * {{udfProcessingTime}}: a DescriptiveStatisticsHistogram of per-invocation 
nanoseconds.
    It is sampled with the same counter-based scheme as state latency tracking
    (FLINK-21736), including the "sample interval == 1" case that measures 
every call.
  * {{udfExceptionCount}}: a ThreadSafeSimpleCounter, incremented on every 
exception and
    not sampled.

  The histogram is safe to update from an async callback thread. The sampling 
counter is
  only advanced on the task thread at dispatch.

  No call site is added here. The first caller arrives in the sub-task that 
adds the
  configuration options and instruments synchronous scalar and table UDF calls.

  Covered by a new UdfMetricsTest unit test.


> Add UdfMetrics helper for UDF metrics
> -------------------------------------
>
>                 Key: FLINK-40292
>                 URL: https://issues.apache.org/jira/browse/FLINK-40292
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table SQL / Runtime
>            Reporter: Weiqing Yang
>            Priority: Major
>
>   This is the first of four sub-tasks implementing FLIP-485.
>   FLIP: 
> https://cwiki.apache.org/confluence/spaces/FLINK/pages/373885706/FLIP-485+Add+UDF+Metrics
>   Vote thread: 
> https://lists.apache.org/thread/symqpswsohl2s5wmtkcw0jjp1w5dot0n
>   Add the shared runtime helper {{UdfMetrics}} to flink-table-runtime, in the 
> package
>   org.apache.flink.table.runtime.operators.metrics. It owns metric 
> registration, the
>   sampling decision, timing, and exception counting, and it is the piece that 
> both the
>   synchronous and the asynchronous instrumentation paths use.
>   The helper registers two metrics under {{addGroup("udf", udfName)}} on the 
> executing
>   operator's metric group, so the full identifier is
>   {{<operator_name>.udf.<udf_name>.<metric>}}:
>   * {{udfProcessingTime}}: a DescriptiveStatisticsHistogram of per-invocation 
> nanoseconds.
>     It is sampled with the same counter-based scheme as state latency tracking
>     (FLINK-21736), including the "sample interval == 1" case that measures 
> every call.
>   * {{udfExceptionCount}}: a ThreadSafeSimpleCounter, incremented on every 
> exception and
>     not sampled.
>   The histogram is safe to update from an async callback thread. The sampling 
> counter is
>   only advanced on the task thread at dispatch.
>   No call site is added here. The first caller arrives in the sub-task that 
> adds the
>   configuration options and instruments synchronous scalar and table UDF 
> calls.
>   Covered by a new UdfMetricsTest unit test.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to