[ONOS-5185] fix bug for VTN data synchronized failed in cluster mode

Change-Id: I8458d2492c52f43f1df0b661a921ee6f3027297d
This commit is contained in:
bobzhou 2016-09-02 17:34:16 +08:00 committed by Gerrit Code Review
parent 9c3f30a034
commit 16144ba3df

View File

@ -22,6 +22,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Activate;
@ -37,6 +38,7 @@ import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService; import org.onosproject.core.CoreService;
import org.onosproject.event.AbstractListenerManager; import org.onosproject.event.AbstractListenerManager;
import org.onosproject.net.DeviceId; import org.onosproject.net.DeviceId;
import org.onosproject.net.Host;
import org.onosproject.store.serializers.KryoNamespaces; import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.EventuallyConsistentMap; import org.onosproject.store.service.EventuallyConsistentMap;
import org.onosproject.store.service.EventuallyConsistentMapEvent; import org.onosproject.store.service.EventuallyConsistentMapEvent;
@ -46,12 +48,18 @@ import org.onosproject.store.service.StorageService;
import org.onosproject.store.service.WallClockTimestamp; import org.onosproject.store.service.WallClockTimestamp;
import org.onosproject.vtnrsc.AllowedAddressPair; import org.onosproject.vtnrsc.AllowedAddressPair;
import org.onosproject.vtnrsc.BindingHostId; import org.onosproject.vtnrsc.BindingHostId;
import org.onosproject.vtnrsc.DefaultFloatingIp;
import org.onosproject.vtnrsc.DefaultVirtualPort; import org.onosproject.vtnrsc.DefaultVirtualPort;
import org.onosproject.vtnrsc.FixedIp; 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.SecurityGroup;
import org.onosproject.vtnrsc.SubnetId; import org.onosproject.vtnrsc.SubnetId;
import org.onosproject.vtnrsc.TenantId; import org.onosproject.vtnrsc.TenantId;
import org.onosproject.vtnrsc.TenantNetwork;
import org.onosproject.vtnrsc.TenantNetworkId; import org.onosproject.vtnrsc.TenantNetworkId;
import org.onosproject.vtnrsc.TenantRouter;
import org.onosproject.vtnrsc.VirtualPort; import org.onosproject.vtnrsc.VirtualPort;
import org.onosproject.vtnrsc.VirtualPortId; import org.onosproject.vtnrsc.VirtualPortId;
import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService;
@ -71,7 +79,7 @@ implements VirtualPortService {
private final Logger log = LoggerFactory.getLogger(getClass()); 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 VTNRSC_APP = "org.onosproject.vtnrsc";
private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null"; private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null";
@ -106,21 +114,34 @@ implements VirtualPortService {
eventDispatcher.addSink(VirtualPortEvent.class, listenerRegistry); eventDispatcher.addSink(VirtualPortEvent.class, listenerRegistry);
vPortStore = storageService.<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder() KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
.withName(VIRTUALPORT) .register(KryoNamespaces.API)
.withSerializer(KryoNamespace.newBuilder().register(KryoNamespaces.API)
.register(MultiValuedTimestamp.class) .register(MultiValuedTimestamp.class)
.register(VirtualPortId.class, .register(TenantNetworkId.class)
TenantNetworkId.class, .register(Host.class)
VirtualPort.State.class, .register(TenantNetwork.class)
TenantId.class, .register(TenantNetworkId.class)
AllowedAddressPair.class, .register(TenantId.class)
FixedIp.class, .register(SubnetId.class)
BindingHostId.class, .register(VirtualPortId.class)
SecurityGroup.class, .register(VirtualPort.State.class)
SubnetId.class, .register(AllowedAddressPair.class)
IpAddress.class, .register(FixedIp.class)
DefaultVirtualPort.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()) .withTimestampProvider((k, v) -> new WallClockTimestamp())
.build(); .build();
@ -130,7 +151,8 @@ implements VirtualPortService {
@Deactivate @Deactivate
public void deactivate() { public void deactivate() {
vPortStore.clear(); vPortStore.removeListener(virtualPortListener);
vPortStore.destroy();
log.info("Stoppped"); log.info("Stoppped");
} }