I understand you points and thanks for the clarification about the meaning of the exception. My suggestion was not to change the current delete, but to add to it another flag, which will "silence" the exceptions in the case where the transaction started when the Node existed, and ended when it didn't exist anymore. Default behavior would stay the same. Cleanup code can potentially do the same deletion twice, and I think it makes sense to allow it to pass this "permissive" flag.
-----Original Message----- From: Robert Varga [mailto:n...@hq.sk] Sent: Friday, January 20, 2017 2:46 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/19/2017 07:03 PM, Robert Varga wrote: > The question you need to answer to solve the problem you are seeing is: > why has the path disappeared? ... and please don't get me wrong, I am not inherently opposed to defining new operations, but it is an immensely expensive change. This would have to be a new operation, not a LogicalOperation.DELETE, as we cannot ever change LogicalOperation semantics (except for pure bugfixes). It needs to have it's semantics completely defined. By completely defined I mean the following: - semantic meaning, preconditions and postconditions for a single operation for all SchemaNode types (user-ordered leaf-lists are fun) - define version-conflict resolution rules for both missing-node case and conflicting tree/subtree versions mismatches, including traversed parent nodes - evaluate impact on ModificationType (any change affects all DTCL users) - provide minimal implementation of a proof of associativity (for intra-transaction state tracking compression) ... after which we can worry about implementing it, then test, then write a migration guide for API users, then audit all known callsites, making sure they are doing the right thing, and then start planning a rollout. Regards, Robert P.S.: If we decide do that kind of effort, we should do LogicalOperation.CREATE, too, as that will amortize the work. _______________________________________________ controller-dev mailing list controller-dev@lists.opendaylight.org https://lists.opendaylight.org/mailman/listinfo/controller-dev