Improve cleanup after device disconnected event 87/47587/3
authorColin Dixon <colin@colindixon.com>
Mon, 3 Oct 2016 15:43:08 +0000 (17:43 +0200)
committerColin Dixon <colin@colindixon.com>
Fri, 4 Nov 2016 19:07:09 +0000 (19:07 +0000)
commit4ac927548dfd7f66ded8a636b518fbac3f17ec8c
tree47318d1e822d2cce66072f8d827479e89b41ef11
parentf617cff46bc5bd15596648d4e853caded276ed45
Improve cleanup after device disconnected event

- Ensure that all contexts are removed from managers at once
  at end of disconnect chain right before unregistration from
  cluster singleton service
- Prevent closing some services multiple times during device
  disconnect chain
- Prevent some NPEs in DeviceInitializationUtils what was caused
  by connecting and disconnecting device with no time in between
- Unify all openflow managers to implement OFPManager interface
- Ensure that when we will fail to set device to SLAVE we will wait
  until device is removed from operational DS and then continue

Resolves: bug 6672
See also: bug 6710, bug 5271

Actual work done by Tomas Slusny. Colin Dixon merely fixed a merge
conflict.

Change-Id: I3845c7d2a9147125b185d3abcc3fc8dd63ba5da8
Depends-On: I15f89cbd43310b0a8e4b7ac78595eeaaa82a65ee
Co-author: Tomas Slusny <tomas.slusny@pantheon.sk>
Signed-off-by: Tomas Slusny <tomas.slusny@pantheon.sk>
Signed-off-by: Colin Dixon <colin@colindixon.com>
(cherry picked from commit 4a89e389589676a2b6975096ba721cd4c354e1bd)
28 files changed:
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/OFPContext.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/OFPManager.java [new file with mode: 0644]
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/connection/ConnectionManager.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceManager.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceConnectedHandler.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceDisconnectedHandler.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceInitializationPhaseHandler.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceLifecycleSupervisor.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceRemovedHandler.java [new file with mode: 0644]
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceTerminationPhaseHandler.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/lifecycle/LifecycleService.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/rpc/RpcContext.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/rpc/RpcManager.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/StatisticsContext.java
openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/StatisticsManager.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/lifecycle/LifecycleServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcContextImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsContextImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/DeviceInitializationUtils.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/lifecycle/LifecycleServiceImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/rpc/RpcContextImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImplTest.java
openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImplTest.java