apache / apache/beam

Provide way to collect start/end read/write time inside the IOs

Open
#19,381 0 comments 0 reactions 0 assignees View on GitHub
ideas io P3 tests wish
Dominant language
Java
Stars
8.7k
Forks
4.7k
Avg merge
1d 20h
Merged PRs (30d)
196

Description

Currently, IO tests measure time using Metrics API but collect start/end time from ParDo transforms that are adjacent to the IO. It's fine for some tests but maybe could be done better. The drawback of the current solution is that we cannot collect time before PBegin and after PDone. Other than that the time we collect now is still not the exact time of read/write start/end but only the time at which first/last record appeared in the DoFn.

See: [TimeMonitor.java](https://github.com/apache/beam/blob/957b7cc7746aa626d2eb4dea341f668ec19d5d39/sdks/java/testing/test-utils/src/main/java/org/apache/beam/sdk/testutils/metrics/TimeMonitor.java) as an example of such DoFn.

Possible solution: save metrics in startBundle / finishBundle method in IOs whenever a dedicated pipelineOption is set to true. 

In general, maybe it's a good idea to place some other metrics inside IOs too? wdyt?

Imported from Jira [BEAM-6969](https://issues.apache.org/jira/browse/BEAM-6969). Original Jira may contain additional context.
Reported by: ŁukaszG.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.