Robert & Tom,

Faseela reminded us (thank you) in genius of this thread in the context of
the ongoing review of https://git.opendaylight.org/gerrit/#/c/63118/, where
there appears to be some disagreement (suneel verma) as to whether a
delete() must be preceded by an exists check to avoid some exception..

I've therefore just re-read this thread, and my understand is that this is
about something else, and that therefore
https://git.opendaylight.org/gerrit/#/c/63118/ is correct (the check there
is not needed, even dangerous) - perhaps you would have a second to confirm
this reading and +1 that change?

Tx,
M.
--
Michael Vorburger, Red Hat
vorbur...@redhat.com | IRC: vorburger @freenode | ~ = http://vorburger.ch

On Mon, Jan 23, 2017 at 9:45 AM, Sela, Guy <guy.s...@hpe.com> wrote:

> Specifically in this case it's not in a shutdown flow, and even if it was
> and my example is bad, it doesn't prove my point is wrong.
> There are obviously many examples where this permissive mode is bad, and
> this is why the default should behave as of today.
> I'm trying to argue that there are situations where permissive mode is
> wanted.
> For example let's say I have a node (switch), inside the node I have a
> openflow table and inside the openflow table I have a flow.
> I can *theoretically* write a code in Interface-Delete that deletes all
> the flows related to this interface, and in Switch-Delete a code that
> deletes all the tables of the node, or even the node itself.
> Now if the switch is deleted, all the Interface delete listeners are
> triggered too right ?
> In this case the flow deletions will happen concurrently with the node
> delete, and I can step on this exception, even though I don't really care
> it logically failed.
>
> > To solve what you are asking for is to prove that the two deletes were
> deleting the same data
> Not really, I'm specifically talking about cases that the entity you are
> trying to delete is not there anymore for any reason (Maybe its father was
> deleted, maybe the entity itself was deleted, etc.). I'm saying that in
> these specific situations, we will keep the same logic and result for the
> operation, just not throw an exception to the user. My suggestion is
> focused on the higher layer (API to user), this is why I specifically
> talked about ModifiedNodeDoesNotExistException.
>
>
>
> -----Original Message-----
> From: Robert Varga [mailto:n...@hq.sk]
> Sent: Monday, January 23, 2017 12:10 AM
> To: Sela, Guy <guy.s...@hpe.com>; controller-dev@lists.opendaylight.org;
> mdsal-...@lists.opendaylight.org; Tom Pantelis <tompante...@gmail.com>
> Subject: Re: Deleting a node from MD-SAL that doesn't exist / already
> deleted
>
> On 01/22/2017 09:16 AM, Sela, Guy wrote:
> > Hi
> > I totally agree with you that it might indicate there is a cleanup code
> that runs in an un-coordinated fashion.
> > There is no value in explaining what causes this problem in this
> specific case, because it is probably solvable.
> > My point was the bigger picture, should we even solve this ? Is this
> even a problem that a developer needs to think of?
> > If you allow "permissive" mode to delete operations, you basically allow
> the developer to say - I don't care if someone else is concurrently
> cleaning up the same part I'm cleaning, it's doesn't matter to me. As long
> as it will be deleted in the end, that's fine by me.
> > This will not be the default mode, default mode would behave as today.
>
> Hello,
>
> If the shutdown is uncoordinated, you can have a situation where that
> other component starts up, and your cleanup will delete its state.
>
> It is not a question of 'default mode' or a 'flag'. To solve what you are
> asking for is to prove that the two deletes were deleting the same data --
> and that means we would have to retain complete version history (for as
> long as there is any snapshots can reference it).
>
> This particular call site does not cover deletes only, but rather any
> subtree overlaps, including unattached subtrees (you are writing /a/b/c/d,
> /a/b was deleted, what is the result?).
>
> See code surrounding
> https://github.com/opendaylight/yangtools/blob/master/yang/yang-data-impl/
> src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/
> ModificationApplyOperation.java
> for details.
>
> Regards,
> Robert
>
> _______________________________________________
> controller-dev mailing list
> controller-dev@lists.opendaylight.org
> https://lists.opendaylight.org/mailman/listinfo/controller-dev
>
_______________________________________________
controller-dev mailing list
controller-dev@lists.opendaylight.org
https://lists.opendaylight.org/mailman/listinfo/controller-dev

Reply via email to