You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@nifi.apache.org by Manish Gupta 8 <mg...@sapient.com> on 2016/04/24 09:46:26 UTC

Default termination for relationships

Hi,

Does it make sense to keep all the out-flowing relationships auto-terminated by default when a new processor is dragged in? When user connects the processor and specify a relationship, only the selected one becomes non-terminating.

I think this will be good from usability point of view.

Thanks,
Manish



Re: Default termination for relationships

Posted by Joe Skora <js...@gmail.com>.
Mark and JoeW's comments make sense to me.  I think the default should be
the safest for the user and should follow the Principle of Least
Astonishment[1].  In a flow building UI it's natural to connect things
together, so not connecting is the special case.

That said, as Mark pointed out there are some cases where the processor
provides a relationship for testing, auditing, etc. and does not require a
connection.  In those cases the Relationship class' new AutoTerminate
property should eliminate the need to set AutoTerminate on a relationship
that's usually not going to be connected.  After that is propagated out to
the processors as appropriate I think this will be less of a problem.

[1] https://en.wikipedia.org/wiki/Principle_of_least_astonishment

On Mon, Apr 25, 2016 at 8:30 AM, Joe Witt <jo...@gmail.com> wrote:

> I agree Mark.  We should have the user make a simple explicit
> expression of intent to terminate data but we should not by default
> silently do so.  I can see how during early phases of building a brand
> new flow or experimenting with NiFi one could feel like they'd rather
> it just terminated data by default but I think that preference shifts
> over time.
>
> On Mon, Apr 25, 2016 at 8:23 AM, Mark Payne <ma...@hotmail.com> wrote:
> > Manish,
> >
> > I think changing the default to auto terminate would be a rather
> dangerous
> > move. When
> > a user is creating a dataflow, it would be very easy to overlook one of
> the
> > relationships
> > on a Processor and forget to configure it. If it were configured to
> > auto-terminate, the data
> > that is routed to that relationship would be deleted, resulting in
> > unintentional data loss.
> >
> > This is why we chose to force the user to explicitly acknowledge that
> they
> > want a Relationship
> > to be auto-terminated. As Pierre noted, there is a ticket [1] that was
> > resolved that allows the
> > developer to auto-terminate a specific Relationship. However, this
> should be
> > used sparingly,
> > for cases where it is expected that the data routed to that relationship
> > will not be needed most
> > of the time.
> >
> > An example of where this may come into play is the 'original'
> Relationship
> > of the
> > MergeContent Processor. There are a few cases where we want the original
> > FlowFiles that
> > were merged together, so the 'original' Relationship does exist, but in
> most
> > cases we only
> > want the merged FlowFile. So auto-terminating the 'original'
> Relationship by
> > default may be
> > a reasonable thing to do.
> >
> > Do others have thoughts on the issue?
> >
> > Thanks
> > -Mark
> >
> >
> > [1] https://issues.apache.org/jira/browse/NIFI-1003
> >
> >
> >
> > On Apr 24, 2016, at 6:03 AM, Pierre Villard <pierre.villard.fr@gmail.com
> >
> > wrote:
> >
> > Hi,
> >
> > I may be wrong, but I think this is something that has been already
> > discussed for 1.0 branch. However, I had a quick look on JIRA and didn't
> > find anything...
> > Otherwise there is NIFI-1003 to allow a default auto-termination for some
> > relationships.
> >
> > Pierre
> >
> >
> > 2016-04-24 11:00 GMT+02:00 Oleg Zhurakousky <
> ozhurakousky@hortonworks.com>:
> >>
> >> Manish
> >>
> >> That is an interesting suggestion. I personally don't see issues with it
> >> and generally do believe it would improve user experience, but
> interested
> >> what others think.
> >>
> >> Cheers
> >> Oleg
> >>
> >> Sent from my iPhone
> >>
> >> On Apr 24, 2016, at 08:46, Manish Gupta 8 <mg...@sapient.com> wrote:
> >>
> >> Hi,
> >>
> >>
> >>
> >> Does it make sense to keep all the out-flowing relationships
> >> auto-terminated by default when a new processor is dragged in? When user
> >> connects the processor and specify a relationship, only the selected one
> >> becomes non-terminating.
> >>
> >>
> >>
> >> I think this will be good from usability point of view.
> >>
> >>
> >>
> >> Thanks,
> >>
> >> Manish
> >>
> >>
> >>
> >>
> >
> >
> >
>

