I am thinking of a boolean property named "apex.run.simulate"

On Thu, Dec 21, 2017 at 9:05 AM, Sanjay Pujare <san...@datatorrent.com>
wrote:

> It is relatively easy to describe the justification for this change without
> getting into the weeds and hairsplitting words.
>
> A DAG is built not only to launch an application but also to let a user
> visualize and configure it. Currently "populateDAG" is the only method we
> require application writers to implement and they implement it with the
> goal of running the application. So it can use properties, configuration
> and code that is really only needed if you want to "run" the DAG.
>
> As mentioned above a perfectly valid use case is that a platform allows a
> user to construct a DAG, visualize it and then attach configuration values
> to various components in the DAG, save these values as some kind of a
> "configuration package" and then at a future date run the DAG with this
> setup. This is consistent with the view that construction of a pipeline and
> execution of the pipeline are 2 separate phases and should be delineated as
> such.
>
> If you understand and agree with the justification we can work on improving
> the original proposal.
>
> Sanjay
>
>
> On Thu, Dec 21, 2017 at 8:27 AM, Vlad Rozov <vro...@apache.org> wrote:
>
> > "Sometimes" is not a use case. Config is not a context.
> >
> > Without concrete use cases the proposed change is not well justified.
> > populateDAG() is supposed to populate DAG, not to record anything in an
> > external system. It was a design goal for plugins.
> >
> > Thank you,
> >
> > Vlad
> >
> >
> > On 12/20/17 02:23, Priyanka Gugale wrote:
> >
> >> +1
> >> Sometimes this context is required. We shouldn't change any default
> >> behaviour other than making this config available.
> >>
> >> -Priyanka
> >>
> >>
> >>
> >> On Wed, Dec 20, 2017 at 5:32 AM, Pramod Immaneni <
> pra...@datatorrent.com>
> >> wrote:
> >>
> >> The external system recording was just an example, not a specific use
> >>> case.
> >>> The idea is to provide comprehensive information to populateDAG as to
> the
> >>> context it is being called under. It is akin to the test mode or
> simulate
> >>> flag that you see with various utilities. The platform cannot control
> >>> what
> >>> populateDAG does, even without this information, in multiple calls that
> >>> you
> >>> mention the application can return different DAGs by depending on
> >>> any external factor such as time of day or some external variable. This
> >>> is
> >>> to merely provide more context information in the config. It is upto
> the
> >>> application to do what it wishes with it.
> >>>
> >>> On Tue, Dec 19, 2017 at 2:28 PM, Vlad Rozov <vro...@apache.org> wrote:
> >>>
> >>> -0.5: populateDAG() may be called by the platform as many times as it
> >>>> needs (even in case it calls it only once now to launch an
> application).
> >>>> Passing different parameters to populateDAG() in simulate launch mode
> >>>> and
> >>>> actual launch may lead to different DAG being constructed for those
> two
> >>>> modes. Can't the use case you described be handled by a plugin?
> >>>>
> >>>> Thank you,
> >>>>
> >>>> Vlad
> >>>>
> >>>>
> >>>> On 12/19/17 10:06, Sanjay Pujare wrote:
> >>>>
> >>>> +1 although I prefer something that is more enforceable. So I like the
> >>>>> idea
> >>>>> of another method but that introduces incompatibility so may be in
> 4.0?
> >>>>>
> >>>>> On Tue, Dec 19, 2017 at 9:40 AM, Munagala Ramanath <
> >>>>> amberar...@yahoo.com.invalid> wrote:
> >>>>>
> >>>>>    +1
> >>>>>
> >>>>>> Ram
> >>>>>>       On Tuesday, December 19, 2017, 8:33:21 AM PST, Pramod
> Immaneni <
> >>>>>> pra...@datatorrent.com> wrote:
> >>>>>>
> >>>>>>    I have a mini proposal. The command get-app-package-info runs the
> >>>>>> populateDAG method of an application to construct the DAG but does
> not
> >>>>>> actually launch the DAG. An application developer does not know in
> >>>>>>
> >>>>> which
> >>>
> >>>> context the populateDAG is being called. For example, if they are
> >>>>>> recording
> >>>>>> application starts in an external system from populateDAG, they will
> >>>>>>
> >>>>> have
> >>>
> >>>> false entries there. This can be solved in different ways such as
> >>>>>> introducing another method in StreamingApplication or more
> parameters
> >>>>>> to populateDAG but a non disruptive option would be to add a
> property
> >>>>>>
> >>>>> in
> >>>
> >>>> the configuration object that is passed to populateDAG to indicate if
> >>>>>>
> >>>>> it
> >>>
> >>>> is
> >>>>>> simulate/test mode or real launch. An application developer can use
> >>>>>>
> >>>>> this
> >>>
> >>>> property to take the appropriate actions.
> >>>>>>
> >>>>>> Thanks
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >
>

Reply via email to