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