Uploaded image for project: 'Beam'
  1. Beam
  2. BEAM-145

OutputTimeFn#assignOutputTime overrides WindowFn#getOutputTime in unfortunate ways

Details

    • Bug
    • Status: Resolved
    • P3
    • Resolution: Duplicate
    • None
    • 2.0.0
    • runner-core

    Description

      Today the OutputTimeFn includes #assignOutputTime, #combine, and #merge. Together these express the grouping of timestamps, analogous to the grouping of values in a GBK / Combine, in a canonical way.

      The default OutputTimeFn is provided by the WindowFn. In particular, SlidingWindows provides an OutputTimeFn that shifts input timestamps later to avoid watermark stuckness and then takes the minimum to compute the output timestamp.

      The SDK additionally provides instance for "min", "max" and "end of window" output timestamps.

      Unfortunately, if one overrides the OutputTimeFn to one of these, the shifting done by SlidingWindows is lost.

      This is actually only a minor problem for now, since "min" is the default, "end of window" is unaffected, and "max" has only esoteric uses.The fix is easy:

      This is interrelated with another suggested change: Since there are only three common OutputTimeFn instances, and it is a high bandwidth API, it does not seem worthwhile to leave it in userland. So it is proposed to reduce it to an enum, which would leave only the WindowFn as a userland place for timestamp adjustments. (requiring special casing for end-of-window, since it cannot be implemented without owning #assignOutputTime)

      Attachments

        Issue Links

          Activity

            People

              kenn Kenneth Knowles
              kenn Kenneth Knowles
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: