Eliminate unnecessary blocking checks 46/92446/21
authorVladyslav Marchenko <vladyslav.marchenko@pantheon.tech>
Tue, 15 Sep 2020 10:29:46 +0000 (13:29 +0300)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 4 Nov 2020 12:43:50 +0000 (13:43 +0100)
commita8a56843c3dc31f61a01d6eff31cb79a5381398a
tree5a7c50e7fba74be122441bce4844a92adc208021
parentd98190dabb7426b0fb484170e0058a42ea1ef981
Eliminate unnecessary blocking checks

According to RFC6241:
1) "delete" operation must first check if the configuration data
   currently exists in the configuration datastore.
2) "create" operation must first check if the configuration data does
   not already exist in the configuration datastore.
3) "replace" operation replaces any related configuration in the
   configuration datastore. If no such configuration data exists in
   the configuration datastore, it is created.

If request goes via NetconfRestconfStrategy, we do not need to check
existence on the controller side, as the implied checks are part of
the underlyig behavior.

If request goes via MdsalRestconfStrategy, first we need to do
"if exists" check. Read requests in this case are collected in a batch
and then collecting the results.

JIRA: NETCONF-403
Change-Id: I6354c345d099017c1e82878af36ac37bbf5662c9
Signed-off-by: Vladyslav Marchenko <vladyslav.marchenko@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
14 files changed:
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/BatchedExistenceCheck.java [new file with mode: 0644]
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/MdsalRestconfStrategy.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/NetconfRestconfStrategy.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/RestconfStrategy.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/DeleteDataTransactionUtil.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/FutureCallbackTx.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PatchDataTransactionUtil.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PostDataTransactionUtil.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PutDataTransactionUtil.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ResponseFactory.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/DeleteDataTransactionUtilTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PatchDataTransactionUtilTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PostDataTransactionUtilTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PutDataTransactionUtilTest.java