Add watchdog thread to detect illegal blocking calls during second phase commit. 70/4870/5
authorTomas Olvecky <tolvecky@cisco.com>
Fri, 14 Feb 2014 15:22:10 +0000 (16:22 +0100)
committerTomas Olvecky <tolvecky@cisco.com>
Tue, 25 Feb 2014 13:49:43 +0000 (14:49 +0100)
commit4f27eb271720e9d7eaa2f720672a2e76de82c40e
tree459ae8a212bc60a43d10b136e0e7ea96431aa3dd
parent808313e2a87d8dd037a0566574d0acc34687149c
Add watchdog thread to detect illegal blocking calls during second phase commit.

Add a thread that starts when second phase commit starts, that will monitor if
a module instance occupies the commit thread for more than 5 seconds. If so, log
a warning every second informing about possible misuse of config subsystem to
block on external resources.
Added a proxy module that caches Module#getInstance() call as this method is
idempotent.

Change-Id: Ia1e56386bdd8c6b7a6dc625cfc69253b927c92a9
Signed-off-by: Tomas Olvecky <tolvecky@cisco.com>
17 files changed:
opendaylight/config/config-api/src/main/java/org/opendaylight/controller/config/spi/Module.java
opendaylight/config/config-manager/pom.xml
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/CommitInfo.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigRegistryImpl.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionControllerImpl.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ConfigTransactionControllerInternal.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/DeadlockMonitor.java [new file with mode: 0644]
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ModuleInternalInfo.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverImpl.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManager.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DestroyedModule.java [moved from opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/DestroyedModule.java with 94% similarity]
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/ModuleInternalTransactionalInfo.java [moved from opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/ModuleInternalTransactionalInfo.java with 75% similarity]
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/ModulesHolder.java
opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/TransactionHolder.java [deleted file]
opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManagerTest.java
opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/parallelapsp/TestingParallelAPSPModule.java
opendaylight/config/config-manager/src/test/java/org/opendaylight/controller/config/manager/testingservices/threadpool/test/SimpleConfigurationTest.java