Hwvtep TransactionHistory improvements. 33/82733/4
authorChandra Shekar S <chandra.shekar.s@ericsson.com>
Wed, 26 Jun 2019 10:18:44 +0000 (15:48 +0530)
committerChandra Shekar S <chandra.shekar.s@ericsson.com>
Fri, 28 Jun 2019 05:30:18 +0000 (11:00 +0530)
JIRA: OVSDB-481

The change in this review is to improve the format of the Hwvtep TransctionHistory hwvtep:txlog command
1. The hwvtep:txlog output is not logging/printing the date correctly. The date that is getting
printed is the date at which the command is executed , not the date at the transaction is looged.
Change has the fix for date issue.

2. The hwvtep:txlog output format is printing the complete instance identifier information of the nodes.
  making the command output clumsy and hard to read.
  ex :
    Printing for iid KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.tbd.
    params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node, path=
    org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology,
    org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.
    Topology[key=TopologyKey{_topologyId=Uri{_value=hwvtep:1}}],org.opendaylight.yang.gen.v1.urn.tbd.
    params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node[key=NodeKey{_nodeId=
    Uri{_value=hwvtep://uuid/3b0fb1b3-6449-4fa7-b6ac-0db437fe144e}}]]}
Update the output format only to print the node id : "hwvtep://uuid/3b0fb1b3-6449-4fa7-b6ac-0db437fe144e"

3. Update the TransctionHistory for the missing tables/objects like LogicalSwitch and Physical Port etc.
4. Added more logging of Transctions.

Change-Id: Ia5e8984fb414944820140acae69dd64104ee9619
Signed-off-by: Chandra Shekar S <chandra.shekar.s@ericsson.com>
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepConnectionManager.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/HwvtepTransactionLogElement.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/TransactionHistoryCmd.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/LogicalRouterRemoveCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/LogicalRouterUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/LogicalSwitchUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/McastMacsRemoteRemoveCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/McastMacsRemoteUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/TransactUtils.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/UcastMacsLocalUpdateCommand.java
hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/UcastMacsRemoteUpdateCommand.java

index 6b7052f5b14822e136825037e0b7aab0485e1f55..91166fad49525a517d42067361fef5a4cc0f8ba3 100644 (file)
@@ -145,8 +145,11 @@ public class HwvtepConnectionManager implements OvsdbConnectionListener, AutoClo
         ConnectionInfo key = HwvtepSouthboundMapper.createConnectionInfo(client);
         HwvtepConnectionInstance hwvtepConnectionInstance = getConnectionInstance(key);
         if (hwvtepConnectionInstance != null) {
-            deviceUpdateHistory.get(hwvtepConnectionInstance.getInstanceIdentifier()).addToHistory(
-                    TransactionType.DELETE, new ClientConnected(client.getConnectionInfo().getRemotePort()));
+            if (hwvtepConnectionInstance.getInstanceIdentifier() != null) {
+                deviceUpdateHistory.get(hwvtepConnectionInstance.getInstanceIdentifier()).addToHistory(
+                        TransactionType.DELETE, new ClientConnected(client.getConnectionInfo().getRemotePort()));
+            }
+
 
             // Unregister Entity ownership as soon as possible ,so this instance should
             // not be used as a candidate in Entity election (given that this instance is
index f30364ec33cbb4b22e4f9033d8817bc9c0e54d11..307f38b8965502baac09fc02258f9e60636f4c7a 100644 (file)
@@ -8,23 +8,22 @@
 package org.opendaylight.ovsdb.hwvtepsouthbound;
 
 import org.opendaylight.ovsdb.utils.mdsal.utils.TransactionElement;
-import org.opendaylight.ovsdb.utils.mdsal.utils.TransactionType;
 
 public class HwvtepTransactionLogElement extends TransactionElement {
 
     private final boolean isDeviceLog;
-
-    public HwvtepTransactionLogElement(TransactionType transactionType,
-                                       Object data,
-                                       boolean isDeviceLog) {
-        super(transactionType, data);
-        this.isDeviceLog = isDeviceLog;
-    }
+    private long date;
 
     public HwvtepTransactionLogElement(TransactionElement element,
                                        boolean isDeviceLog) {
         super(element.getTransactionType(), element.getData());
         this.isDeviceLog = isDeviceLog;
+        this.date = element.getDate();
+    }
+
+    @Override
+    public long getDate() {
+        return date;
     }
 
     @Override
index 4c7e1a18aff9d3bb1e2877d186c05cb5c3f3a4be..f5a0a39f6f2490f6218de966402e6cac85418c05 100644 (file)
@@ -28,6 +28,7 @@ public class TransactionHistoryCmd extends OsgiCommandSupport {
     @Option(name = "-nodeid", description = "Node Id",
             required = false, multiValued = false)
     String nodeid;
+    private static final String SEPERATOR = "#######################################################";
 
     private final HwvtepSouthboundProvider hwvtepProvider;
 
@@ -58,18 +59,17 @@ public class TransactionHistoryCmd extends OsgiCommandSupport {
     private void printLogs(Map<InstanceIdentifier<Node>, TransactionHistory> controllerTxLogs,
                            Map<InstanceIdentifier<Node>, TransactionHistory> deviceUpdateLogs,
                            InstanceIdentifier<Node> iid) {
-        session.getConsole().println("Printing for iid " + iid);
-        session.getConsole().println("======================================");
-        session.getConsole().println("======================================");
-        session.getConsole().print("printing logs for node ");
-        session.getConsole().println(iid);
-
+        session.getConsole().println(SEPERATOR + " START " + SEPERATOR);
         List<HwvtepTransactionLogElement> controllerTxLog = controllerTxLogs.get(iid).getElements()
                 .stream().map(ele -> new HwvtepTransactionLogElement(ele, false)).collect(Collectors.toList());
         List<HwvtepTransactionLogElement> deviceUpdateLog = deviceUpdateLogs.get(iid).getElements()
-                .stream().map(ele -> new HwvtepTransactionLogElement(ele, false)).collect(Collectors.toList());
-        //deviceUpdateLog.forEach( (log) -> log.setDeviceLog(true));
-        printLogs(mergeLogsByDate(controllerTxLog, deviceUpdateLog));
+                .stream().map(ele -> new HwvtepTransactionLogElement(ele, true)).collect(Collectors.toList());
+        List<Pair<HwvtepTransactionLogElement, Boolean>> allLogs = mergeLogsByDate(controllerTxLog, deviceUpdateLog);
+        session.getConsole().print("Printing for Node :  ");
+        session.getConsole().println(iid.firstKeyOf(Node.class).getNodeId().getValue());
+        printLogs(allLogs);
+        session.getConsole().println(SEPERATOR + " END " + SEPERATOR);
+        session.getConsole().println();
     }
 
     private void printLogs(List<Pair<HwvtepTransactionLogElement, Boolean>> logs) {
index cd1f038fc146765609b9af540325edf4e83018e3..767fc6d0ce25b29abaa16c263881105ff5b2b623 100644 (file)
@@ -23,6 +23,7 @@ import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalRouter;
+import org.opendaylight.ovsdb.utils.mdsal.utils.TransactionType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalRouters;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
@@ -87,6 +88,7 @@ public class LogicalRouterRemoveCommand extends AbstractTransactCommand<LogicalR
                 transaction.add(op.delete(logicalRouter.getSchema())
                         .where(logicalRouter.getUuidColumn().getSchema().opEqual(logicalRouterUuid)).build());
                 transaction.add(op.comment("Logical Router: Deleting " + lrouter.getHwvtepNodeName().getValue()));
+                updateControllerTxHistory(TransactionType.DELETE, logicalRouter);
             } else {
                 LOG.warn("Unable to delete logical router {} because it was not found in the operational data store",
                         lrouter.getHwvtepNodeName().getValue());
index 93b971a696def80b96ba2a325a7c00ae2b822a07..94744587bc26c1f9a9a3fb7c0efd5b5c4d9f27b8 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalRouter;
+import org.opendaylight.ovsdb.utils.mdsal.utils.TransactionType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.Acls;
@@ -78,6 +79,7 @@ public class LogicalRouterUpdateCommand extends AbstractTransactCommand<LogicalR
                 transaction.add(op.comment("Logical Router: Creating " + lrouter.getHwvtepNodeName().getValue()));
                 UUID lrUuid = new UUID(TransactUtils.getLogicalRouterId(lrouter));
                 updateCurrentTxData(LogicalRouters.class, routerKey, lrUuid, lrouter);
+                updateControllerTxHistory(TransactionType.ADD, logicalRouter);
             } else {
                 LogicalRouters updatedLRouter = operationalRouterOptional.get();
                 String existingLogicalRouterName = updatedLRouter.getHwvtepNodeName().getValue();
@@ -89,6 +91,7 @@ public class LogicalRouterUpdateCommand extends AbstractTransactCommand<LogicalR
                         .where(extraLogicalRouter.getNameColumn().getSchema().opEqual(existingLogicalRouterName))
                         .build());
                 transaction.add(op.comment("Logical Router: Updating " + existingLogicalRouterName));
+                updateControllerTxHistory(TransactionType.UPDATE, logicalRouter);
             }
         }
 
index 247d1017d146c3f64480755892fa01b1f04d076e..c872369a3a496af9ba87192016765e06feb020c0 100644 (file)
@@ -92,7 +92,7 @@ public class LogicalSwitchUpdateCommand extends AbstractTransactCommand<LogicalS
             transaction.add(op.comment("Logical Switch: Creating " + lswitch.getHwvtepNodeName().getValue()));
             UUID lsUuid = new UUID(TransactUtils.getLogicalSwitchId(lswitch));
             updateCurrentTxData(LogicalSwitches.class, lsKey, lsUuid, lswitch);
-            updateControllerTxHistory(TransactionType.ADD, lswitch);
+            updateControllerTxHistory(TransactionType.ADD, logicalSwitch);
         } else {
             String existingLogicalSwitchName = lswitch.getHwvtepNodeName().getValue();
             // Name is immutable, and so we *can't* update it.  So we use extraBridge for the schema stuff
@@ -104,7 +104,7 @@ public class LogicalSwitchUpdateCommand extends AbstractTransactCommand<LogicalS
                     .where(extraLogicalSwitch.getNameColumn().getSchema().opEqual(existingLogicalSwitchName))
                     .build());
             transaction.add(op.comment("Logical Switch: Updating " + existingLogicalSwitchName));
-            updateControllerTxHistory(TransactionType.UPDATE, lswitch);
+            updateControllerTxHistory(TransactionType.UPDATE, logicalSwitch);
         }
     }
 
index 640f60a439e4e5bdfc3167d4d8a4a27ef4aabf6c..4cf5f38d43a4da647634a5c8ec7064e8a92c659b 100644 (file)
@@ -23,6 +23,7 @@ import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsRemote;
+import org.opendaylight.ovsdb.utils.mdsal.utils.TransactionType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
@@ -107,6 +108,7 @@ public class McastMacsRemoteRemoveCommand extends AbstractTransactCommand<Remote
                     .where(mcastMacsRemote.getUuidColumn().getSchema().opEqual(macEntryUUID)).build());
             transaction.add(op.comment("McastMacRemote: Deleting " + mac.getMacEntryKey().getValue()));
             updateCurrentTxDeleteData(RemoteMcastMacs.class, macIid, mac);
+            updateControllerTxHistory(TransactionType.DELETE, mcastMacsRemote);
         } else {
             LOG.warn("Unable to delete remoteMcastMacs {} because it was not found in the operational store",
                     mac.getMacEntryKey().getValue());
index 51f53de13390ac57f1bd1622ed6232e8543374f4..6e13651c98e8023d7d5d49ce135af144643fec0e 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.McastMacsRemote;
+import org.opendaylight.ovsdb.utils.mdsal.utils.TransactionType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
@@ -97,6 +98,7 @@ public class McastMacsRemoteUpdateCommand extends AbstractTransactCommand<Remote
             transaction.add(op.insert(mcastMacsRemote));
             transaction.add(op.comment("McastMacRemote: Creating " + mac.getMacEntryKey().getValue()));
             updateCurrentTxData(RemoteMcastMacs.class, macKey, TXUUID, mac);
+            updateControllerTxHistory(TransactionType.ADD, mcastMacsRemote);
         } else if (operationalMacOptional.getUuid() != null) {
             UUID macEntryUUID = operationalMacOptional.getUuid();
             McastMacsRemote extraMac = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(),
@@ -107,6 +109,7 @@ public class McastMacsRemoteUpdateCommand extends AbstractTransactCommand<Remote
                     .where(extraMac.getUuidColumn().getSchema().opEqual(macEntryUUID))
                     .build());
             transaction.add(op.comment("McastMacRemote: Updating " + macEntryUUID));