Re: Default termination for relationships

Posted by Joe Witt <jo...@gmail.com>.
I agree Mark.  We should have the user make a simple explicit
expression of intent to terminate data but we should not by default
silently do so.  I can see how during early phases of building a brand
new flow or experimenting with NiFi one could feel like they'd rather
it just terminated data by default but I think that preference shifts
over time.

On Mon, Apr 25, 2016 at 8:23 AM, Mark Payne <ma...@hotmail.com> wrote:
> Manish,
>
> I think changing the default to auto terminate would be a rather dangerous
> move. When
> a user is creating a dataflow, it would be very easy to overlook one of the
> relationships
> on a Processor and forget to configure it. If it were configured to
> auto-terminate, the data
> that is routed to that relationship would be deleted, resulting in
> unintentional data loss.
>
> This is why we chose to force the user to explicitly acknowledge that they
> want a Relationship
> to be auto-terminated. As Pierre noted, there is a ticket [1] that was
> resolved that allows the
> developer to auto-terminate a specific Relationship. However, this should be
> used sparingly,
> for cases where it is expected that the data routed to that relationship
> will not be needed most
> of the time.
>
> An example of where this may come into play is the 'original' Relationship
> of the
> MergeContent Processor. There are a few cases where we want the original
> FlowFiles that
> were merged together, so the 'original' Relationship does exist, but in most
> cases we only
> want the merged FlowFile. So auto-terminating the 'original' Relationship by
> default may be
> a reasonable thing to do.
>
> Do others have thoughts on the issue?
>
> Thanks
> -Mark
>
>
> [1] https://issues.apache.org/jira/browse/NIFI-1003
>
>
>
> On Apr 24, 2016, at 6:03 AM, Pierre Villard <pi...@gmail.com>
> wrote:
>
> Hi,
>
> I may be wrong, but I think this is something that has been already
> discussed for 1.0 branch. However, I had a quick look on JIRA and didn't
> find anything...
> Otherwise there is NIFI-1003 to allow a default auto-termination for some
> relationships.
>
> Pierre
>
>
> 2016-04-24 11:00 GMT+02:00 Oleg Zhurakousky <oz...@hortonworks.com>:
>>
>> Manish
>>
>> That is an interesting suggestion. I personally don't see issues with it
>> and generally do believe it would improve user experience, but interested
>> what others think.
>>
>> Cheers
>> Oleg
>>
>> Sent from my iPhone
>>
>> On Apr 24, 2016, at 08:46, Manish Gupta 8 <mg...@sapient.com> wrote:
>>
>> Hi,
>>
>>
>>
>> Does it make sense to keep all the out-flowing relationships
>> auto-terminated by default when a new processor is dragged in? When user
>> connects the processor and specify a relationship, only the selected one
>> becomes non-terminating.
>>
>>
>>
>> I think this will be good from usability point of view.
>>
>>
>>
>> Thanks,
>>
>> Manish
>>
>>
>>
>>
>
>
>

Re: Default termination for relationships

Posted by Mark Payne <ma...@hotmail.com>.
Manish,

I think changing the default to auto terminate would be a rather dangerous move. When
a user is creating a dataflow, it would be very easy to overlook one of the relationships
on a Processor and forget to configure it. If it were configured to auto-terminate, the data
that is routed to that relationship would be deleted, resulting in unintentional data loss.

