From 62cddd88e42e8f3c6a92bbf42c97b0d6806f44ae Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 22 Mar 2019 19:31:50 +0100 Subject: [PATCH] Bump odlparent to 5.0.0 This bumps odlparent references to 5.0.0, removing use of the JSR305 remnants. Also a useless javadoc plugin override is removed. Change-Id: Iae5355e49115afdd73b60bd26ac85f7f542bbff8 Signed-off-by: Robert Varga --- benchmark/artifacts/pom.xml | 2 +- benchmark/pom.xml | 2 +- docs/pom.xml | 8 +-- .../features-mdsal-benchmark/pom.xml | 2 +- features/benchmark/odl-benchmark-api/pom.xml | 2 +- features/benchmark/odl-dsbenchmark/pom.xml | 2 +- .../benchmark/odl-mdsal-benchmark/pom.xml | 2 +- features/benchmark/odl-ntfbenchmark/pom.xml | 2 +- features/benchmark/pom.xml | 2 +- .../features-config-netty/pom.xml | 2 +- .../config-netty/odl-config-netty/pom.xml | 2 +- .../src/main/feature/feature.xml | 4 +- features/config-netty/pom.xml | 2 +- features/extras/features-extras/pom.xml | 2 +- features/extras/odl-extras-all/pom.xml | 2 +- features/extras/odl-jolokia/pom.xml | 2 +- features/extras/pom.xml | 2 +- features/mdsal/features-mdsal/pom.xml | 2 +- .../mdsal/odl-clustering-test-app/pom.xml | 2 +- .../mdsal/odl-controller-mdsal-common/pom.xml | 2 +- .../odl-controller-model-topology/pom.xml | 2 +- features/mdsal/odl-mdsal-all/pom.xml | 2 +- features/mdsal/odl-mdsal-broker-local/pom.xml | 4 +- .../src/main/feature/feature.xml | 2 +- features/mdsal/odl-mdsal-broker/pom.xml | 2 +- .../odl-mdsal-clustering-commons/pom.xml | 7 ++- .../src/main/feature/feature.xml | 12 ++--- features/mdsal/odl-mdsal-clustering/pom.xml | 2 +- .../odl-mdsal-distributed-datastore/pom.xml | 7 ++- .../src/main/feature/feature.xml | 2 +- .../mdsal/odl-mdsal-model-inventory/pom.xml | 2 +- .../odl-mdsal-remoterpc-connector/pom.xml | 9 +++- .../src/main/feature/feature.xml | 2 +- .../mdsal/odl-message-bus-collector/pom.xml | 2 +- features/mdsal/odl-toaster/pom.xml | 2 +- features/mdsal/pom.xml | 2 +- features/pom.xml | 2 +- karaf/pom.xml | 2 +- .../resources/archetype-resources/pom.xml | 2 +- opendaylight/archetypes/pom.xml | 2 +- opendaylight/blueprint/pom.xml | 2 +- ...ractDependentComponentFactoryMetadata.java | 2 +- opendaylight/commons/jolokia/pom.xml | 2 +- .../util/NamingThreadPoolFactory.java | 16 +++--- .../ModifyTransactionRequestBuilder.java | 5 +- .../client/AbstractClientConnection.java | 19 ++++--- .../client/AveragingProgressTracker.java | 5 +- .../access/client/ClientActorBehavior.java | 4 +- .../access/client/ClientActorContext.java | 4 +- .../client/ConnectedClientConnection.java | 2 - .../access/client/ProgressTracker.java | 2 - .../cluster/access/client/TransmitQueue.java | 6 +-- opendaylight/md-sal/mdsal-artifacts/pom.xml | 2 +- opendaylight/md-sal/mdsal-it-base/pom.xml | 2 +- opendaylight/md-sal/mdsal-it-parent/pom.xml | 2 +- .../impl/CloseTrackedRegistry.java | 4 +- .../features/features-mdsal-trace/pom.xml | 2 +- .../features/odl-mdsal-trace/pom.xml | 2 +- .../md-sal/mdsal-trace/features/pom.xml | 2 +- opendaylight/md-sal/mdsal-trace/pom.xml | 2 +- opendaylight/md-sal/pom.xml | 2 +- .../md-sal/sal-binding-dom-it/pom.xml | 2 +- .../cluster/common/actor/MessageTracker.java | 5 +- .../AbstractDataTreeModificationCursor.java | 4 +- .../cluster/io/FileBackedOutputStream.java | 23 ++++---- .../messaging/AssembledMessageState.java | 4 +- .../cluster/messaging/SlicedMessageState.java | 6 +-- .../md-sal/sal-clustering-config/pom.xml | 2 +- .../md-sal/sal-distributed-datastore/pom.xml | 5 -- .../ClientBackedTransactionChain.java | 7 +-- .../actors/dds/AbstractClientHistory.java | 24 +++++---- .../actors/dds/AbstractProxyTransaction.java | 53 ++++++++++--------- .../dds/AbstractShardBackendResolver.java | 7 +-- .../actors/dds/LocalProxyTransaction.java | 4 +- .../dds/LocalReadOnlyProxyTransaction.java | 18 +++---- .../dds/LocalReadWriteProxyTransaction.java | 4 +- .../dds/ModuleShardBackendResolver.java | 7 +-- .../databroker/actors/dds/ProxyHistory.java | 9 ++-- .../actors/dds/ShardBackendInfo.java | 4 +- .../dds/SimpleShardBackendResolver.java | 5 +- .../databroker/actors/dds/VotingFuture.java | 5 +- ...taTreeNotificationPublisherActorProxy.java | 4 +- .../AbstractShardDataTreeTransaction.java | 4 +- .../DataTreeChangeListenerProxy.java | 2 +- .../DataTreeCohortActorRegistry.java | 4 +- .../DataTreeCohortRegistrationProxy.java | 2 +- .../DatastoreContextIntrospector.java | 9 ++-- ...tShardDataTreeChangeListenerPublisher.java | 4 +- ...yedDataTreeChangeListenerRegistration.java | 2 +- .../FrontendClientMetadataBuilder.java | 5 +- .../cluster/datastore/FrontendMetadata.java | 4 +- .../FrontendReadOnlyTransaction.java | 4 +- .../FrontendReadWriteTransaction.java | 4 +- .../datastore/FrontendTransaction.java | 4 +- .../datastore/LeaderFrontendState.java | 4 +- .../cluster/datastore/ShardDataTree.java | 9 ++-- ...TreeChangeListenerPublisherActorProxy.java | 6 +-- .../ShardDataTreeTransactionChain.java | 4 +- .../datastore/TransactionContextWrapper.java | 2 +- .../EntityOwnershipListenerSupport.java | 10 ++-- .../jmx/mbeans/shard/ShardStats.java | 2 +- .../messages/ShardLeaderStateChanged.java | 18 +++---- .../DistributedShardChangePublisher.java | 2 +- .../sharding/DistributedShardFrontend.java | 2 +- .../DistributedShardedDOMDataTree.java | 2 +- .../cluster/sharding/LookupTask.java | 6 +-- .../dds/AbstractProxyTransactionTest.java | 8 +-- .../broker/impl/PingPongTransactionChain.java | 7 +-- ...aBrokerDelegatingReadWriteTransaction.java | 3 +- opendaylight/model/pom.xml | 2 +- pom.xml | 2 +- 111 files changed, 253 insertions(+), 292 deletions(-) diff --git a/benchmark/artifacts/pom.xml b/benchmark/artifacts/pom.xml index 565adb9c2a..a2e9ce1bb8 100644 --- a/benchmark/artifacts/pom.xml +++ b/benchmark/artifacts/pom.xml @@ -13,7 +13,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/benchmark/pom.xml b/benchmark/pom.xml index ce54e35a26..595b3306b8 100644 --- a/benchmark/pom.xml +++ b/benchmark/pom.xml @@ -9,7 +9,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 org.opendaylight.controller diff --git a/docs/pom.xml b/docs/pom.xml index 4b2399c2ee..2d4b2122a1 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent odlparent - 4.0.9 + 5.0.0 @@ -146,10 +146,6 @@ org.opendaylight.controller sal-clustering-commons - - org.opendaylight.controller - sal-clustering-config - org.opendaylight.controller sal-distributed-datastore @@ -285,8 +281,6 @@ maven-javadoc-plugin - - 3.0.0 attach-javadocs diff --git a/features/benchmark/features-mdsal-benchmark/pom.xml b/features/benchmark/features-mdsal-benchmark/pom.xml index 14021d1f66..bc4018a255 100644 --- a/features/benchmark/features-mdsal-benchmark/pom.xml +++ b/features/benchmark/features-mdsal-benchmark/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent feature-repo-parent - 4.0.9 + 5.0.0 diff --git a/features/benchmark/odl-benchmark-api/pom.xml b/features/benchmark/odl-benchmark-api/pom.xml index 247bfe2f5a..e7ae979a01 100644 --- a/features/benchmark/odl-benchmark-api/pom.xml +++ b/features/benchmark/odl-benchmark-api/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/benchmark/odl-dsbenchmark/pom.xml b/features/benchmark/odl-dsbenchmark/pom.xml index 55cacd90bb..7514c49f84 100644 --- a/features/benchmark/odl-dsbenchmark/pom.xml +++ b/features/benchmark/odl-dsbenchmark/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/benchmark/odl-mdsal-benchmark/pom.xml b/features/benchmark/odl-mdsal-benchmark/pom.xml index 0696365464..83308545f5 100644 --- a/features/benchmark/odl-mdsal-benchmark/pom.xml +++ b/features/benchmark/odl-mdsal-benchmark/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/benchmark/odl-ntfbenchmark/pom.xml b/features/benchmark/odl-ntfbenchmark/pom.xml index 62c089b663..5c5dd85dd7 100644 --- a/features/benchmark/odl-ntfbenchmark/pom.xml +++ b/features/benchmark/odl-ntfbenchmark/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/benchmark/pom.xml b/features/benchmark/pom.xml index 0b7c823098..db9a362264 100644 --- a/features/benchmark/pom.xml +++ b/features/benchmark/pom.xml @@ -10,7 +10,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 org.opendaylight.controller diff --git a/features/config-netty/features-config-netty/pom.xml b/features/config-netty/features-config-netty/pom.xml index 2cbf46ede5..b559aed3b7 100644 --- a/features/config-netty/features-config-netty/pom.xml +++ b/features/config-netty/features-config-netty/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent feature-repo-parent - 4.0.9 + 5.0.0 diff --git a/features/config-netty/odl-config-netty/pom.xml b/features/config-netty/odl-config-netty/pom.xml index 7e382eee0c..3ea5dadbed 100644 --- a/features/config-netty/odl-config-netty/pom.xml +++ b/features/config-netty/odl-config-netty/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/config-netty/odl-config-netty/src/main/feature/feature.xml b/features/config-netty/odl-config-netty/src/main/feature/feature.xml index e4048a9bcc..931e6991f0 100644 --- a/features/config-netty/odl-config-netty/src/main/feature/feature.xml +++ b/features/config-netty/odl-config-netty/src/main/feature/feature.xml @@ -8,7 +8,7 @@ --> - odl-guava - odl-netty-4 + odl-guava + odl-netty-4 diff --git a/features/config-netty/pom.xml b/features/config-netty/pom.xml index 5203030cf3..c5d37ef7e0 100644 --- a/features/config-netty/pom.xml +++ b/features/config-netty/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/features/extras/features-extras/pom.xml b/features/extras/features-extras/pom.xml index d7c78e8315..1a8f0fd97d 100644 --- a/features/extras/features-extras/pom.xml +++ b/features/extras/features-extras/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent feature-repo-parent - 4.0.9 + 5.0.0 diff --git a/features/extras/odl-extras-all/pom.xml b/features/extras/odl-extras-all/pom.xml index c4326f57a1..7ab2ba7c7c 100644 --- a/features/extras/odl-extras-all/pom.xml +++ b/features/extras/odl-extras-all/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/extras/odl-jolokia/pom.xml b/features/extras/odl-jolokia/pom.xml index 980bd610fa..5edee6c457 100644 --- a/features/extras/odl-jolokia/pom.xml +++ b/features/extras/odl-jolokia/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/extras/pom.xml b/features/extras/pom.xml index 231108042e..646872e00b 100644 --- a/features/extras/pom.xml +++ b/features/extras/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/features/mdsal/features-mdsal/pom.xml b/features/mdsal/features-mdsal/pom.xml index 3b6fba4c9c..99faee1c6f 100644 --- a/features/mdsal/features-mdsal/pom.xml +++ b/features/mdsal/features-mdsal/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent feature-repo-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-clustering-test-app/pom.xml b/features/mdsal/odl-clustering-test-app/pom.xml index 1a461fd6bd..6e0ea45840 100644 --- a/features/mdsal/odl-clustering-test-app/pom.xml +++ b/features/mdsal/odl-clustering-test-app/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-controller-mdsal-common/pom.xml b/features/mdsal/odl-controller-mdsal-common/pom.xml index af63eab9f5..fdb96f14d6 100644 --- a/features/mdsal/odl-controller-mdsal-common/pom.xml +++ b/features/mdsal/odl-controller-mdsal-common/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-controller-model-topology/pom.xml b/features/mdsal/odl-controller-model-topology/pom.xml index 3a35a45db4..ae94f98ab3 100644 --- a/features/mdsal/odl-controller-model-topology/pom.xml +++ b/features/mdsal/odl-controller-model-topology/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-mdsal-all/pom.xml b/features/mdsal/odl-mdsal-all/pom.xml index b70a21d53c..e5d21fd2b7 100644 --- a/features/mdsal/odl-mdsal-all/pom.xml +++ b/features/mdsal/odl-mdsal-all/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-mdsal-broker-local/pom.xml b/features/mdsal/odl-mdsal-broker-local/pom.xml index 6beb66ee62..82daf290ff 100644 --- a/features/mdsal/odl-mdsal-broker-local/pom.xml +++ b/features/mdsal/odl-mdsal-broker-local/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 @@ -25,6 +25,8 @@ 0.11.0-SNAPSHOT + + true diff --git a/features/mdsal/odl-mdsal-broker-local/src/main/feature/feature.xml b/features/mdsal/odl-mdsal-broker-local/src/main/feature/feature.xml index accea8b64b..6d51823295 100644 --- a/features/mdsal/odl-mdsal-broker-local/src/main/feature/feature.xml +++ b/features/mdsal/odl-mdsal-broker-local/src/main/feature/feature.xml @@ -8,7 +8,7 @@ --> - odl-lmax-3 + odl-lmax-3 odl-yangtools-codec mvn:org.opendaylight.controller/blueprint/${blueprint.version} diff --git a/features/mdsal/odl-mdsal-broker/pom.xml b/features/mdsal/odl-mdsal-broker/pom.xml index 753dfc63c5..9c4f959811 100644 --- a/features/mdsal/odl-mdsal-broker/pom.xml +++ b/features/mdsal/odl-mdsal-broker/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-mdsal-clustering-commons/pom.xml b/features/mdsal/odl-mdsal-clustering-commons/pom.xml index b5cf579d2c..7b86107bd6 100644 --- a/features/mdsal/odl-mdsal-clustering-commons/pom.xml +++ b/features/mdsal/odl-mdsal-clustering-commons/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 @@ -21,6 +21,11 @@ 1.10.0-SNAPSHOT feature + + + true + + ${project.groupId} diff --git a/features/mdsal/odl-mdsal-clustering-commons/src/main/feature/feature.xml b/features/mdsal/odl-mdsal-clustering-commons/src/main/feature/feature.xml index 00c2e52f84..85426c19b4 100644 --- a/features/mdsal/odl-mdsal-clustering-commons/src/main/feature/feature.xml +++ b/features/mdsal/odl-mdsal-clustering-commons/src/main/feature/feature.xml @@ -8,11 +8,11 @@ --> - odl-akka-system-2.5 - odl-akka-persistence-2.5 - odl-akka-clustering-2.5 - odl-apache-commons-lang3 - odl-dropwizard-metrics - odl-servlet-api + odl-akka-system-2.5 + odl-akka-persistence-2.5 + odl-akka-clustering-2.5 + odl-apache-commons-lang3 + odl-dropwizard-metrics + odl-servlet-api diff --git a/features/mdsal/odl-mdsal-clustering/pom.xml b/features/mdsal/odl-mdsal-clustering/pom.xml index b7c0bf38a6..d5d7b3ad5d 100644 --- a/features/mdsal/odl-mdsal-clustering/pom.xml +++ b/features/mdsal/odl-mdsal-clustering/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-mdsal-distributed-datastore/pom.xml b/features/mdsal/odl-mdsal-distributed-datastore/pom.xml index 1bc682c9d5..636ca4e293 100644 --- a/features/mdsal/odl-mdsal-distributed-datastore/pom.xml +++ b/features/mdsal/odl-mdsal-distributed-datastore/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 @@ -21,6 +21,11 @@ 1.10.0-SNAPSHOT feature + + + true + + diff --git a/features/mdsal/odl-mdsal-distributed-datastore/src/main/feature/feature.xml b/features/mdsal/odl-mdsal-distributed-datastore/src/main/feature/feature.xml index 7716205f1f..96d8ffe621 100644 --- a/features/mdsal/odl-mdsal-distributed-datastore/src/main/feature/feature.xml +++ b/features/mdsal/odl-mdsal-distributed-datastore/src/main/feature/feature.xml @@ -8,6 +8,6 @@ --> - odl-apache-commons-text + odl-apache-commons-text diff --git a/features/mdsal/odl-mdsal-model-inventory/pom.xml b/features/mdsal/odl-mdsal-model-inventory/pom.xml index 22c3aa9e91..afa75c99a2 100644 --- a/features/mdsal/odl-mdsal-model-inventory/pom.xml +++ b/features/mdsal/odl-mdsal-model-inventory/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-mdsal-remoterpc-connector/pom.xml b/features/mdsal/odl-mdsal-remoterpc-connector/pom.xml index 20813fe400..4142290237 100644 --- a/features/mdsal/odl-mdsal-remoterpc-connector/pom.xml +++ b/features/mdsal/odl-mdsal-remoterpc-connector/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 @@ -21,6 +21,11 @@ 1.10.0-SNAPSHOT feature + + + true + + ${project.groupId} @@ -39,7 +44,7 @@ org.opendaylight.odlparent odl-akka-leveldb-0.10 - 4.0.9 + 5.0.0 xml features diff --git a/features/mdsal/odl-mdsal-remoterpc-connector/src/main/feature/feature.xml b/features/mdsal/odl-mdsal-remoterpc-connector/src/main/feature/feature.xml index 9079aa91fe..b4f9bcbcb3 100644 --- a/features/mdsal/odl-mdsal-remoterpc-connector/src/main/feature/feature.xml +++ b/features/mdsal/odl-mdsal-remoterpc-connector/src/main/feature/feature.xml @@ -8,6 +8,6 @@ --> - odl-akka-leveldb-0.10 + odl-akka-leveldb-0.10 diff --git a/features/mdsal/odl-message-bus-collector/pom.xml b/features/mdsal/odl-message-bus-collector/pom.xml index 17c5b8ad5b..7a983e41e6 100644 --- a/features/mdsal/odl-message-bus-collector/pom.xml +++ b/features/mdsal/odl-message-bus-collector/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/odl-toaster/pom.xml b/features/mdsal/odl-toaster/pom.xml index 51811fafe3..32924edffe 100644 --- a/features/mdsal/odl-toaster/pom.xml +++ b/features/mdsal/odl-toaster/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/features/mdsal/pom.xml b/features/mdsal/pom.xml index 7dbb5deacb..cec66b3290 100644 --- a/features/mdsal/pom.xml +++ b/features/mdsal/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/features/pom.xml b/features/pom.xml index b443f887cc..ca94643c51 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/karaf/pom.xml b/karaf/pom.xml index 141c5215af..dcb73b643d 100644 --- a/karaf/pom.xml +++ b/karaf/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.odlparent karaf4-parent - 4.0.9 + 5.0.0 diff --git a/opendaylight/archetypes/opendaylight-startup/src/main/resources/archetype-resources/pom.xml b/opendaylight/archetypes/opendaylight-startup/src/main/resources/archetype-resources/pom.xml index 7d0076cd8a..62e2700e17 100644 --- a/opendaylight/archetypes/opendaylight-startup/src/main/resources/archetype-resources/pom.xml +++ b/opendaylight/archetypes/opendaylight-startup/src/main/resources/archetype-resources/pom.xml @@ -11,7 +11,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/opendaylight/archetypes/pom.xml b/opendaylight/archetypes/pom.xml index f557e4262d..79ab937933 100644 --- a/opendaylight/archetypes/pom.xml +++ b/opendaylight/archetypes/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/opendaylight/blueprint/pom.xml b/opendaylight/blueprint/pom.xml index 30e626234d..660648f084 100644 --- a/opendaylight/blueprint/pom.xml +++ b/opendaylight/blueprint/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent bundle-parent - 4.0.9 + 5.0.0 diff --git a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/AbstractDependentComponentFactoryMetadata.java b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/AbstractDependentComponentFactoryMetadata.java index b7953e4d6f..c47db3a24e 100644 --- a/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/AbstractDependentComponentFactoryMetadata.java +++ b/opendaylight/blueprint/src/main/java/org/opendaylight/controller/blueprint/ext/AbstractDependentComponentFactoryMetadata.java @@ -14,12 +14,12 @@ import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; -import javax.annotation.concurrent.GuardedBy; import org.apache.aries.blueprint.di.AbstractRecipe; import org.apache.aries.blueprint.di.ExecutionContext; import org.apache.aries.blueprint.di.Recipe; import org.apache.aries.blueprint.ext.DependentComponentFactoryMetadata; import org.apache.aries.blueprint.services.ExtendedBlueprintContainer; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.blueprint.BlueprintContainerRestartService; import org.osgi.framework.ServiceReference; diff --git a/opendaylight/commons/jolokia/pom.xml b/opendaylight/commons/jolokia/pom.xml index be3eb1a772..76120d59c9 100644 --- a/opendaylight/commons/jolokia/pom.xml +++ b/opendaylight/commons/jolokia/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.odlparent odlparent - 4.0.9 + 5.0.0 diff --git a/opendaylight/config/threadpool-config-impl/src/main/java/org/opendaylight/controller/config/threadpool/util/NamingThreadPoolFactory.java b/opendaylight/config/threadpool-config-impl/src/main/java/org/opendaylight/controller/config/threadpool/util/NamingThreadPoolFactory.java index 3f5a6dd375..a85c8244e6 100644 --- a/opendaylight/config/threadpool-config-impl/src/main/java/org/opendaylight/controller/config/threadpool/util/NamingThreadPoolFactory.java +++ b/opendaylight/config/threadpool-config-impl/src/main/java/org/opendaylight/controller/config/threadpool/util/NamingThreadPoolFactory.java @@ -5,33 +5,30 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.config.threadpool.util; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import java.io.Closeable; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicLong; -import javax.annotation.concurrent.ThreadSafe; /** - * Implementation of {@link ThreadFactory}. + * Implementation of {@link ThreadFactory}. This class is thread-safe. */ -@ThreadSafe public class NamingThreadPoolFactory implements ThreadFactory, Closeable { private final ThreadGroup group; private final String namePrefix; private final AtomicLong threadName = new AtomicLong(); - public NamingThreadPoolFactory(String namePrefix) { - Preconditions.checkNotNull(namePrefix); + public NamingThreadPoolFactory(final String namePrefix) { + this.namePrefix = requireNonNull(namePrefix); this.group = new ThreadGroup(namePrefix); - this.namePrefix = namePrefix; } @Override - public Thread newThread(Runnable r) { + public Thread newThread(final Runnable r) { return new Thread(group, r, String.format("%s-%d", group.getName(), threadName.incrementAndGet())); } @@ -42,5 +39,4 @@ public class NamingThreadPoolFactory implements ThreadFactory, Closeable { public String getNamePrefix() { return namePrefix; } - } diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequestBuilder.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequestBuilder.java index 9312e4c7ac..8a04936e19 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequestBuilder.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequestBuilder.java @@ -12,19 +12,18 @@ import com.google.common.annotations.Beta; import com.google.common.base.Preconditions; import java.util.ArrayList; import java.util.List; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.yangtools.concepts.Builder; import org.opendaylight.yangtools.concepts.Identifiable; /** * A reusable {@link Builder} for creating {@link ModifyTransactionRequest} message instances. Its internal state is - * reset when {@link #build()} is invoked, hence it can be used to create a sequence of messages. + * reset when {@link #build()} is invoked, hence it can be used to create a sequence of messages. This class is NOT + * thread-safe. * * @author Robert Varga */ @Beta -@NotThreadSafe public final class ModifyTransactionRequestBuilder implements Builder, Identifiable { private final List modifications = new ArrayList<>(1); diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientConnection.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientConnection.java index 03d4691cb4..361027af1d 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientConnection.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientConnection.java @@ -21,8 +21,8 @@ import java.util.concurrent.TimeoutException; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.function.Consumer; -import javax.annotation.concurrent.GuardedBy; -import javax.annotation.concurrent.NotThreadSafe; +import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.lock.qual.Holding; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.Request; import org.opendaylight.controller.cluster.access.concepts.RequestException; @@ -36,11 +36,10 @@ import scala.concurrent.duration.FiniteDuration; /** * Base class for a connection to the backend. Responsible to queueing and dispatch of requests toward the backend. * Can be in three conceptual states: Connecting, Connected and Reconnecting, which are represented by public final - * classes exposed from this package. + * classes exposed from this package. This class NOT thread-safe, not are its subclasses expected to be thread-safe. * * @author Robert Varga */ -@NotThreadSafe public abstract class AbstractClientConnection { private static final Logger LOG = LoggerFactory.getLogger(AbstractClientConnection.class); @@ -198,7 +197,7 @@ public abstract class AbstractClientConnection { } } - @GuardedBy("lock") + @Holding("lock") private void commonEnqueue(final ConnectionEntry entry, final long now) { final RequestException maybePoison = poisoned; if (maybePoison != null) { @@ -223,7 +222,7 @@ public abstract class AbstractClientConnection { return queue.drain(); } - @GuardedBy("lock") + @Holding("lock") final void finishReplay(final ReconnectForwarder forwarder) { setForwarder(forwarder); @@ -243,12 +242,12 @@ public abstract class AbstractClientConnection { lock.unlock(); } - @GuardedBy("lock") + @Holding("lock") final void setForwarder(final ReconnectForwarder forwarder) { queue.setForwarder(forwarder, currentTime()); } - @GuardedBy("lock") + @Holding("lock") abstract ClientActorBehavior lockedReconnect(ClientActorBehavior current, RequestException runtimeRequestException); @@ -287,7 +286,7 @@ public abstract class AbstractClientConnection { * * @param delay Delay, in nanoseconds */ - @GuardedBy("lock") + @Holding("lock") private void scheduleTimer(final long delay) { if (haveTimer) { LOG.debug("{}: timer already scheduled on {}", context.persistenceId(), this); @@ -444,7 +443,7 @@ public abstract class AbstractClientConnection { } } - @GuardedBy("lock") + @Holding("lock") private void lockedPoison(final RequestException cause) { poisoned = enrichPoison(cause); queue.poison(cause); diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AveragingProgressTracker.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AveragingProgressTracker.java index 919aaf8bf8..965fad150d 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AveragingProgressTracker.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AveragingProgressTracker.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.access.client; import java.util.concurrent.TimeUnit; -import javax.annotation.concurrent.NotThreadSafe; /** * A ProgressTracker subclass which uses {@code ticksWorkedPerClosedTask} to compute delays. @@ -24,9 +23,11 @@ import javax.annotation.concurrent.NotThreadSafe; *

On the other hand, there is no delay when number of open tasks is half the limit or less, * in order to prevent backend from running out of tasks while there may be waiting frontend threads. * + *

+ * This class is NOT thread-safe. + * * @author Vratko Polak */ -@NotThreadSafe final class AveragingProgressTracker extends ProgressTracker { private static final long DEFAULT_TICKS_PER_TASK = TimeUnit.MILLISECONDS.toNanos(500); diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorBehavior.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorBehavior.java index 53c6bd92b1..14ca1ef38c 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorBehavior.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorBehavior.java @@ -18,7 +18,7 @@ import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.Holding; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.commands.NotLeaderException; @@ -301,7 +301,7 @@ public abstract class ClientActorBehavior extends * @param newConn New connection * @return ConnectionConnectCohort which will be used to complete the process of bringing the connection up. */ - @GuardedBy("connectionsLock") + @Holding("connectionsLock") protected abstract @NonNull ConnectionConnectCohort connectionUp(@NonNull ConnectedClientConnection newConn); private void backendConnectFinished(final Long shard, final AbstractClientConnection oldConn, diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorContext.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorContext.java index f85e8e244c..0864da10b0 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorContext.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorContext.java @@ -16,7 +16,6 @@ import akka.actor.Scheduler; import com.google.common.annotations.Beta; import com.google.common.base.Ticker; import java.util.concurrent.TimeUnit; -import javax.annotation.concurrent.ThreadSafe; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; import org.opendaylight.controller.cluster.common.actor.Dispatchers; @@ -32,12 +31,11 @@ import scala.concurrent.duration.FiniteDuration; *

* Time-keeping in a client actor is based on monotonic time. The precision of this time can be expected to be the * same as {@link System#nanoTime()}, but it is not tied to that particular clock. Actor clock is exposed as - * a {@link Ticker}, which can be obtained via {@link #ticker()}. + * a {@link Ticker}, which can be obtained via {@link #ticker()}. This class is thread-safe. * * @author Robert Varga */ @Beta -@ThreadSafe public class ClientActorContext extends AbstractClientActorContext implements Identifiable { private final ExecutionContext executionContext; private final ClientIdentifier identifier; diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectedClientConnection.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectedClientConnection.java index c540142157..8a5af45d15 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectedClientConnection.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectedClientConnection.java @@ -8,11 +8,9 @@ package org.opendaylight.controller.cluster.access.client; import com.google.common.annotations.Beta; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.concepts.RequestException; @Beta -@NotThreadSafe public final class ConnectedClientConnection extends AbstractReceivingClientConnection { ConnectedClientConnection(final AbstractClientConnection oldConnection, final T newBackend) { diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ProgressTracker.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ProgressTracker.java index b4fb3264d1..fed9d4c5d3 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ProgressTracker.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ProgressTracker.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.access.client; import com.google.common.base.Preconditions; -import javax.annotation.concurrent.NotThreadSafe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,7 +49,6 @@ import org.slf4j.LoggerFactory; * @author Vratko Polak */ // TODO: Would bulk methods be less taxing than a loop of single task calls? -@NotThreadSafe abstract class ProgressTracker { private static final Logger LOG = LoggerFactory.getLogger(ProgressTracker.class); diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/TransmitQueue.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/TransmitQueue.java index 0313a72a83..be14d059ce 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/TransmitQueue.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/TransmitQueue.java @@ -18,7 +18,6 @@ import java.util.Deque; import java.util.Iterator; import java.util.Optional; import java.util.Queue; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.concepts.Request; import org.opendaylight.controller.cluster.access.concepts.RequestEnvelope; import org.opendaylight.controller.cluster.access.concepts.RequestException; @@ -55,7 +54,6 @@ import org.slf4j.LoggerFactory; * * @author Robert Varga */ -@NotThreadSafe abstract class TransmitQueue { static final class Halted extends TransmitQueue { // For ConnectingClientConnection. @@ -79,7 +77,7 @@ abstract class TransmitQueue { } @Override - void preComplete(ResponseEnvelope envelope) { + void preComplete(final ResponseEnvelope envelope) { } } @@ -135,7 +133,7 @@ abstract class TransmitQueue { } @Override - void preComplete(ResponseEnvelope envelope) { + void preComplete(final ResponseEnvelope envelope) { if (envelope.getTxSequence() == currentSlicedEnvSequenceId) { // Slicing completed for the prior request - clear the cached sequence id field to enable subsequent // requests to be transmitted. diff --git a/opendaylight/md-sal/mdsal-artifacts/pom.xml b/opendaylight/md-sal/mdsal-artifacts/pom.xml index 51aaca2e3a..972cab3f38 100644 --- a/opendaylight/md-sal/mdsal-artifacts/pom.xml +++ b/opendaylight/md-sal/mdsal-artifacts/pom.xml @@ -14,7 +14,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/mdsal-it-base/pom.xml b/opendaylight/md-sal/mdsal-it-base/pom.xml index ce51fc95cb..c1b55ed706 100644 --- a/opendaylight/md-sal/mdsal-it-base/pom.xml +++ b/opendaylight/md-sal/mdsal-it-base/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent bundle-parent - 4.0.9 + 5.0.0 4.0.0 diff --git a/opendaylight/md-sal/mdsal-it-parent/pom.xml b/opendaylight/md-sal/mdsal-it-parent/pom.xml index 12f99b1093..fcffcff446 100644 --- a/opendaylight/md-sal/mdsal-it-parent/pom.xml +++ b/opendaylight/md-sal/mdsal-it-parent/pom.xml @@ -13,7 +13,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent bundle-parent - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/closetracker/impl/CloseTrackedRegistry.java b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/closetracker/impl/CloseTrackedRegistry.java index 7f99824601..13cf149aee 100644 --- a/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/closetracker/impl/CloseTrackedRegistry.java +++ b/opendaylight/md-sal/mdsal-trace/dom-impl/src/main/java/org/opendaylight/controller/md/sal/trace/closetracker/impl/CloseTrackedRegistry.java @@ -20,14 +20,12 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentSkipListSet; -import javax.annotation.concurrent.ThreadSafe; /** - * Registry of {@link CloseTracked} instances. + * Registry of {@link CloseTracked} instances. This class is thread-safe. * * @author Michael Vorburger.ch */ -@ThreadSafe public class CloseTrackedRegistry> { private final Object anchor; diff --git a/opendaylight/md-sal/mdsal-trace/features/features-mdsal-trace/pom.xml b/opendaylight/md-sal/mdsal-trace/features/features-mdsal-trace/pom.xml index 652f7a0fd8..c4de97a75a 100644 --- a/opendaylight/md-sal/mdsal-trace/features/features-mdsal-trace/pom.xml +++ b/opendaylight/md-sal/mdsal-trace/features/features-mdsal-trace/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.odlparent feature-repo-parent - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/mdsal-trace/features/odl-mdsal-trace/pom.xml b/opendaylight/md-sal/mdsal-trace/features/odl-mdsal-trace/pom.xml index a71bac95d3..2ba3e8f8df 100644 --- a/opendaylight/md-sal/mdsal-trace/features/odl-mdsal-trace/pom.xml +++ b/opendaylight/md-sal/mdsal-trace/features/odl-mdsal-trace/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.odlparent single-feature-parent - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/mdsal-trace/features/pom.xml b/opendaylight/md-sal/mdsal-trace/features/pom.xml index 85cd30a86c..6b91fddd54 100644 --- a/opendaylight/md-sal/mdsal-trace/features/pom.xml +++ b/opendaylight/md-sal/mdsal-trace/features/pom.xml @@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/mdsal-trace/pom.xml b/opendaylight/md-sal/mdsal-trace/pom.xml index f27ef1a337..b8f172b8c4 100644 --- a/opendaylight/md-sal/mdsal-trace/pom.xml +++ b/opendaylight/md-sal/mdsal-trace/pom.xml @@ -11,7 +11,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/pom.xml b/opendaylight/md-sal/pom.xml index 7e07837c28..e5bbfa750c 100644 --- a/opendaylight/md-sal/pom.xml +++ b/opendaylight/md-sal/pom.xml @@ -5,7 +5,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/sal-binding-dom-it/pom.xml b/opendaylight/md-sal/sal-binding-dom-it/pom.xml index f79e7894da..0fe38b3b04 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/pom.xml +++ b/opendaylight/md-sal/sal-binding-dom-it/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.odlparent odlparent - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/MessageTracker.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/MessageTracker.java index 65cef56a2b..d8f2eaa9c8 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/MessageTracker.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/common/actor/MessageTracker.java @@ -20,7 +20,6 @@ import com.google.common.base.Ticker; import com.google.common.collect.ImmutableList; import java.util.LinkedList; import java.util.List; -import javax.annotation.concurrent.NotThreadSafe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,9 +52,11 @@ import org.slf4j.LoggerFactory; * } * * + * + *

+ * This class is NOT thread-safe. */ @Beta -@NotThreadSafe public final class MessageTracker { public abstract static class Context implements AutoCloseable { Context() { diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/util/AbstractDataTreeModificationCursor.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/util/AbstractDataTreeModificationCursor.java index ff20c0f631..74b55cf32d 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/util/AbstractDataTreeModificationCursor.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/util/AbstractDataTreeModificationCursor.java @@ -13,7 +13,6 @@ import static com.google.common.base.Verify.verifyNotNull; import com.google.common.annotations.Beta; import java.util.Optional; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -21,12 +20,11 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification /** * Abstract {@link DataTreeModificationCursor} which tracks the current path. Subclasses can get the current path - * via {@link #current()}. + * via {@link #current()}. This class is NOT thread-safe. * * @author Thomas Pantelis */ @Beta -@NotThreadSafe public abstract class AbstractDataTreeModificationCursor implements DataTreeModificationCursor { private YangInstanceIdentifier current = YangInstanceIdentifier.EMPTY; diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/io/FileBackedOutputStream.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/io/FileBackedOutputStream.java index 353a25156c..970b06f5c2 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/io/FileBackedOutputStream.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/io/FileBackedOutputStream.java @@ -22,8 +22,8 @@ import java.io.OutputStream; import java.nio.file.Files; import java.util.Iterator; import java.util.Set; -import javax.annotation.concurrent.GuardedBy; -import javax.annotation.concurrent.ThreadSafe; +import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.lock.qual.Holding; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.slf4j.Logger; @@ -35,7 +35,6 @@ import org.slf4j.LoggerFactory; * * @author Thomas Pantelis */ -@ThreadSafe public class FileBackedOutputStream extends OutputStream { private static final Logger LOG = LoggerFactory.getLogger(FileBackedOutputStream.class); @@ -77,7 +76,7 @@ public class FileBackedOutputStream extends OutputStream { * @param fileDirectory the directory in which to create the file if needed. If null, the default temp file * location is used. */ - public FileBackedOutputStream(int fileThreshold, @Nullable String fileDirectory) { + public FileBackedOutputStream(final int fileThreshold, @Nullable final String fileDirectory) { this.fileThreshold = fileThreshold; this.fileDirectory = fileDirectory; } @@ -118,19 +117,19 @@ public class FileBackedOutputStream extends OutputStream { @Override @SuppressFBWarnings(value = "VO_VOLATILE_INCREMENT", justification = "Findbugs erroneously complains that the " + "increment of count needs to be atomic even though it is inside a synchronized block.") - public synchronized void write(int value) throws IOException { + public synchronized void write(final int value) throws IOException { possiblySwitchToFile(1); out.write(value); count++; } @Override - public synchronized void write(byte[] bytes) throws IOException { + public synchronized void write(final byte[] bytes) throws IOException { write(bytes, 0, bytes.length); } @Override - public synchronized void write(byte[] bytes, int off, int len) throws IOException { + public synchronized void write(final byte[] bytes, final int off, final int len) throws IOException { possiblySwitchToFile(len); out.write(bytes, off, len); count += len; @@ -180,7 +179,7 @@ public class FileBackedOutputStream extends OutputStream { } } - @GuardedBy("this") + @Holding("this") private void closeQuietly() { try { close(); @@ -192,8 +191,8 @@ public class FileBackedOutputStream extends OutputStream { /** * Checks if writing {@code len} bytes would go over threshold, and switches to file buffering if so. */ - @GuardedBy("this") - private void possiblySwitchToFile(int len) throws IOException { + @Holding("this") + private void possiblySwitchToFile(final int len) throws IOException { if (out == null) { throw new IOException("Stream already closed"); } @@ -233,7 +232,7 @@ public class FileBackedOutputStream extends OutputStream { } } - private static void deleteFile(File file) { + private static void deleteFile(final File file) { if (!file.delete()) { LOG.warn("Could not delete temp file {}", file); } @@ -258,7 +257,7 @@ public class FileBackedOutputStream extends OutputStream { private static class Cleanup extends FinalizablePhantomReference { private final File file; - Cleanup(FileBackedOutputStream referent, File file) { + Cleanup(final FileBackedOutputStream referent, final File file) { super(referent, REFERENCE_QUEUE); this.file = file; diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/messaging/AssembledMessageState.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/messaging/AssembledMessageState.java index 16c73c7155..842fdafed4 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/messaging/AssembledMessageState.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/messaging/AssembledMessageState.java @@ -12,7 +12,6 @@ import com.google.common.io.ByteSource; import java.io.BufferedOutputStream; import java.io.IOException; import java.util.Arrays; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.io.FileBackedOutputStream; import org.opendaylight.controller.cluster.io.FileBackedOutputStreamFactory; import org.opendaylight.yangtools.concepts.Identifier; @@ -20,11 +19,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Maintains the state of an assembled message. + * Maintains the state of an assembled message. This class is NOT thread-safe. * * @author Thomas Pantelis */ -@NotThreadSafe public class AssembledMessageState implements AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(AssembledMessageState.class); diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/messaging/SlicedMessageState.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/messaging/SlicedMessageState.java index 8c3cb51713..5be3fa46d2 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/messaging/SlicedMessageState.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/messaging/SlicedMessageState.java @@ -12,19 +12,17 @@ import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.function.Consumer; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.io.FileBackedOutputStream; import org.opendaylight.yangtools.concepts.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Maintains the state of a sliced message. + * Maintains the state of a sliced message. This class is NOT thread-safe. * * @author Thomas Pantelis * @see MessageSlicer */ -@NotThreadSafe public class SlicedMessageState implements AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(SlicedMessageState.class); @@ -153,7 +151,7 @@ public class SlicedMessageState implements AutoCloseable { * @param index the slice index to test * @return true if the index is the last slice, false otherwise */ - public boolean isLastSlice(int index) { + public boolean isLastSlice(final int index) { return totalSlices == index; } diff --git a/opendaylight/md-sal/sal-clustering-config/pom.xml b/opendaylight/md-sal/sal-clustering-config/pom.xml index 52c413f673..4eed84252b 100644 --- a/opendaylight/md-sal/sal-clustering-config/pom.xml +++ b/opendaylight/md-sal/sal-clustering-config/pom.xml @@ -12,7 +12,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/opendaylight/md-sal/sal-distributed-datastore/pom.xml b/opendaylight/md-sal/sal-distributed-datastore/pom.xml index 19bd47553a..c10cbca772 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/pom.xml +++ b/opendaylight/md-sal/sal-distributed-datastore/pom.xml @@ -26,11 +26,6 @@ - - org.mockito - mockito-core - test - org.slf4j slf4j-simple diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedTransactionChain.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedTransactionChain.java index 6ae7e51c54..3893dbd21f 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedTransactionChain.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedTransactionChain.java @@ -7,12 +7,13 @@ */ package org.opendaylight.controller.cluster.databroker; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.WeakHashMap; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.databroker.actors.dds.AbstractClientHandle; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientLocalHistory; @@ -40,7 +41,7 @@ final class ClientBackedTransactionChain implements DOMStoreTransactionChain { private final boolean debugAllocation; ClientBackedTransactionChain(final ClientLocalHistory history, final boolean debugAllocation) { - this.history = Preconditions.checkNotNull(history); + this.history = requireNonNull(history); this.debugAllocation = debugAllocation; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractClientHistory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractClientHistory.java index 542cc2dbaf..4429230796 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractClientHistory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractClientHistory.java @@ -7,8 +7,11 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; -import com.google.common.base.Preconditions; -import com.google.common.base.Verify; +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkState; +import static com.google.common.base.Verify.verifyNotNull; +import static java.util.Objects.requireNonNull; + import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -16,7 +19,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLongFieldUpdater; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import java.util.concurrent.locks.StampedLock; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.access.client.AbstractClientConnection; import org.opendaylight.controller.cluster.access.client.ConnectedClientConnection; import org.opendaylight.controller.cluster.access.client.ConnectionEntry; @@ -69,9 +72,9 @@ public abstract class AbstractClientHistory extends LocalAbortable implements Id private volatile State state = State.IDLE; AbstractClientHistory(final AbstractDataStoreClientBehavior client, final LocalHistoryIdentifier identifier) { - this.client = Preconditions.checkNotNull(client); - this.identifier = Preconditions.checkNotNull(identifier); - Preconditions.checkArgument(identifier.getCookie() == 0); + this.client = requireNonNull(client); + this.identifier = requireNonNull(identifier); + checkArgument(identifier.getCookie() == 0); } final State state() { @@ -80,14 +83,14 @@ public abstract class AbstractClientHistory extends LocalAbortable implements Id final void updateState(final State expected, final State next) { final boolean success = STATE_UPDATER.compareAndSet(this, expected, next); - Preconditions.checkState(success, "Race condition detected, state changed from %s to %s", expected, state); + checkState(success, "Race condition detected, state changed from %s to %s", expected, state); LOG.debug("Client history {} changed state from {} to {}", this, expected, next); } final synchronized void doClose() { final State local = state; if (local != State.CLOSED) { - Preconditions.checkState(local == State.IDLE, "Local history %s has an open transaction", this); + checkState(local == State.IDLE, "Local history %s has an open transaction", this); histories.values().forEach(ProxyHistory::close); updateState(local, State.CLOSED); } @@ -243,8 +246,7 @@ public abstract class AbstractClientHistory extends LocalAbortable implements Id } final AbstractTransactionCommitCohort previous = readyTransactions.putIfAbsent(txId, cohort); - Preconditions.checkState(previous == null, "Duplicate cohort %s for transaction %s, already have %s", - cohort, txId, previous); + checkState(previous == null, "Duplicate cohort %s for transaction %s, already have %s", cohort, txId, previous); LOG.debug("Local history {} readied transaction {}", this, txId); return cohort; @@ -299,7 +301,7 @@ public abstract class AbstractClientHistory extends LocalAbortable implements Id return null; } - final ProxyReconnectCohort proxy = Verify.verifyNotNull(oldProxy.startReconnect(newConn)); + final ProxyReconnectCohort proxy = verifyNotNull(oldProxy.startReconnect(newConn)); return new HistoryReconnectCohort() { @Override ProxyReconnectCohort getProxy() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java index e1919d1bb6..0b9f2b173a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java @@ -7,10 +7,13 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; +import static com.google.common.base.Preconditions.checkState; +import static com.google.common.base.Verify.verify; +import static com.google.common.base.Verify.verifyNotNull; +import static java.util.Objects.requireNonNull; + import akka.actor.ActorRef; import com.google.common.base.MoreObjects; -import com.google.common.base.Preconditions; -import com.google.common.base.Verify; import com.google.common.collect.Iterables; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; @@ -23,8 +26,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import java.util.function.Consumer; -import javax.annotation.concurrent.GuardedBy; -import javax.annotation.concurrent.NotThreadSafe; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.client.ConnectionEntry; @@ -67,9 +69,8 @@ import org.slf4j.LoggerFactory; abstract class AbstractProxyTransaction implements Identifiable { /** * Marker object used instead of read-type of requests, which are satisfied only once. This has a lower footprint - * and allows compressing multiple requests into a single entry. + * and allows compressing multiple requests into a single entry. This class is not thread-safe. */ - @NotThreadSafe private static final class IncrementSequence { private final long sequence; private long delta = 0; @@ -99,7 +100,7 @@ abstract class AbstractProxyTransaction implements Identifiable req) { - successfulRequests.add(Verify.verifyNotNull(req)); + successfulRequests.add(verifyNotNull(req)); } final void recordFinishedRequest(final Response response) { @@ -500,7 +501,7 @@ abstract class AbstractProxyTransaction implements Identifiable ret = SettableFuture.create(); - sendRequest(Verify.verifyNotNull(commitRequest(false)), t -> { + sendRequest(verifyNotNull(commitRequest(false)), t -> { if (t instanceof TransactionCommitSuccess) { ret.set(Boolean.TRUE); } else if (t instanceof RequestFailure) { @@ -536,7 +537,7 @@ abstract class AbstractProxyTransaction implements Identifiable req = Verify.verifyNotNull(commitRequest(true)); + final TransactionRequest req = verifyNotNull(commitRequest(true)); sendRequest(req, t -> { if (t instanceof TransactionCanCommitSuccess) { @@ -662,7 +663,7 @@ abstract class AbstractProxyTransaction implements Identifiable) obj, resp -> { /*NOOP*/ }, now); } else { - Verify.verify(obj instanceof IncrementSequence); + verify(obj instanceof IncrementSequence); final IncrementSequence increment = (IncrementSequence) obj; successor.doReplayRequest(new IncrementTransactionSequenceRequest(getIdentifier(), increment.getSequence(), localActor(), isSnapshotOnly(), @@ -714,7 +715,7 @@ abstract class AbstractProxyTransaction implements Identifiable req = e.getRequest(); if (getIdentifier().equals(req.getTarget())) { - Verify.verify(req instanceof TransactionRequest, "Unhandled request %s", req); + verify(req instanceof TransactionRequest, "Unhandled request %s", req); LOG.debug("Replaying queued request {} to successor {}", req, successor); successor.doReplayRequest((TransactionRequest) req, e.getCallback(), e.getEnqueuedTicks()); it.remove(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractShardBackendResolver.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractShardBackendResolver.java index e32d1bf1cf..ca784fed7a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractShardBackendResolver.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractShardBackendResolver.java @@ -21,8 +21,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Consumer; -import javax.annotation.concurrent.GuardedBy; -import javax.annotation.concurrent.ThreadSafe; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.ABIVersion; @@ -49,9 +48,11 @@ import scala.compat.java8.FutureConverters; * shard is assigned a single cookie and this mapping is stored in a bidirectional map. Information about corresponding * shard leader is resolved via {@link ActorUtils}. The product of resolution is {@link ShardBackendInfo}. * + *

+ * This class is thread-safe. + * * @author Robert Varga */ -@ThreadSafe abstract class AbstractShardBackendResolver extends BackendInfoResolver { static final class ShardState { private final CompletionStage stage; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java index 6679725da2..143cc8bf60 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java @@ -13,7 +13,6 @@ import com.google.common.base.Preconditions; import com.google.common.util.concurrent.FluentFuture; import java.util.Optional; import java.util.function.Consumer; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest; @@ -41,7 +40,7 @@ import org.slf4j.LoggerFactory; /** * An {@link AbstractProxyTransaction} for dispatching a transaction towards a shard leader which is co-located with - * the client instance. + * the client instance. This class is NOT thread-safe. * *

* It requires a {@link DataTreeSnapshot}, which is used to instantiated a new {@link DataTreeModification}. Operations @@ -54,7 +53,6 @@ import org.slf4j.LoggerFactory; * * @author Robert Varga */ -@NotThreadSafe abstract class LocalProxyTransaction extends AbstractProxyTransaction { private static final Logger LOG = LoggerFactory.getLogger(LocalProxyTransaction.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadOnlyProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadOnlyProxyTransaction.java index ee5889da76..f9de02d991 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadOnlyProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadOnlyProxyTransaction.java @@ -7,11 +7,12 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; -import com.google.common.base.Preconditions; -import com.google.common.base.Verify; +import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Verify.verify; +import static java.util.Objects.requireNonNull; + import java.util.Optional; import java.util.function.Consumer; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.commands.CommitLocalTransactionRequest; import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequest; import org.opendaylight.controller.cluster.access.commands.PersistenceProtocol; @@ -22,11 +23,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; /** - * A read-only specialization of {@link LocalProxyTransaction}. + * A read-only specialization of {@link LocalProxyTransaction}. This class is NOT thread-safe. * * @author Robert Varga */ -@NotThreadSafe final class LocalReadOnlyProxyTransaction extends LocalProxyTransaction { private final DataTreeSnapshot snapshot; @@ -34,7 +34,7 @@ final class LocalReadOnlyProxyTransaction extends LocalProxyTransaction { LocalReadOnlyProxyTransaction(final ProxyHistory parent, final TransactionIdentifier identifier, final DataTreeSnapshot snapshot) { super(parent, identifier, false); - this.snapshot = Preconditions.checkNotNull(snapshot); + this.snapshot = requireNonNull(snapshot); } LocalReadOnlyProxyTransaction(final ProxyHistory parent, final TransactionIdentifier identifier) { @@ -50,7 +50,7 @@ final class LocalReadOnlyProxyTransaction extends LocalProxyTransaction { @Override DataTreeSnapshot readOnlyView() { - return Preconditions.checkNotNull(snapshot, "Transaction %s is DONE", getIdentifier()); + return checkNotNull(snapshot, "Transaction %s is DONE", getIdentifier()); } @Override @@ -94,9 +94,9 @@ final class LocalReadOnlyProxyTransaction extends LocalProxyTransaction { } private static void commonModifyTransactionRequest(final ModifyTransactionRequest request) { - Verify.verify(request.getModifications().isEmpty()); + verify(request.getModifications().isEmpty()); final PersistenceProtocol protocol = request.getPersistenceProtocol().get(); - Verify.verify(protocol == PersistenceProtocol.ABORT); + verify(protocol == PersistenceProtocol.ABORT); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java index 4f0290ea0c..c32297f0a4 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java @@ -13,7 +13,6 @@ import java.util.Optional; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Supplier; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest; @@ -46,7 +45,7 @@ import org.slf4j.LoggerFactory; /** * An {@link AbstractProxyTransaction} for dispatching a transaction towards a shard leader which is co-located with - * the client instance. + * the client instance. This class is NOT thread-safe. * *

* It requires a {@link DataTreeSnapshot}, which is used to instantiated a new {@link DataTreeModification}. Operations @@ -59,7 +58,6 @@ import org.slf4j.LoggerFactory; * * @author Robert Varga */ -@NotThreadSafe final class LocalReadWriteProxyTransaction extends LocalProxyTransaction { private static final Logger LOG = LoggerFactory.getLogger(LocalReadWriteProxyTransaction.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java index d360508abc..74aca03e86 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ModuleShardBackendResolver.java @@ -20,8 +20,7 @@ import java.util.concurrent.CompletionStage; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.TimeUnit; -import javax.annotation.concurrent.GuardedBy; -import javax.annotation.concurrent.ThreadSafe; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.access.client.BackendInfoResolver; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; import org.opendaylight.controller.cluster.datastore.shardmanager.RegisterForShardAvailabilityChanges; @@ -38,9 +37,11 @@ import scala.concurrent.Future; * shard is assigned a single cookie and this mapping is stored in a bidirectional map. Information about corresponding * shard leader is resolved via {@link ActorUtils}. The product of resolution is {@link ShardBackendInfo}. * + *

+ * This class is thread-safe. + * * @author Robert Varga */ -@ThreadSafe final class ModuleShardBackendResolver extends AbstractShardBackendResolver { private static final Logger LOG = LoggerFactory.getLogger(ModuleShardBackendResolver.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ProxyHistory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ProxyHistory.java index ad105c31f2..25e722282c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ProxyHistory.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ProxyHistory.java @@ -20,7 +20,8 @@ import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.function.Consumer; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.lock.qual.Holding; import org.opendaylight.controller.cluster.access.client.AbstractClientConnection; import org.opendaylight.controller.cluster.access.client.ClientActorContext; import org.opendaylight.controller.cluster.access.client.ConnectedClientConnection; @@ -216,7 +217,7 @@ abstract class ProxyHistory implements Identifiable { return identifier; } - @GuardedBy("lock") + @Holding("lock") @Override void replayRequests(final Collection previousEntries) { // First look for our Create message @@ -491,12 +492,12 @@ abstract class ProxyHistory implements Identifiable { LOG.debug("Proxy {} purge completed with {}", this, response); } - @GuardedBy("lock") + @Holding("lock") void onTransactionAborted(final AbstractProxyTransaction tx) { // No-op for most implementations } - @GuardedBy("lock") + @Holding("lock") void onTransactionCompleted(final AbstractProxyTransaction tx) { // No-op for most implementations } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ShardBackendInfo.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ShardBackendInfo.java index fda7fc6122..c23fc3fd7d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ShardBackendInfo.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ShardBackendInfo.java @@ -12,7 +12,6 @@ import com.google.common.base.MoreObjects.ToStringHelper; import com.google.common.base.Preconditions; import com.google.common.primitives.UnsignedLong; import java.util.Optional; -import javax.annotation.concurrent.ThreadSafe; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.client.BackendInfo; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; @@ -20,11 +19,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; /** * Combined backend tracking. Aside from usual {@link BackendInfo}, this object also tracks the cookie assigned - * to the shard. This assignment remains constant for as long as the client is not restarted. + * to the shard. This assignment remains constant for as long as the client is not restarted. This class is thread-safe. * * @author Robert Varga */ -@ThreadSafe final class ShardBackendInfo extends BackendInfo { private final Optional dataTree; private final UnsignedLong cookie; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/SimpleShardBackendResolver.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/SimpleShardBackendResolver.java index e086f08630..012e068a81 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/SimpleShardBackendResolver.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/SimpleShardBackendResolver.java @@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; import java.util.concurrent.CompletionStage; -import javax.annotation.concurrent.ThreadSafe; import org.opendaylight.controller.cluster.access.client.BackendInfoResolver; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; @@ -21,11 +20,11 @@ import org.slf4j.LoggerFactory; /** * {@link BackendInfoResolver} implementation for static shard configuration based on ShardManager. Unlike the full * {@link ModuleShardBackendResolver}, this resolver is used in situations where the client corresponds exactly to one - * backend shard, e.g. there is only one fixed cookie assigned and the operation path is not consulted at all. + * backend shard, e.g. there is only one fixed cookie assigned and the operation path is not consulted at all. This + * class is thread-safe. * * @author Robert Varga */ -@ThreadSafe final class SimpleShardBackendResolver extends AbstractShardBackendResolver { private static final Logger LOG = LoggerFactory.getLogger(SimpleShardBackendResolver.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/VotingFuture.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/VotingFuture.java index 01298dfabf..f9fffea025 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/VotingFuture.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/VotingFuture.java @@ -14,7 +14,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.lock.qual.Holding; /** * An {@link AbstractFuture} implementation which requires a certain number of votes before it completes. If all votes @@ -73,7 +74,7 @@ class VotingFuture extends AbstractFuture { return votes == 0; } - @GuardedBy("failures") + @Holding("failures") private void resolveResult() { final Iterator it = failures.iterator(); if (!it.hasNext()) { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractShardDataTreeNotificationPublisherActorProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractShardDataTreeNotificationPublisherActorProxy.java index b4cdb81c5a..3d1bebeb92 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractShardDataTreeNotificationPublisherActorProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractShardDataTreeNotificationPublisherActorProxy.java @@ -11,7 +11,6 @@ import akka.actor.ActorContext; import akka.actor.ActorRef; import akka.actor.Props; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.common.actor.Dispatchers; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.slf4j.Logger; @@ -19,11 +18,10 @@ import org.slf4j.LoggerFactory; /** * Abstract base class for a ShardDataTreeNotificationPublisher that offloads the generation and publication - * of data tree notifications to an actor. + * of data tree notifications to an actor. This class is NOT thread-safe. * * @author Thomas Pantelis */ -@NotThreadSafe abstract class AbstractShardDataTreeNotificationPublisherActorProxy implements ShardDataTreeNotificationPublisher { @SuppressFBWarnings("SLF4J_LOGGER_SHOULD_BE_PRIVATE") protected final Logger log = LoggerFactory.getLogger(getClass()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractShardDataTreeTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractShardDataTreeTransaction.java index cde7da28f1..9412d47b51 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractShardDataTreeTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/AbstractShardDataTreeTransaction.java @@ -9,18 +9,16 @@ package org.opendaylight.controller.cluster.datastore; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.persisted.AbortTransactionPayload; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; /** - * Abstract base for transactions running on SharrdDataTree. + * Abstract base for transactions running on SharrdDataTree. This class is NOT thread-safe. * * @param Backing transaction type. */ -@NotThreadSafe abstract class AbstractShardDataTreeTransaction implements Identifiable { private final ShardDataTreeTransactionParent parent; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxy.java index adf8b1ad27..6ead7c630b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxy.java @@ -14,7 +14,7 @@ import akka.actor.ActorSelection; import akka.actor.PoisonPill; import akka.dispatch.OnComplete; import com.google.common.annotations.VisibleForTesting; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.datastore.exceptions.LocalShardNotFoundException; import org.opendaylight.controller.cluster.datastore.messages.CloseDataTreeNotificationListenerRegistration; import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListener; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorRegistry.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorRegistry.java index 1dd0f2856b..2859671ac6 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorRegistry.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortActorRegistry.java @@ -21,7 +21,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.Executor; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate; @@ -40,10 +39,9 @@ import org.slf4j.LoggerFactory; /** * Registry of user commit cohorts, which is responsible for handling registration and calculation - * of affected cohorts based on {@link DataTreeCandidate}. + * of affected cohorts based on {@link DataTreeCandidate}. This class is NOT thread-safe. * */ -@NotThreadSafe class DataTreeCohortActorRegistry extends AbstractRegistrationTree { private static final Logger LOG = LoggerFactory.getLogger(DataTreeCohortActorRegistry.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortRegistrationProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortRegistrationProxy.java index 45b0f76484..0b6f143583 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortRegistrationProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeCohortRegistrationProxy.java @@ -14,7 +14,7 @@ import akka.dispatch.OnComplete; import akka.pattern.Patterns; import akka.util.Timeout; import java.util.concurrent.TimeUnit; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.datastore.exceptions.LocalShardNotFoundException; import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohort; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContextIntrospector.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContextIntrospector.java index 579e096af7..93aee0d245 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContextIntrospector.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DatastoreContextIntrospector.java @@ -7,7 +7,8 @@ */ package org.opendaylight.controller.cluster.datastore; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkArgument; + import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.primitives.Primitives; @@ -28,9 +29,9 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import javax.annotation.concurrent.GuardedBy; import org.apache.commons.lang3.StringUtils; import org.apache.commons.text.WordUtils; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.datastore.DatastoreContext.Builder; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; @@ -134,9 +135,9 @@ public class DatastoreContextIntrospector { @SuppressWarnings("checkstyle:IllegalCatch") private static void processDataStoreProperty(final String name, final Class propertyType, final Method readMethod) { - Preconditions.checkArgument(BUILDER_SETTERS.containsKey(name), String.format( + checkArgument(BUILDER_SETTERS.containsKey(name), "DataStoreProperties property \"%s\" does not have corresponding setter in DatastoreContext.Builder", - name)); + name); try { processPropertyType(propertyType); DATA_STORE_PROP_INFO.put(name, new SimpleImmutableEntry<>(propertyType, readMethod)); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java index e17e3faae9..7865fdf478 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DefaultShardDataTreeChangeListenerPublisher.java @@ -10,7 +10,6 @@ package org.opendaylight.controller.cluster.datastore; import com.google.common.base.Optional; import java.util.Collection; import java.util.function.Consumer; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.mdsal.dom.spi.AbstractDOMDataTreeChangeListenerRegistration; import org.opendaylight.mdsal.dom.spi.store.AbstractDOMStoreTreeChangePublisher; @@ -22,11 +21,10 @@ import org.slf4j.LoggerFactory; /** * Default implementation of ShardDataTreeChangeListenerPublisher that directly generates and publishes - * notifications for DataTreeChangeListeners. + * notifications for DataTreeChangeListeners. This class is NOT thread-safe. * * @author Thomas Pantelis */ -@NotThreadSafe final class DefaultShardDataTreeChangeListenerPublisher extends AbstractDOMStoreTreeChangePublisher implements ShardDataTreeChangeListenerPublisher { private static final Logger LOG = LoggerFactory.getLogger(DefaultShardDataTreeChangeListenerPublisher.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataTreeChangeListenerRegistration.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataTreeChangeListenerRegistration.java index 02cfda3609..ef26e94ee9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataTreeChangeListenerRegistration.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DelayedDataTreeChangeListenerRegistration.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorRef; import java.util.EventListener; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListener; import org.opendaylight.yangtools.concepts.ListenerRegistration; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendClientMetadataBuilder.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendClientMetadataBuilder.java index 763b2e92cd..fbaf76fbc5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendClientMetadataBuilder.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendClientMetadataBuilder.java @@ -14,7 +14,6 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.Collections2; import java.util.HashMap; import java.util.Map; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; @@ -27,7 +26,9 @@ import org.opendaylight.yangtools.concepts.Identifiable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@NotThreadSafe +/** + * This class is NOT thread-safe. + */ final class FrontendClientMetadataBuilder implements Builder, Identifiable { private static final Logger LOG = LoggerFactory.getLogger(FrontendClientMetadataBuilder.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendMetadata.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendMetadata.java index 9f74a8e940..969accd583 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendMetadata.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendMetadata.java @@ -12,7 +12,6 @@ import com.google.common.collect.Collections2; import com.google.common.collect.Maps; import java.util.HashMap; import java.util.Map; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; import org.opendaylight.controller.cluster.access.concepts.FrontendIdentifier; @@ -26,11 +25,10 @@ import org.slf4j.LoggerFactory; /** * Frontend state as observed by a shard follower. This class is responsible for maintaining metadata state * so that this can be used to seed {@link LeaderFrontendState} with proper state so that the frontend/backend - * conversation can continue where it left off. + * conversation can continue where it left off. This class is NOT thread-safe. * * @author Robert Varga */ -@NotThreadSafe final class FrontendMetadata extends ShardDataTreeMetadata { private static final Logger LOG = LoggerFactory.getLogger(FrontendMetadata.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java index 16e956f715..512e9f4957 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java @@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; import java.util.Optional; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.commands.ExistsTransactionRequest; import org.opendaylight.controller.cluster.access.commands.ExistsTransactionSuccess; import org.opendaylight.controller.cluster.access.commands.ModifyTransactionRequest; @@ -29,11 +28,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Read-only frontend transaction state as observed by the shard leader. + * Read-only frontend transaction state as observed by the shard leader. This class is NOT thread-safe. * * @author Robert Varga */ -@NotThreadSafe final class FrontendReadOnlyTransaction extends FrontendTransaction { private static final Logger LOG = LoggerFactory.getLogger(FrontendReadOnlyTransaction.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java index f24d0ee8a8..777490b40c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java @@ -14,7 +14,6 @@ import com.google.common.primitives.UnsignedLong; import com.google.common.util.concurrent.FutureCallback; import java.util.Collection; import java.util.Optional; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest; import org.opendaylight.controller.cluster.access.commands.CommitLocalTransactionRequest; @@ -50,11 +49,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Frontend read-write transaction state as observed by the shard leader. + * Frontend read-write transaction state as observed by the shard leader. This class is NOT thread-safe. * * @author Robert Varga */ -@NotThreadSafe final class FrontendReadWriteTransaction extends FrontendTransaction { private enum CommitStage { READY, diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendTransaction.java index b5cd5879f7..6bfd280340 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendTransaction.java @@ -13,7 +13,6 @@ import com.google.common.base.Verify; import java.util.ArrayDeque; import java.util.Optional; import java.util.Queue; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.commands.IncrementTransactionSequenceRequest; import org.opendaylight.controller.cluster.access.commands.IncrementTransactionSequenceSuccess; @@ -29,11 +28,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Frontend common transaction state as observed by the shard leader. + * Frontend common transaction state as observed by the shard leader. This class is NOT thread-safe. * * @author Robert Varga */ -@NotThreadSafe abstract class FrontendTransaction implements Identifiable { private static final Logger LOG = LoggerFactory.getLogger(FrontendTransaction.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LeaderFrontendState.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LeaderFrontendState.java index 3628efb4ac..2a1537bd28 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LeaderFrontendState.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LeaderFrontendState.java @@ -13,7 +13,6 @@ import com.google.common.base.MoreObjects; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.commands.CreateLocalHistoryRequest; import org.opendaylight.controller.cluster.access.commands.DeadHistoryException; @@ -38,11 +37,10 @@ import org.slf4j.LoggerFactory; /** * Frontend state as observed by the shard leader. This class is responsible for tracking generations and sequencing - * in the frontend/backend conversation. + * in the frontend/backend conversation. This class is NOT thread-safe. * * @author Robert Varga */ -@NotThreadSafe final class LeaderFrontendState implements Identifiable { private static final Logger LOG = LoggerFactory.getLogger(LeaderFrontendState.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java index 5ca0acba4d..d22e028663 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java @@ -40,7 +40,6 @@ import java.util.concurrent.TimeoutException; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.UnaryOperator; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; @@ -87,14 +86,12 @@ import org.slf4j.LoggerFactory; import scala.concurrent.duration.FiniteDuration; /** - * Internal shard state, similar to a DOMStore, but optimized for use in the actor system, - * e.g. it does not expose public interfaces and assumes it is only ever called from a - * single thread. + * Internal shard state, similar to a DOMStore, but optimized for use in the actor system, e.g. it does not expose + * public interfaces and assumes it is only ever called from a single thread. * *

- * This class is not part of the API contract and is subject to change at any time. + * This class is not part of the API contract and is subject to change at any time. It is NOT thread-safe. */ -@NotThreadSafe public class ShardDataTree extends ShardDataTreeTransactionParent { private static final class CommitEntry { final SimpleShardDataTreeCohort cohort; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeChangeListenerPublisherActorProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeChangeListenerPublisherActorProxy.java index f43975832d..ed4d1f87a4 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeChangeListenerPublisherActorProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeChangeListenerPublisherActorProxy.java @@ -12,19 +12,17 @@ import akka.actor.ActorRef; import akka.actor.Props; import com.google.common.base.Optional; import java.util.function.Consumer; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; /** - * Implementation of ShardDataTreeChangeListenerPublisher that offloads the generation and publication - * of data tree change notifications to an actor. + * Implementation of ShardDataTreeChangeListenerPublisher that offloads the generation and publication of data tree + * change notifications to an actor. This class is NOT thread-safe. * * @author Thomas Pantelis */ -@NotThreadSafe class ShardDataTreeChangeListenerPublisherActorProxy extends AbstractShardDataTreeNotificationPublisherActorProxy implements ShardDataTreeChangeListenerPublisher { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTransactionChain.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTransactionChain.java index a774d647d3..9406eab6b9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTransactionChain.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTransactionChain.java @@ -11,7 +11,6 @@ import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import java.util.Optional; import java.util.SortedSet; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.yangtools.concepts.Identifiable; @@ -21,9 +20,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * A transaction chain attached to a Shard. + * A transaction chain attached to a Shard. This class is NOT thread-safe. */ -@NotThreadSafe final class ShardDataTreeTransactionChain extends ShardDataTreeTransactionParent implements Identifiable { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java index 60628b032d..2facfbd1a2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionContextWrapper.java @@ -20,7 +20,7 @@ import java.util.Map.Entry; import java.util.Optional; import java.util.SortedSet; import java.util.concurrent.TimeUnit; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; import org.slf4j.Logger; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupport.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupport.java index ee786e7fc0..0c4a646efe 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupport.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipListenerSupport.java @@ -19,8 +19,8 @@ import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.stream.Collectors; -import javax.annotation.concurrent.GuardedBy; -import javax.annotation.concurrent.ThreadSafe; +import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.lock.qual.Holding; import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState; import org.opendaylight.mdsal.eos.dom.api.DOMEntity; import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipChange; @@ -29,11 +29,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Manages EntityOwnershipListener registrations and notifications for the EntityOwnershipShard. + * Manages EntityOwnershipListener registrations and notifications for the EntityOwnershipShard. This class is + * thread-safe. * * @author Thomas Pantelis */ -@ThreadSafe class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { private static final Logger LOG = LoggerFactory.getLogger(EntityOwnershipListenerSupport.class); @@ -140,7 +140,7 @@ class EntityOwnershipListenerSupport extends EntityOwnershipChangePublisher { } } - @GuardedBy("listenerLock") + @Holding("listenerLock") private void notifyListeners(final DOMEntity entity, final boolean wasOwner, final boolean isOwner, final boolean hasOwner, final Collection listenerEntries) { DOMEntityOwnershipChange changed = new DOMEntityOwnershipChange(entity, diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java index b3234766e6..7f81370a87 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardStats.java @@ -14,7 +14,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicLong; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.datastore.Shard; import org.opendaylight.controller.cluster.raft.base.messages.InitiateCaptureSnapshot; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ShardLeaderStateChanged.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ShardLeaderStateChanged.java index 0b3b6b8918..679d421eaf 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ShardLeaderStateChanged.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ShardLeaderStateChanged.java @@ -7,10 +7,11 @@ */ package org.opendaylight.controller.cluster.datastore.messages; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import java.util.Optional; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.controller.cluster.notifications.LeaderStateChanged; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; @@ -25,20 +26,19 @@ public class ShardLeaderStateChanged extends LeaderStateChanged { private final DataTree localShardDataTree; - public ShardLeaderStateChanged(@Nonnull String memberId, @Nullable String leaderId, - @Nonnull DataTree localShardDataTree, short leaderPayloadVersion) { + public ShardLeaderStateChanged(@NonNull String memberId, @Nullable String leaderId, + @NonNull DataTree localShardDataTree, short leaderPayloadVersion) { super(memberId, leaderId, leaderPayloadVersion); - this.localShardDataTree = Preconditions.checkNotNull(localShardDataTree); + this.localShardDataTree = requireNonNull(localShardDataTree); } - public ShardLeaderStateChanged(@Nonnull String memberId, @Nullable String leaderId, + public ShardLeaderStateChanged(@NonNull String memberId, @Nullable String leaderId, short leaderPayloadVersion) { super(memberId, leaderId, leaderPayloadVersion); this.localShardDataTree = null; } - @Nonnull - public Optional getLocalShardDataTree() { + public @NonNull Optional getLocalShardDataTree() { return Optional.ofNullable(localShardDataTree); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardChangePublisher.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardChangePublisher.java index 504ac10198..0e7216f3c7 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardChangePublisher.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardChangePublisher.java @@ -20,7 +20,7 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.databroker.actors.dds.DataStoreClient; import org.opendaylight.controller.cluster.datastore.AbstractDataStore; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardFrontend.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardFrontend.java index 21725d2c67..6d41cd6a45 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardFrontend.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardFrontend.java @@ -15,7 +15,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.databroker.actors.dds.DataStoreClient; import org.opendaylight.controller.cluster.datastore.AbstractDataStore; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTree.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTree.java index 157ee8808d..b9019f0f4d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTree.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTree.java @@ -45,7 +45,7 @@ import java.util.concurrent.CompletionStage; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; import org.opendaylight.controller.cluster.ActorSystemProvider; import org.opendaylight.controller.cluster.access.concepts.MemberName; import org.opendaylight.controller.cluster.databroker.actors.dds.DataStoreClient; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/LookupTask.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/LookupTask.java index 87f7ed170f..ad4215c965 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/LookupTask.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/LookupTask.java @@ -11,14 +11,12 @@ import static akka.actor.ActorRef.noSender; import akka.actor.ActorRef; import akka.actor.Status; -import javax.annotation.concurrent.NotThreadSafe; import org.eclipse.jdt.annotation.Nullable; /** - * Base class for lookup tasks. Lookup tasks are supposed to run repeatedly - * until successful lookup or maximum retries are hit. + * Base class for lookup tasks. Lookup tasks are supposed to run repeatedly until successful lookup or maximum retries + * are hit. This class is NOT thread-safe. */ -@NotThreadSafe abstract class LookupTask implements Runnable { private final int maxRetries; private final ActorRef replyTo; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransactionTest.java index a4c653f01e..158c228220 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransactionTest.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; -import static org.hamcrest.CoreMatchers.both; +import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.core.Is.isA; import static org.mockito.Mockito.mock; @@ -222,9 +222,9 @@ public abstract class AbstractProxyTransactionTest modifications = modifyRequest.getModifications(); Assert.assertEquals(3, modifications.size()); - Assert.assertThat(modifications, hasItem(both(isA(TransactionWrite.class)).and(hasPath(PATH_1)))); - Assert.assertThat(modifications, hasItem(both(isA(TransactionMerge.class)).and(hasPath(PATH_2)))); - Assert.assertThat(modifications, hasItem(both(isA(TransactionDelete.class)).and(hasPath(PATH_3)))); + Assert.assertThat(modifications, hasItem(allOf(isA(TransactionWrite.class), hasPath(PATH_1)))); + Assert.assertThat(modifications, hasItem(allOf(isA(TransactionMerge.class), hasPath(PATH_2)))); + Assert.assertThat(modifications, hasItem(allOf(isA(TransactionDelete.class), hasPath(PATH_3)))); } @SuppressWarnings("checkstyle:hiddenField") diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/PingPongTransactionChain.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/PingPongTransactionChain.java index af474c5c56..0e96e81587 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/PingPongTransactionChain.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/PingPongTransactionChain.java @@ -20,7 +20,8 @@ import java.util.AbstractMap.SimpleImmutableEntry; import java.util.Map.Entry; import java.util.concurrent.CancellationException; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; -import javax.annotation.concurrent.GuardedBy; +import org.checkerframework.checker.lock.qual.GuardedBy; +import org.checkerframework.checker.lock.qual.Holding; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; @@ -210,7 +211,7 @@ public final class PingPongTransactionChain implements DOMTransactionChain { * this method has completed executing. Also inflightTx may be updated outside * the lock, hence we need to re-check. */ - @GuardedBy("this") + @Holding("this") private void processIfReady() { if (inflightTx == null) { final PingPongTransaction tx = READY_UPDATER.getAndSet(this, null); @@ -226,7 +227,7 @@ public final class PingPongTransactionChain implements DOMTransactionChain { * * @param tx Transaction which needs processing. */ - @GuardedBy("this") + @Holding("this") private void processTransaction(final @NonNull PingPongTransaction tx) { if (failed) { LOG.debug("Cancelling transaction {}", tx); diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadWriteTransaction.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadWriteTransaction.java index fd8ed94da2..55a544895e 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadWriteTransaction.java @@ -23,7 +23,6 @@ import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import java.util.Map; import java.util.Queue; -import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; @@ -52,9 +51,9 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; * subtree in conceptual data tree. We define this subtree by first write * operation performed on transaction. All next read and write operations * should be performed just in this initial subtree. + * */ // FIXME explicitly enforce just one subtree requirement -@NotThreadSafe class ShardedDOMDataBrokerDelegatingReadWriteTransaction implements DOMDataReadWriteTransaction { private final DOMDataReadOnlyTransaction readTxDelegate; private final DOMDataWriteTransaction writeTxDelegate; diff --git a/opendaylight/model/pom.xml b/opendaylight/model/pom.xml index ee98da79a0..34e5df5253 100644 --- a/opendaylight/model/pom.xml +++ b/opendaylight/model/pom.xml @@ -13,7 +13,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 diff --git a/pom.xml b/pom.xml index 91d0428c73..0b70def2bc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.opendaylight.odlparent odlparent-lite - 4.0.9 + 5.0.0 org.opendaylight.controller -- 2.36.6