+            updateControllerTxHistory(TransactionType.UPDATE, mcastMacsRemote);
             //add to updates so that tep ref counts can be updated upon success
             addToUpdates(macKey, mac);
         } else {
index a87d86c9bb3ca86bae642feb273784d7d4a8c31a..4362c872c404ff30d6073f30ab1e748effc4dcd5 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocatorSet;
 import org.opendaylight.ovsdb.utils.mdsal.utils.ControllerMdsalUtils;
+import org.opendaylight.ovsdb.utils.mdsal.utils.TransactionType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeVxlanOverIpv4;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepNodeName;
@@ -127,6 +128,7 @@ public final class TransactUtils {
     public static UUID createPhysicalLocatorSet(HwvtepOperationalState hwvtepOperationalState,
             TransactionBuilder transaction, List<LocatorSet> locatorList) {
         Set<UUID> locators = new HashSet<>();
+        Set<String> locatorsInfo = new HashSet<String>();
         for (LocatorSet locator: locatorList) {
             @SuppressWarnings("unchecked")
             InstanceIdentifier<TerminationPoint> iid =
@@ -134,6 +136,7 @@ public final class TransactUtils {
             UUID locatorUuid = createPhysicalLocator(transaction, hwvtepOperationalState, iid);
             if (locatorUuid != null) {
                 locators.add(locatorUuid);
+                addLocatorToTransactionHistory(hwvtepOperationalState, locatorsInfo, iid);
             }
         }
         PhysicalLocatorSet physicalLocatorSet = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(),
@@ -141,6 +144,9 @@ public final class TransactUtils {
         physicalLocatorSet.setLocators(locators);
         String locatorSetUuid = "PhysicalLocatorSet_" + HwvtepSouthboundMapper.getRandomUUID();
         transaction.add(op.insert(physicalLocatorSet).withId(locatorSetUuid));
+        hwvtepOperationalState.getDeviceInfo().addToControllerTx(TransactionType.ADD,
+                new StringBuilder(physicalLocatorSet.toString()).append(" Uuid ").append(locatorSetUuid)
+                        .append(" ").append(locatorsInfo.toString()));
         return new UUID(locatorSetUuid);
     }
 
@@ -164,14 +170,15 @@ public final class TransactUtils {
         String ip = tepKey.substring(tepKey.indexOf(":") + 1);
         builder.setDstIp(IpAddressBuilder.getDefaultInstance(ip));
         locatorAugmentation = builder.build();
-        locatorUuid = TransactUtils.createPhysicalLocator(transaction, locatorAugmentation);
+        locatorUuid = TransactUtils.createPhysicalLocator(transaction, locatorAugmentation, operationalState);
         operationalState.updateCurrentTxData(TerminationPoint.class, iid, locatorUuid);
         operationalState.getDeviceInfo().markKeyAsInTransit(TerminationPoint.class, iid);
         return locatorUuid;
     }
 
     public static UUID createPhysicalLocator(TransactionBuilder transaction,
-            HwvtepPhysicalLocatorAugmentation inputLocator) {
+                                             HwvtepPhysicalLocatorAugmentation inputLocator,
+                                             HwvtepOperationalState hwvtepOperationalState) {
         LOG.debug("Creating a physical locator: {}", inputLocator.getDstIp());
         PhysicalLocator physicalLocator = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(),
                 PhysicalLocator.class);
@@ -179,6 +186,8 @@ public final class TransactUtils {
         setDstIp(physicalLocator, inputLocator);
         String locatorUuid = "PhysicalLocator_" + HwvtepSouthboundMapper.getRandomUUID();
         transaction.add(op.insert(physicalLocator).withId(locatorUuid));
+        hwvtepOperationalState.getDeviceInfo().addToControllerTx(TransactionType.ADD,
+                new StringBuilder(physicalLocator.toString()).append(" Uuid ").append(locatorUuid));
         return new UUID(locatorUuid);
     }
 
@@ -250,4 +259,21 @@ public final class TransactUtils {
         return new UUID(HwvtepSouthboundConstants.ACL_UUID_PREFIX
                 + sanitizeUUID(aclIid.firstKeyOf(Acls.class).getAclName()));
     }
+
+    @SuppressWarnings("checkstyle:IllegalCatch")
+    private static void addLocatorToTransactionHistory(HwvtepOperationalState hwvtepOperationalState,
+                                                 Set<String> locatorsInfo, InstanceIdentifier<TerminationPoint> iid) {
+        try {
+            HwvtepDeviceInfo.DeviceData deviceData = hwvtepOperationalState.getDeviceInfo().getDeviceOperData(
+                    TerminationPoint.class, iid);
+            if (deviceData != null) {
+                PhysicalLocator locator = (PhysicalLocator) deviceData.getData();
+                locatorsInfo.add(new StringBuilder(locator.getUuid().toString()).append(" ")
+                        .append(locator.getDstIpColumn().getData()).toString());
+            }
+        }
+        catch (Exception exp) {
+            LOG.warn("Failed to add to Transaction Histroy ",exp);
+        }
+    }
 }
index 7016423735fbc729207966f41474a1debedcaf7c..6bc9d65c891e902028347ff2cfcaa2cfce57c9e2 100644 (file)
@@ -126,7 +126,8 @@ public class UcastMacsLocalUpdateCommand extends AbstractTransactCommand<LocalUc
                 if (configLocatorOptional.isPresent()) {
                     HwvtepPhysicalLocatorAugmentation locatorAugmentation =
                             configLocatorOptional.get().augmentation(HwvtepPhysicalLocatorAugmentation.class);
-                    locatorUuid = TransactUtils.createPhysicalLocator(transaction, locatorAugmentation);
+                    locatorUuid = TransactUtils.createPhysicalLocator(transaction, locatorAugmentation,
+                            getOperationalState());
                 } else {
                     LOG.warn("Create or update localUcastMac: No physical locator found in operational datastore!"
                             + "Its indentifier is {}", inputMac.getLocatorRef().getValue());
index b8f46140ad18ac1ec22457e42e5cdeaa08255646..3731a63fb996ac16b53768edf0b3b265dfe9e7e2 100644 (file)
@@ -93,6 +93,7 @@ public class UcastMacsRemoteUpdateCommand extends AbstractTransactCommand<Remote
             LOG.trace("doDeviceTransaction: creating RemotUcastMac entry: {}", ucastMacsRemote);
             transaction.add(op.insert(ucastMacsRemote));
             getOperationalState().getDeviceInfo().markKeyAsInTransit(RemoteUcastMacs.class, macKey);
+            updateCurrentTxData(RemoteUcastMacs.class, macKey, new UUID("uuid"), remoteUcastMac);
         } else if (deviceData.getUuid() != null) {
             UUID macEntryUUID = deviceData.getUuid();
             UcastMacsRemote extraMac = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(),