From: Robert Varga Date: Wed, 14 Nov 2018 21:34:43 +0000 (+0100) Subject: Cache DataTreeModification.getDataAfter() X-Git-Tag: release/neon~82 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=942f764142e783cf545566c711ba94f9d28f027e;p=netvirt.git Cache DataTreeModification.getDataAfter() Invoking this method is quite costly in case of LazyDataTreeModification, so cache the returned value, preventing a potentially-costly operation. Change-Id: Ibb3169fe77b0d6d2f11dae244a1fe110c37b659e Signed-off-by: Robert Varga --- diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/HwvtepHAUtil.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/HwvtepHAUtil.java index 8f05dd0eb3..867bbba46d 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/HwvtepHAUtil.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/HwvtepHAUtil.java @@ -233,20 +233,13 @@ public final class HwvtepHAUtil { @Nullable public static Node getUpdated(DataObjectModification mod) { - Node node = null; switch (mod.getModificationType()) { case SUBTREE_MODIFIED: - node = mod.getDataAfter(); - break; case WRITE: - if (mod.getDataAfter() != null) { - node = mod.getDataAfter(); - } - break; + return mod.getDataAfter(); default: - break; + return null; } - return node; } @Nullable diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/listeners/HwvtepNodeBaseListener.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/listeners/HwvtepNodeBaseListener.java index 3c6ed7b857..b0b4729736 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/listeners/HwvtepNodeBaseListener.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/listeners/HwvtepNodeBaseListener.java @@ -174,7 +174,8 @@ public abstract class HwvtepNodeBaseListener } private String logicalSwitchNameFromChildMod(DataObjectModification childMod) { - DataObject data = childMod.getDataAfter() != null ? childMod.getDataAfter() : childMod.getDataBefore(); + DataObject dataAfter = childMod.getDataAfter(); + DataObject data = dataAfter != null ? dataAfter : childMod.getDataBefore(); return LOGICAL_SWITCH_EXTRACTOR.getOrDefault(childMod.getModificationType().getClass(), noLogicalSwitch) .apply(data); } diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/merge/MergeCommandsAggregator.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/merge/MergeCommandsAggregator.java index 1cc4d89367..176765d4e7 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/merge/MergeCommandsAggregator.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/merge/MergeCommandsAggregator.java @@ -101,8 +101,9 @@ public abstract class MergeCommandsAggregator { MergeCommand mergeCommand = commands.get(modification.getDataType()); - boolean create = modification.getDataAfter() != null; - DataObject data = create ? modification.getDataAfter() : modification.getDataBefore(); + DataObject dataAfter = modification.getDataAfter(); + boolean create = dataAfter != null; + DataObject data = create ? dataAfter : modification.getDataBefore(); InstanceIdentifier transformedId = mergeCommand.generateId(dstPath, data); DataObject transformedItem = mergeCommand.transform(dstPath, data);