With respect to sharing code for rewriting pipelines: we've already written
a few utilities for pipeline fusion and rewriting transforms to work with
portable runners. Fusion functions the same way as in the ULR and is as
simple as a single method call.

However, two things prevent us from completely doing away with upstream
pipeline translations and portability references in runner-specific code.
The first is that different runners may require/desire specific fusion
logic for performance reasons or runner-specific functionality. The second
is that in translating ProcessBundleDescriptor processing into runner
primitives, each runner will require a specialized implementation. What we
*do* have already is a set of utilities that facilitate this and hopefully
minimize the amount of code needed to specialize the "executable stage"
functionality for each runner. These utilities live under

On Wed, Mar 7, 2018 at 10:49 AM Axel Magnuson <axelm...@google.com> wrote:

> My current solution is sort of a middle ground between the two.  I have
> made a lot of the portable API service logic generalizable, and it relies
> on the runner implementing a few intefaces to use it.  It doesn't use
> decorators, but my hope is that it will prevent the need for each runner to
> completely implement its own JobService.


Reply via email to