Committed by
Gerrit Code Review
[ONOS-5185] fix bug for VTN data synchronized failed in cluster mode
Change-Id: I828cd738efb63e23f519bdd6a5d8b2bb58240df2
Showing
1 changed file
with
45 additions
and
21 deletions
| ... | @@ -22,6 +22,7 @@ import java.util.Collection; | ... | @@ -22,6 +22,7 @@ import java.util.Collection; |
| 22 | import java.util.Collections; | 22 | import java.util.Collections; |
| 23 | import java.util.Iterator; | 23 | import java.util.Iterator; |
| 24 | import java.util.List; | 24 | import java.util.List; |
| 25 | +import java.util.UUID; | ||
| 25 | import java.util.stream.Collectors; | 26 | import java.util.stream.Collectors; |
| 26 | 27 | ||
| 27 | import org.apache.felix.scr.annotations.Activate; | 28 | import org.apache.felix.scr.annotations.Activate; |
| ... | @@ -36,21 +37,29 @@ import org.onosproject.core.ApplicationId; | ... | @@ -36,21 +37,29 @@ import org.onosproject.core.ApplicationId; |
| 36 | import org.onosproject.core.CoreService; | 37 | import org.onosproject.core.CoreService; |
| 37 | import org.onosproject.event.AbstractListenerManager; | 38 | import org.onosproject.event.AbstractListenerManager; |
| 38 | import org.onosproject.net.DeviceId; | 39 | import org.onosproject.net.DeviceId; |
| 40 | +import org.onosproject.net.Host; | ||
| 39 | import org.onosproject.store.serializers.KryoNamespaces; | 41 | import org.onosproject.store.serializers.KryoNamespaces; |
| 40 | import org.onosproject.store.service.EventuallyConsistentMap; | 42 | import org.onosproject.store.service.EventuallyConsistentMap; |
| 41 | import org.onosproject.store.service.EventuallyConsistentMapEvent; | 43 | import org.onosproject.store.service.EventuallyConsistentMapEvent; |
| 42 | import org.onosproject.store.service.EventuallyConsistentMapListener; | 44 | import org.onosproject.store.service.EventuallyConsistentMapListener; |
| 45 | +import org.onosproject.store.service.LogicalClockService; | ||
| 43 | import org.onosproject.store.service.MultiValuedTimestamp; | 46 | import org.onosproject.store.service.MultiValuedTimestamp; |
| 44 | import org.onosproject.store.service.StorageService; | 47 | import org.onosproject.store.service.StorageService; |
| 45 | import org.onosproject.store.service.WallClockTimestamp; | 48 | import org.onosproject.store.service.WallClockTimestamp; |
| 46 | import org.onosproject.vtnrsc.AllowedAddressPair; | 49 | import org.onosproject.vtnrsc.AllowedAddressPair; |
| 47 | import org.onosproject.vtnrsc.BindingHostId; | 50 | import org.onosproject.vtnrsc.BindingHostId; |
| 51 | +import org.onosproject.vtnrsc.DefaultFloatingIp; | ||
| 48 | import org.onosproject.vtnrsc.DefaultVirtualPort; | 52 | import org.onosproject.vtnrsc.DefaultVirtualPort; |
| 49 | import org.onosproject.vtnrsc.FixedIp; | 53 | import org.onosproject.vtnrsc.FixedIp; |
| 54 | +import org.onosproject.vtnrsc.FloatingIp; | ||
| 55 | +import org.onosproject.vtnrsc.FloatingIpId; | ||
| 56 | +import org.onosproject.vtnrsc.RouterId; | ||
| 50 | import org.onosproject.vtnrsc.SecurityGroup; | 57 | import org.onosproject.vtnrsc.SecurityGroup; |
| 51 | import org.onosproject.vtnrsc.SubnetId; | 58 | import org.onosproject.vtnrsc.SubnetId; |
| 52 | import org.onosproject.vtnrsc.TenantId; | 59 | import org.onosproject.vtnrsc.TenantId; |
| 60 | +import org.onosproject.vtnrsc.TenantNetwork; | ||
| 53 | import org.onosproject.vtnrsc.TenantNetworkId; | 61 | import org.onosproject.vtnrsc.TenantNetworkId; |
| 62 | +import org.onosproject.vtnrsc.TenantRouter; | ||
| 54 | import org.onosproject.vtnrsc.VirtualPort; | 63 | import org.onosproject.vtnrsc.VirtualPort; |
| 55 | import org.onosproject.vtnrsc.VirtualPortId; | 64 | import org.onosproject.vtnrsc.VirtualPortId; |
| 56 | import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; | 65 | import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; |
| ... | @@ -70,7 +79,7 @@ implements VirtualPortService { | ... | @@ -70,7 +79,7 @@ implements VirtualPortService { |
| 70 | 79 | ||
| 71 | private final Logger log = LoggerFactory.getLogger(getClass()); | 80 | private final Logger log = LoggerFactory.getLogger(getClass()); |
| 72 | 81 | ||
| 73 | - private static final String VIRTUALPORT = "vtn-virtual-port"; | 82 | + private static final String VIRTUALPORT = "vtn-virtual-port-store"; |
| 74 | private static final String VTNRSC_APP = "org.onosproject.vtnrsc"; | 83 | private static final String VTNRSC_APP = "org.onosproject.vtnrsc"; |
| 75 | 84 | ||
| 76 | private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null"; | 85 | private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null"; |
| ... | @@ -94,6 +103,9 @@ implements VirtualPortService { | ... | @@ -94,6 +103,9 @@ implements VirtualPortService { |
| 94 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 103 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 95 | protected CoreService coreService; | 104 | protected CoreService coreService; |
| 96 | 105 | ||
| 106 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
| 107 | + protected LogicalClockService clockService; | ||
| 108 | + | ||
| 97 | private EventuallyConsistentMapListener<VirtualPortId, VirtualPort> virtualPortListener = | 109 | private EventuallyConsistentMapListener<VirtualPortId, VirtualPort> virtualPortListener = |
| 98 | new InnerVirtualPortStoreListener(); | 110 | new InnerVirtualPortStoreListener(); |
| 99 | 111 | ||
| ... | @@ -101,34 +113,46 @@ implements VirtualPortService { | ... | @@ -101,34 +113,46 @@ implements VirtualPortService { |
| 101 | public void activate() { | 113 | public void activate() { |
| 102 | 114 | ||
| 103 | appId = coreService.registerApplication(VTNRSC_APP); | 115 | appId = coreService.registerApplication(VTNRSC_APP); |
| 104 | - | ||
| 105 | eventDispatcher.addSink(VirtualPortEvent.class, listenerRegistry); | 116 | eventDispatcher.addSink(VirtualPortEvent.class, listenerRegistry); |
| 106 | 117 | ||
| 107 | - vPortStore = storageService.<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder() | 118 | + KryoNamespace.Builder serializer = KryoNamespace.newBuilder() |
| 108 | - .withName(VIRTUALPORT) | 119 | + .register(KryoNamespaces.API) |
| 109 | - .withSerializer(KryoNamespace.newBuilder().register(KryoNamespaces.API) | 120 | + .register(MultiValuedTimestamp.class) |
| 110 | - .register(MultiValuedTimestamp.class) | 121 | + .register(TenantNetworkId.class) |
| 111 | - .register(VirtualPortId.class, | 122 | + .register(Host.class) |
| 112 | - TenantNetworkId.class, | 123 | + .register(TenantNetwork.class) |
| 113 | - VirtualPort.State.class, | 124 | + .register(TenantNetworkId.class) |
| 114 | - TenantId.class, | 125 | + .register(TenantId.class) |
| 115 | - AllowedAddressPair.class, | 126 | + .register(SubnetId.class) |
| 116 | - FixedIp.class, | 127 | + .register(VirtualPortId.class) |
| 117 | - BindingHostId.class, | 128 | + .register(VirtualPort.State.class) |
| 118 | - SecurityGroup.class, | 129 | + .register(AllowedAddressPair.class) |
| 119 | - SubnetId.class, | 130 | + .register(FixedIp.class) |
| 120 | - IpAddress.class, | 131 | + .register(FloatingIp.class) |
| 121 | - DefaultVirtualPort.class)) | 132 | + .register(FloatingIpId.class) |
| 122 | - .withTimestampProvider((k, v) ->new WallClockTimestamp()) | 133 | + .register(FloatingIp.Status.class) |
| 123 | - .build(); | 134 | + .register(UUID.class) |
| 124 | - | 135 | + .register(DefaultFloatingIp.class) |
| 136 | + .register(BindingHostId.class) | ||
| 137 | + .register(SecurityGroup.class) | ||
| 138 | + .register(IpAddress.class) | ||
| 139 | + .register(DefaultVirtualPort.class) | ||
| 140 | + .register(RouterId.class) | ||
| 141 | + .register(TenantRouter.class) | ||
| 142 | + .register(VirtualPort.class); | ||
| 143 | + vPortStore = storageService | ||
| 144 | + .<VirtualPortId, VirtualPort>eventuallyConsistentMapBuilder() | ||
| 145 | + .withName(VIRTUALPORT).withSerializer(serializer) | ||
| 146 | + .withTimestampProvider((k, v) -> new WallClockTimestamp()) | ||
| 147 | + .build(); | ||
| 125 | vPortStore.addListener(virtualPortListener); | 148 | vPortStore.addListener(virtualPortListener); |
| 126 | log.info("Started"); | 149 | log.info("Started"); |
| 127 | } | 150 | } |
| 128 | 151 | ||
| 129 | @Deactivate | 152 | @Deactivate |
| 130 | public void deactivate() { | 153 | public void deactivate() { |
| 131 | - vPortStore.clear(); | 154 | + vPortStore.removeListener(virtualPortListener); |
| 155 | + vPortStore.destroy(); | ||
| 132 | log.info("Stoppped"); | 156 | log.info("Stoppped"); |
| 133 | } | 157 | } |
| 134 | 158 | ... | ... |
-
Please register or login to post a comment