This is why we chose to force the user to explicitly acknowledge that they want a Relationship
to be auto-terminated. As Pierre noted, there is a ticket [1] that was resolved that allows the
developer to auto-terminate a specific Relationship. However, this should be used sparingly,
for cases where it is expected that the data routed to that relationship will not be needed most
of the time.

An example of where this may come into play is the 'original' Relationship of the
MergeContent Processor. There are a few cases where we want the original FlowFiles that
were merged together, so the 'original' Relationship does exist, but in most cases we only
want the merged FlowFile. So auto-terminating the 'original' Relationship by default may be
a reasonable thing to do.

Do others have thoughts on the issue?

Thanks
-Mark


[1] https://issues.apache.org/jira/browse/NIFI-1003 <https://issues.apache.org/jira/browse/NIFI-1003>



> On Apr 24, 2016, at 6:03 AM, Pierre Villard <pi...@gmail.com> wrote:
> 
> Hi,
> 
> I may be wrong, but I think this is something that has been already discussed for 1.0 branch. However, I had a quick look on JIRA and didn't find anything...
> Otherwise there is NIFI-1003 <https://issues.apache.org/jira/browse/NIFI-1003> to allow a default auto-termination for some relationships.
> 
> Pierre
> 
> 
> 2016-04-24 11:00 GMT+02:00 Oleg Zhurakousky <ozhurakousky@hortonworks.com <ma...@hortonworks.com>>:
> Manish
> 
> That is an interesting suggestion. I personally don't see issues with it and generally do believe it would improve user experience, but interested what others think.
> 
> Cheers 
> Oleg 
> 
> Sent from my iPhone
> 
> On Apr 24, 2016, at 08:46, Manish Gupta 8 <mgupta50@sapient.com <ma...@sapient.com>> wrote:
> 
>> Hi,
>> 
>>  
>> 
>> Does it make sense to keep all the out-flowing relationships auto-terminated by default when a new processor is dragged in? When user connects the processor and specify a relationship, only the selected one becomes non-terminating.
>> 
>>  
>> 
>> I think this will be good from usability point of view.
>> 
>>  
>> 
>> Thanks,
>> 
>> Manish
>> 
>>  
>> 
>>  
>> 
> 


Re: Default termination for relationships

Posted by Pierre Villard <pi...@gmail.com>.
Hi,

I may be wrong, but I think this is something that has been already
discussed for 1.0 branch. However, I had a quick look on JIRA and didn't
find anything...
Otherwise there is NIFI-1003
<https://issues.apache.org/jira/browse/NIFI-1003> to allow a default
auto-termination for some relationships.

Pierre


2016-04-24 11:00 GMT+02:00 Oleg Zhurakousky <oz...@hortonworks.com>:

> Manish
>
> That is an interesting suggestion. I personally don't see issues with it
> and generally do believe it would improve user experience, but interested
> what others think.
>
> Cheers
> Oleg
>
> Sent from my iPhone
>
> On Apr 24, 2016, at 08:46, Manish Gupta 8 <mg...@sapient.com> wrote:
>
> Hi,
>
>
>
> Does it make sense to keep all the out-flowing relationships
> auto-terminated by default when a new processor is dragged in? When user
> connects the processor and specify a relationship, only the selected one
> becomes non-terminating.
>
>
>
> I think this will be good from usability point of view.
>
>
>
> Thanks,
>
> Manish
>
>
>
>
>
>

Re: Default termination for relationships

Posted by Oleg Zhurakousky <oz...@hortonworks.com>.
Manish

That is an interesting suggestion. I personally don't see issues with it and generally do believe it would improve user experience, but interested what others think.

Cheers
Oleg

Sent from my iPhone

On Apr 24, 2016, at 08:46, Manish Gupta 8 <mg...@sapient.com>> wrote:

Hi,

Does it make sense to keep all the out-flowing relationships auto-terminated by default when a new processor is dragged in? When user connects the processor and specify a relationship, only the selected one becomes non-terminating.

I think this will be good from usability point of view.

Thanks,
Manish