[ONOS-5185] fix bug for VTN data synchronized failed in cluster mode
Change-Id: I8458d2492c52f43f1df0b661a921ee6f3027297d
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
index c394e85..522e540 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/virtualport/impl/VirtualPortManager.java
@@ -22,6 +22,7 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.felix.scr.annotations.Activate;
@@ -37,6 +38,7 @@
import org.onosproject.core.CoreService;
import org.onosproject.event.AbstractListenerManager;
import org.onosproject.net.DeviceId;
+import org.onosproject.net.Host;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.EventuallyConsistentMap;
import org.onosproject.store.service.EventuallyConsistentMapEvent;
@@ -46,12 +48,18 @@
import org.onosproject.store.service.WallClockTimestamp;
import org.onosproject.vtnrsc.AllowedAddressPair;
import org.onosproject.vtnrsc.BindingHostId;
+import org.onosproject.vtnrsc.DefaultFloatingIp;
import org.onosproject.vtnrsc.DefaultVirtualPort;
import org.onosproject.vtnrsc.FixedIp;
+import org.onosproject.vtnrsc.FloatingIp;
+import org.onosproject.vtnrsc.FloatingIpId;
+import org.onosproject.vtnrsc.RouterId;
import org.onosproject.vtnrsc.SecurityGroup;
import org.onosproject.vtnrsc.SubnetId;
import org.onosproject.vtnrsc.TenantId;
+import org.onosproject.vtnrsc.TenantNetwork;
import org.onosproject.vtnrsc.TenantNetworkId;
+import org.onosproject.vtnrsc.TenantRouter;
import org.onosproject.vtnrsc.VirtualPort;
import org.onosproject.vtnrsc.VirtualPortId;
import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
@@ -71,7 +79,7 @@
private final Logger log = LoggerFactory.getLogger(getClass());
- private static final String VIRTUALPORT = "vtn-virtual-port";
+ private static final String VIRTUALPORT = "vtn-virtual-port-store";
private static final String VTNRSC_APP = "org.onosproject.vtnrsc";
private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null";
@@ -106,23 +114,36 @@
eventDispatcher.addSink(VirtualPortEvent.class, listenerRegistry);
- vPortStore = storageService.<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder()
- .withName(VIRTUALPORT)
- .withSerializer(KryoNamespace.newBuilder().register(KryoNamespaces.API)
- .register(MultiValuedTimestamp.class)
- .register(VirtualPortId.class,
- TenantNetworkId.class,
- VirtualPort.State.class,
- TenantId.class,
- AllowedAddressPair.class,
- FixedIp.class,
- BindingHostId.class,
- SecurityGroup.class,
- SubnetId.class,
- IpAddress.class,
- DefaultVirtualPort.class))
- .withTimestampProvider((k, v) ->new WallClockTimestamp())
- .build();
+ KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
+ .register(KryoNamespaces.API)
+ .register(MultiValuedTimestamp.class)
+ .register(TenantNetworkId.class)
+ .register(Host.class)
+ .register(TenantNetwork.class)
+ .register(TenantNetworkId.class)
+ .register(TenantId.class)
+ .register(SubnetId.class)
+ .register(VirtualPortId.class)
+ .register(VirtualPort.State.class)
+ .register(AllowedAddressPair.class)
+ .register(FixedIp.class)
+ .register(FloatingIp.class)
+ .register(FloatingIpId.class)
+ .register(FloatingIp.Status.class)
+ .register(UUID.class)
+ .register(DefaultFloatingIp.class)
+ .register(BindingHostId.class)
+ .register(SecurityGroup.class)
+ .register(IpAddress.class)
+ .register(DefaultVirtualPort.class)
+ .register(RouterId.class)
+ .register(TenantRouter.class)
+ .register(VirtualPort.class);
+ vPortStore = storageService
+ .<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder()
+ .withName(VIRTUALPORT).withSerializer(serializer)
+ .withTimestampProvider((k, v) -> new WallClockTimestamp())
+ .build();
vPortStore.addListener(virtualPortListener);
log.info("Started");
@@ -130,7 +151,8 @@
@Deactivate
public void deactivate() {
- vPortStore.clear();
+ vPortStore.removeListener(virtualPortListener);
+ vPortStore.destroy();
log.info("Stoppped");
}