Details

    • Sub-task
    • Status: Resolved
    • P2
    • Resolution: Fixed
    • None
    • 2.7.0
    • sdk-go
    • None

    Description

      At present, reflectx.CallNoPanic is invoked for every element, and adds  recovery defers for each element. Defers are cheap, but not "per element" cheap. In a simple pipeline (a single ParDo), this represents around ~3% overhead for the pipeline, which is aggravated for every pardo layer.

      Since the beam model's unit of re-triable computation is per bundle, the recovery defers should be invoked per bundle only at the root. This is already being done in exec/plan.go

      This could be as simple as calling Call directly in exec/fn.go instead of with the reflectx wrapper as it is presently.

      Attachments

        Issue Links

          Activity

            People

              holden Holden Karau
              lostluck Robert Burke
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 50m
                  50m