DeviceStore bugfixes
Change-Id: Iebbfd99ea578c36438ec11e28e5230c73886dd55
Showing
3 changed files
with
20 additions
and
12 deletions
| 1 | package org.onlab.onos.store.device.impl; | 1 | package org.onlab.onos.store.device.impl; |
| 2 | 2 | ||
| 3 | +import static com.google.common.base.Predicates.notNull; | ||
| 3 | import com.google.common.base.Optional; | 4 | import com.google.common.base.Optional; |
| 4 | import com.google.common.cache.LoadingCache; | 5 | import com.google.common.cache.LoadingCache; |
| 6 | +import com.google.common.collect.FluentIterable; | ||
| 5 | import com.google.common.collect.ImmutableList; | 7 | import com.google.common.collect.ImmutableList; |
| 6 | import com.google.common.collect.ImmutableSet; | 8 | import com.google.common.collect.ImmutableSet; |
| 7 | import com.google.common.collect.ImmutableSet.Builder; | 9 | import com.google.common.collect.ImmutableSet.Builder; |
| 8 | import com.hazelcast.core.IMap; | 10 | import com.hazelcast.core.IMap; |
| 9 | import com.hazelcast.core.ISet; | 11 | import com.hazelcast.core.ISet; |
| 12 | + | ||
| 10 | import org.apache.felix.scr.annotations.Activate; | 13 | import org.apache.felix.scr.annotations.Activate; |
| 11 | import org.apache.felix.scr.annotations.Component; | 14 | import org.apache.felix.scr.annotations.Component; |
| 12 | import org.apache.felix.scr.annotations.Deactivate; | 15 | import org.apache.felix.scr.annotations.Deactivate; |
| ... | @@ -184,10 +187,12 @@ public class DistributedDeviceStore | ... | @@ -184,10 +187,12 @@ public class DistributedDeviceStore |
| 184 | desc.swVersion(), | 187 | desc.swVersion(), |
| 185 | desc.serialNumber()); | 188 | desc.serialNumber()); |
| 186 | synchronized (this) { | 189 | synchronized (this) { |
| 190 | + final byte[] deviceIdBytes = serialize(device.id()); | ||
| 191 | + rawDevices.put(deviceIdBytes, serialize(updated)); | ||
| 187 | devices.put(device.id(), Optional.of(updated)); | 192 | devices.put(device.id(), Optional.of(updated)); |
| 188 | availableDevices.add(serialize(device.id())); | 193 | availableDevices.add(serialize(device.id())); |
| 189 | } | 194 | } |
| 190 | - return new DeviceEvent(DeviceEvent.Type.DEVICE_UPDATED, device, null); | 195 | + return new DeviceEvent(DeviceEvent.Type.DEVICE_UPDATED, updated, null); |
| 191 | } | 196 | } |
| 192 | 197 | ||
| 193 | // Otherwise merely attempt to change availability | 198 | // Otherwise merely attempt to change availability |
| ... | @@ -231,7 +236,7 @@ public class DistributedDeviceStore | ... | @@ -231,7 +236,7 @@ public class DistributedDeviceStore |
| 231 | 236 | ||
| 232 | events.addAll(pruneOldPorts(device, ports, processed)); | 237 | events.addAll(pruneOldPorts(device, ports, processed)); |
| 233 | } | 238 | } |
| 234 | - return events; | 239 | + return FluentIterable.from(events).filter(notNull()).toList(); |
| 235 | } | 240 | } |
| 236 | 241 | ||
| 237 | // Creates a new port based on the port description adds it to the map and | 242 | // Creates a new port based on the port description adds it to the map and |
| ... | @@ -258,7 +263,7 @@ public class DistributedDeviceStore | ... | @@ -258,7 +263,7 @@ public class DistributedDeviceStore |
| 258 | portDescription.isEnabled()); | 263 | portDescription.isEnabled()); |
| 259 | ports.put(port.number(), updatedPort); | 264 | ports.put(port.number(), updatedPort); |
| 260 | updatePortMap(device.id(), ports); | 265 | updatePortMap(device.id(), ports); |
| 261 | - return new DeviceEvent(PORT_UPDATED, device, port); | 266 | + return new DeviceEvent(PORT_UPDATED, device, updatedPort); |
| 262 | } | 267 | } |
| 263 | return null; | 268 | return null; |
| 264 | } | 269 | } |
| ... | @@ -355,17 +360,17 @@ public class DistributedDeviceStore | ... | @@ -355,17 +360,17 @@ public class DistributedDeviceStore |
| 355 | 360 | ||
| 356 | @Override | 361 | @Override |
| 357 | protected void onAdd(DeviceId deviceId, DefaultDevice device) { | 362 | protected void onAdd(DeviceId deviceId, DefaultDevice device) { |
| 358 | - delegate.notify(new DeviceEvent(DEVICE_ADDED, device)); | 363 | + notifyDelegate(new DeviceEvent(DEVICE_ADDED, device)); |
| 359 | } | 364 | } |
| 360 | 365 | ||
| 361 | @Override | 366 | @Override |
| 362 | protected void onRemove(DeviceId deviceId, DefaultDevice device) { | 367 | protected void onRemove(DeviceId deviceId, DefaultDevice device) { |
| 363 | - delegate.notify(new DeviceEvent(DEVICE_REMOVED, device)); | 368 | + notifyDelegate(new DeviceEvent(DEVICE_REMOVED, device)); |
| 364 | } | 369 | } |
| 365 | 370 | ||
| 366 | @Override | 371 | @Override |
| 367 | protected void onUpdate(DeviceId deviceId, DefaultDevice device) { | 372 | protected void onUpdate(DeviceId deviceId, DefaultDevice device) { |
| 368 | - delegate.notify(new DeviceEvent(DEVICE_UPDATED, device)); | 373 | + notifyDelegate(new DeviceEvent(DEVICE_UPDATED, device)); |
| 369 | } | 374 | } |
| 370 | } | 375 | } |
| 371 | 376 | ||
| ... | @@ -376,17 +381,17 @@ public class DistributedDeviceStore | ... | @@ -376,17 +381,17 @@ public class DistributedDeviceStore |
| 376 | 381 | ||
| 377 | @Override | 382 | @Override |
| 378 | protected void onAdd(DeviceId deviceId, Map<PortNumber, Port> ports) { | 383 | protected void onAdd(DeviceId deviceId, Map<PortNumber, Port> ports) { |
| 379 | -// delegate.notify(new DeviceEvent(PORT_ADDED, getDevice(deviceId))); | 384 | +// notifyDelegate(new DeviceEvent(PORT_ADDED, getDevice(deviceId))); |
| 380 | } | 385 | } |
| 381 | 386 | ||
| 382 | @Override | 387 | @Override |
| 383 | protected void onRemove(DeviceId deviceId, Map<PortNumber, Port> ports) { | 388 | protected void onRemove(DeviceId deviceId, Map<PortNumber, Port> ports) { |
| 384 | -// delegate.notify(new DeviceEvent(PORT_REMOVED, getDevice(deviceId))); | 389 | +// notifyDelegate(new DeviceEvent(PORT_REMOVED, getDevice(deviceId))); |
| 385 | } | 390 | } |
| 386 | 391 | ||
| 387 | @Override | 392 | @Override |
| 388 | protected void onUpdate(DeviceId deviceId, Map<PortNumber, Port> ports) { | 393 | protected void onUpdate(DeviceId deviceId, Map<PortNumber, Port> ports) { |
| 389 | -// delegate.notify(new DeviceEvent(PORT_UPDATED, getDevice(deviceId))); | 394 | +// notifyDelegate(new DeviceEvent(PORT_UPDATED, getDevice(deviceId))); |
| 390 | } | 395 | } |
| 391 | } | 396 | } |
| 392 | 397 | ... | ... |
| ... | @@ -107,7 +107,7 @@ public abstract class AbstractDistributedStore<E extends Event, D extends StoreD | ... | @@ -107,7 +107,7 @@ public abstract class AbstractDistributedStore<E extends Event, D extends StoreD |
| 107 | @Override | 107 | @Override |
| 108 | public void entryRemoved(EntryEvent<byte[], byte[]> event) { | 108 | public void entryRemoved(EntryEvent<byte[], byte[]> event) { |
| 109 | K key = deserialize(event.getKey()); | 109 | K key = deserialize(event.getKey()); |
| 110 | - V val = deserialize(event.getValue()); | 110 | + V val = deserialize(event.getOldValue()); |
| 111 | cache.invalidate(key); | 111 | cache.invalidate(key); |
| 112 | onRemove(key, val); | 112 | onRemove(key, val); |
| 113 | } | 113 | } | ... | ... |
| 1 | package org.onlab.onos.net.trivial.impl; | 1 | package org.onlab.onos.net.trivial.impl; |
| 2 | 2 | ||
| 3 | +import com.google.common.collect.FluentIterable; | ||
| 3 | import com.google.common.collect.ImmutableList; | 4 | import com.google.common.collect.ImmutableList; |
| 5 | + | ||
| 4 | import org.apache.felix.scr.annotations.Activate; | 6 | import org.apache.felix.scr.annotations.Activate; |
| 5 | import org.apache.felix.scr.annotations.Component; | 7 | import org.apache.felix.scr.annotations.Component; |
| 6 | import org.apache.felix.scr.annotations.Deactivate; | 8 | import org.apache.felix.scr.annotations.Deactivate; |
| ... | @@ -33,6 +35,7 @@ import java.util.Set; | ... | @@ -33,6 +35,7 @@ import java.util.Set; |
| 33 | import java.util.concurrent.ConcurrentHashMap; | 35 | import java.util.concurrent.ConcurrentHashMap; |
| 34 | 36 | ||
| 35 | import static com.google.common.base.Preconditions.checkArgument; | 37 | import static com.google.common.base.Preconditions.checkArgument; |
| 38 | +import static com.google.common.base.Predicates.notNull; | ||
| 36 | import static org.onlab.onos.net.device.DeviceEvent.Type.*; | 39 | import static org.onlab.onos.net.device.DeviceEvent.Type.*; |
| 37 | import static org.slf4j.LoggerFactory.getLogger; | 40 | import static org.slf4j.LoggerFactory.getLogger; |
| 38 | 41 | ||
| ... | @@ -123,7 +126,7 @@ public class SimpleDeviceStore | ... | @@ -123,7 +126,7 @@ public class SimpleDeviceStore |
| 123 | devices.put(device.id(), updated); | 126 | devices.put(device.id(), updated); |
| 124 | availableDevices.add(device.id()); | 127 | availableDevices.add(device.id()); |
| 125 | } | 128 | } |
| 126 | - return new DeviceEvent(DeviceEvent.Type.DEVICE_UPDATED, device, null); | 129 | + return new DeviceEvent(DeviceEvent.Type.DEVICE_UPDATED, updated, null); |
| 127 | } | 130 | } |
| 128 | 131 | ||
| 129 | // Otherwise merely attempt to change availability | 132 | // Otherwise merely attempt to change availability |
| ... | @@ -165,7 +168,7 @@ public class SimpleDeviceStore | ... | @@ -165,7 +168,7 @@ public class SimpleDeviceStore |
| 165 | 168 | ||
| 166 | events.addAll(pruneOldPorts(device, ports, processed)); | 169 | events.addAll(pruneOldPorts(device, ports, processed)); |
| 167 | } | 170 | } |
| 168 | - return events; | 171 | + return FluentIterable.from(events).filter(notNull()).toList(); |
| 169 | } | 172 | } |
| 170 | 173 | ||
| 171 | // Creates a new port based on the port description adds it to the map and | 174 | // Creates a new port based on the port description adds it to the map and | ... | ... |
-
Please register or login to post a comment