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
runners/java-fn-execution.


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.
>


-- 
-Ben

Reply via email to