6 years agoAdd .gitreview to startup archetype 20/52520/3
Thanh Ha [Wed, 1 Mar 2017 17:33:02 +0000 (12:33 -0500)]
Add .gitreview to startup archetype

All projects should have a .gitreview so let's initialize them with one.

Change-Id: I081af4f977cd91760e4ae38de97a765413a1399b
Signed-off-by: Thanh Ha <>
6 years agoTurn opendaylight/md-sal/pom.xml into an aggregator 22/52422/7
Robert Varga [Tue, 28 Feb 2017 21:29:15 +0000 (22:29 +0100)]
Turn opendaylight/md-sal/pom.xml into an aggregator

This pom is not referenced in code artifacts anymore, we can stop
pulling in unnecessary stuff.

Change-Id: I4f5db9ba2c1ef7874bb5c593714fb4977541638d
Signed-off-by: Robert Varga <>
6 years agoCleanup samples/toaster-provider/pom.xml 38/52438/3
Robert Varga [Wed, 1 Mar 2017 00:40:42 +0000 (01:40 +0100)]
Cleanup samples/toaster-provider/pom.xml

Do not depend on aggreator pom.

Change-Id: I9a9e368e48dbeadb6739a965cfe991f5173a635d
Signed-off-by: Robert Varga <>
6 years agoCleanup samples/toaster-consumer/pom.xml 37/52437/3
Robert Varga [Wed, 1 Mar 2017 00:37:30 +0000 (01:37 +0100)]
Cleanup samples/toaster-consumer/pom.xml

Do not depend on aggreator pom.

Change-Id: I6d4fed36ed5c32eb6a1523c81003f34e373ca52d
Signed-off-by: Robert Varga <>
6 years agoCleanup samples/clustering-test-app/provider/pom.xml 36/52436/3
Robert Varga [Wed, 1 Mar 2017 00:33:58 +0000 (01:33 +0100)]
Cleanup samples/clustering-test-app/provider/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: Ia6909ae141c5b0f327ccb8c12d92ec35e11a5913
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-dom-broker/pom.xml 87/52387/7
Robert Varga [Tue, 28 Feb 2017 16:31:52 +0000 (17:31 +0100)]
Cleanup sal-dom-broker/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I8afef926aa791c55b30f418b78eaf045db521778
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-binding-dom-it/pom.xml 21/52421/3
Robert Varga [Tue, 28 Feb 2017 21:26:43 +0000 (22:26 +0100)]
Cleanup sal-binding-dom-it/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I54340799a12db0f65e0c99284e16040c6b50fab9
Signed-off-by: Robert Varga <>
6 years agoCleanup benchmark-data-store/pom.xml 20/52420/3
Robert Varga [Tue, 28 Feb 2017 21:21:12 +0000 (22:21 +0100)]
Cleanup benchmark-data-store/pom.xml

Restructuring to not inherit from aggregator pom. Also bump JMH
while we're here.

Change-Id: I1e9321ddc4812d2057872c52d14408ed3ca7b57b
Signed-off-by: Robert Varga <>
6 years agoCleanup messagebus-config/pom.xml 19/52419/3
Robert Varga [Tue, 28 Feb 2017 21:17:27 +0000 (22:17 +0100)]
Cleanup messagebus-config/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: Iced30e9e93219d2d8f8b9b120acd5c19defb7bab
Signed-off-by: Robert Varga <>
6 years agoCleanup messagebus-util/pom.xml 18/52418/3
Robert Varga [Tue, 28 Feb 2017 21:14:55 +0000 (22:14 +0100)]
Cleanup messagebus-util/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I04d535223796e5a720061c1c9064a6bd0cf32e13
Signed-off-by: Robert Varga <>
6 years agoCleanup messagebus-api/pom.xml 17/52417/4
Robert Varga [Tue, 28 Feb 2017 21:10:46 +0000 (22:10 +0100)]
Cleanup messagebus-api/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I993304d208e9075356a870cf64903d967309fbae
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-dom-broker-config/pom.xml 95/52395/6
Robert Varga [Tue, 28 Feb 2017 17:11:57 +0000 (18:11 +0100)]
Cleanup sal-dom-broker-config/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I6b42355cf066e0bfcc254cd699ac229e1fd08a3e
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-dom-xsql-config/pom.xml 14/52414/4
Robert Varga [Tue, 28 Feb 2017 20:55:20 +0000 (21:55 +0100)]
Cleanup sal-dom-xsql-config/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: Ifa7d6e269ac6e0cad63733b0e843d603e8846ab2
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-test-model/pom.xml 15/52415/3
Robert Varga [Tue, 28 Feb 2017 21:04:33 +0000 (22:04 +0100)]
Cleanup sal-test-model/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I5558773fa0d50249d04f2dc3db3f20574749de1f
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-karaf4-xsql/pom.xml 13/52413/5
Robert Varga [Tue, 28 Feb 2017 20:52:45 +0000 (21:52 +0100)]
Cleanup sal-karaf4-xsql/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: Ic199d697e21eb128c76899ead573d2cf99ebc5e1
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-karaf-xsql/pom.xml 12/52412/5
Robert Varga [Tue, 28 Feb 2017 20:50:29 +0000 (21:50 +0100)]
Cleanup sal-karaf-xsql/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I0a220347d38f5841e463587445de4ab4057a1267
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-cluster-admin-impl/pom.xml 11/52411/5
Robert Varga [Tue, 28 Feb 2017 20:43:45 +0000 (21:43 +0100)]
Cleanup sal-cluster-admin-impl/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I53a65e1464166a1b41d28f3902b77f4b85f2717b
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-dummy-distributed-datastore/pom.xml 10/52410/5
Robert Varga [Tue, 28 Feb 2017 20:39:19 +0000 (21:39 +0100)]
Cleanup sal-dummy-distributed-datastore/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I6687a39750e46509cc562bb117b172ad5f180915
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-distributed-datastore/pom.xml 09/52409/5
Robert Varga [Tue, 28 Feb 2017 19:59:50 +0000 (20:59 +0100)]
Cleanup sal-distributed-datastore/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: Ide54ea429ae04a2ef37c9ae5d53a2df5ae4a8d74
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-clustering-config/pom.xml 05/52405/6
Robert Varga [Tue, 28 Feb 2017 18:43:59 +0000 (19:43 +0100)]
Cleanup sal-clustering-config/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I83a4306384851d2f00750d9138a1ceb0d0213a21
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-clustering-commons/pom.xml 04/52404/6
Robert Varga [Tue, 28 Feb 2017 18:41:03 +0000 (19:41 +0100)]
Cleanup sal-clustering-commons/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I1c6271b4da4a44a373a997cc8b73d01d63bb07e3
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-inmemory-datastore/pom.xml 03/52403/6
Robert Varga [Tue, 28 Feb 2017 18:35:51 +0000 (19:35 +0100)]
Cleanup sal-inmemory-datastore/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I6928baaae0d75bcbb9e36ae62c866f0a0c20f958
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-akka-raft-example/pom.xml 02/52402/6
Robert Varga [Tue, 28 Feb 2017 18:28:29 +0000 (19:28 +0100)]
Cleanup sal-akka-raft-example/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I88b2595c9782863b92220821c86171f1eaaf39db
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-akka-raft/pom.xml 00/52400/6
Robert Varga [Tue, 28 Feb 2017 18:15:31 +0000 (19:15 +0100)]
Cleanup sal-akka-raft/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I0084848fc3740534c8c7be9fb25276a72c26d837
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-connector-api/pom.xml 99/52399/6
Robert Varga [Tue, 28 Feb 2017 17:52:35 +0000 (18:52 +0100)]
Cleanup sal-connector-api/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: Ida0cb93cd4e8c4686dfe3cbeaa461854c09d0f59
Signed-off-by: Robert Varga <>
6 years agoCleanup md-sal-config/pom.xml 97/52397/6
Robert Varga [Tue, 28 Feb 2017 17:41:21 +0000 (18:41 +0100)]
Cleanup md-sal-config/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I4e405690483186536b5a5d1e3b616c5e60c29964
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-binding-config/pom.xml 96/52396/5
Robert Varga [Tue, 28 Feb 2017 17:38:44 +0000 (18:38 +0100)]
Cleanup sal-binding-config/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I4f798f19aaa9fef02e32f7eee742f56102353eb0
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-dom-config/pom.xml 94/52394/4
Robert Varga [Tue, 28 Feb 2017 17:05:03 +0000 (18:05 +0100)]
Cleanup sal-dom-config/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I15135d18e18ec39fefeb4d9d197f9d72fcba93c6
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-binding-util/pom.xml 93/52393/4
Robert Varga [Tue, 28 Feb 2017 16:54:42 +0000 (17:54 +0100)]
Cleanup sal-binding-util/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I2154c0182f454c6f19d36a4942ba9eed26ab0ba6
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-binding-broker/pom.xml 91/52391/4
Robert Varga [Tue, 28 Feb 2017 16:50:16 +0000 (17:50 +0100)]
Cleanup sal-binding-broker/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I31567e831a0b7025ab2238d43f125286d19d7f7f
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-binding-api/pom.xml 90/52390/4
Robert Varga [Tue, 28 Feb 2017 16:46:38 +0000 (17:46 +0100)]
Cleanup sal-binding-api/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I58ff436710b36f06ce8a65141665845deff11e7e
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-schema-service/pom.xml 89/52389/4
Robert Varga [Tue, 28 Feb 2017 16:37:35 +0000 (17:37 +0100)]
Cleanup sal-schema-service/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: Ifa4de2f09dbf9bf718da86b1de802765cda7cf7b
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-dom-spi/pom.xml 88/52388/4
Robert Varga [Tue, 28 Feb 2017 16:34:27 +0000 (17:34 +0100)]
Cleanup sal-dom-spi/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I6a65bd147f0268668d7ffc0ab0b832a6c4d4e14b
Signed-off-by: Robert Varga <>
6 years agoBug 7521: Add custom local snapshot store 78/51078/16
Tom Pantelis [Thu, 26 Jan 2017 16:49:43 +0000 (11:49 -0500)]
Bug 7521: Add custom local snapshot store

Akka's LocalSnapshotStore serializes to a byte[] before persisting
to the file so we need to write our LocalSnapshotStore that serializes
directly to the file. I patterned the code after akka's LocalSnapshotStore,
mainly translated from scala.

Akka's LocalSnapshotStore wraps the payload data in a Snapshot class
and uses the SnapshotSerializer which locates the serializer for the payload
class and writes some header data before delegating to the payload
serializer. To handle backwards compatibility for a snapshot previously
serialized with akka's format, java de-serialization will detect and fail
with an invalid stream header, in which case we fall back and try
de-serialization via the SnapshotSerializer.

Akka has a standard test suite in SnapshotStoreSpec for testing custom
snapshot store plugins. I derived a LocalSnapshotStoreSpecTest class
that does the setup and teardown with SnapshotStoreSpec doing the rest.
SnapshotStoreSpec uses ScalaTest stuff so need to be run with scala's

I also added a regular LocalSnapshotStoreTest class to cover a few cases
that SnapshotStoreSpec doesn't.

Change-Id: I1ca11682f37aa39d60d3ce57c874c299627e8ca6
Signed-off-by: Tom Pantelis <>
6 years agoCleanup sal-dom-api/pom.xml 86/52386/1
Robert Varga [Tue, 28 Feb 2017 15:51:42 +0000 (16:51 +0100)]
Cleanup sal-dom-api/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I3951d52d2ca0d5ceeff75c90e88b7df7b67467c5
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-common-util/pom.xml 85/52385/1
Robert Varga [Tue, 28 Feb 2017 15:42:52 +0000 (16:42 +0100)]
Cleanup sal-common-util/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: Idf48e57dfbfa10098a56406a5f04119791227107
Signed-off-by: Robert Varga <>
6 years agoCleanup sal-common-impl/pom.xml 84/52384/1
Robert Varga [Tue, 28 Feb 2017 15:23:18 +0000 (16:23 +0100)]
Cleanup sal-common-impl/pom.xml

Restructuring to not inherit from aggregator pom.

Change-Id: I41041a301b50fadad816116f63afced39ffc73b5
Signed-off-by: Robert Varga <>
6 years agoAdd odlparent-lite to mdsal-artifacts/pom.xml 83/52383/1
Robert Varga [Tue, 28 Feb 2017 15:55:42 +0000 (16:55 +0100)]
Add odlparent-lite to mdsal-artifacts/pom.xml

All our poms should be inheriting from odlparent, make sure this
is the case for artifacts, too.

Change-Id: I5f8c01469a9e08c9d61507596585a8a4f842a5f0
Signed-off-by: Robert Varga <>
6 years agoReplace dlux with dluxapps features 24/50224/2
Daniel Malachovsky [Tue, 10 Jan 2017 19:59:01 +0000 (20:59 +0100)]
Replace dlux with dluxapps features

Renaming is due to DLUX project split.
Also, replacing yangui feature with yangman, new, redesigned and restyled

Change-Id: I8b75df0885d4c7453bd46c127ebcd9a63670e03a
Signed-off-by: Daniel Malachovsky <>
6 years agoFix NPE in YangTextSchemaSourceSerializationProxy#getRepresentation 37/52337/4
Jakub Morvay [Tue, 28 Feb 2017 07:28:01 +0000 (08:28 +0100)]
Fix NPE in YangTextSchemaSourceSerializationProxy#getRepresentation

According to its general contract, when revision is not found,
SourceIdentifier#getRevision method returns null. Wrap revision in
Optional#fromNullable to avoid possible NPE.

Change-Id: I78f544374f179c9486cc8dd09cbcf1eea379e1e9
Signed-off-by: Jakub Morvay <>
6 years agoBUG 7796: Implement agent RPCs for global RPC testing 74/52074/6
Tomas Cere [Thu, 16 Feb 2017 14:53:43 +0000 (15:53 +0100)]
BUG 7796: Implement agent RPCs for global RPC testing

This implements the get-constant and it's lifecycle
control rpc's from the lowlevel mdsal test model.

Change-Id: I2da89b73d289b8fe6bf95aeaba34e7fb50032f7e
Signed-off-by: Tomas Cere <>
6 years agoFix parent declaration 94/52294/2
Robert Varga [Mon, 27 Feb 2017 11:27:57 +0000 (12:27 +0100)]
Fix parent declaration

bundle-parent is from mdsal project, it should have an empty
relativePath declartion.

Change-Id: I3d460a5acca297fce1089088781dae9057038542
Signed-off-by: Robert Varga <>
6 years agoBUG-5280: add {Create,Close,Purge}LocalHistoryPayload 26/39426/73
Robert Varga [Wed, 25 May 2016 15:44:53 +0000 (17:44 +0200)]
BUG-5280: add {Create,Close,Purge}LocalHistoryPayload

This patch introduces three new payloads which deal with replicating
local histories to followers. These are persisted whenever a transaction
chain (e.g. local history) is created or closed cleanly on the shard
leader. Followers can use these to track transaction chains and pick up
processing in case of a leader failover.

Change-Id: I3fe5ac153c88f23f9b871bd23cb04a8e2410af91
Signed-off-by: Robert Varga <>
6 years agoBUG-5280: handle TransactionPurgeRequest replay 12/52212/3
Robert Varga [Thu, 23 Feb 2017 13:59:55 +0000 (14:59 +0100)]
BUG-5280: handle TransactionPurgeRequest replay

We need to handle purging requests on reconnect, too.

Change-Id: I02acaf2dd7d9209f48148f76b3ca3aa4bbc64b5e
Signed-off-by: Robert Varga <>
6 years agoBug 7840: Remove version in BucketStoreActor#removeBucket() 60/52260/2
Vratko Polak [Fri, 24 Feb 2017 18:21:20 +0000 (19:21 +0100)]
Bug 7840: Remove version in BucketStoreActor#removeBucket()

Change-Id: Ic5d2c04260a0a53e72d9569eee18c1fba50c367b
Signed-off-by: Vratko Polak <>
6 years agoRemove unneeded SuppressWarnings 14/52214/2
Robert Varga [Thu, 23 Feb 2017 14:09:59 +0000 (15:09 +0100)]
Remove unneeded SuppressWarnings

These are not needed and in fact generate Eclipse warnings

Change-Id: I4105c4a8d0fd0094be283a88a92a00415fa54add
Signed-off-by: Robert Varga <>
6 years agoYang models for system testing low level MD-SAL operations 77/51477/27
Vratko Polak [Tue, 21 Feb 2017 14:54:29 +0000 (15:54 +0100)]
Yang models for system testing low level MD-SAL operations

Not every operation is easily available from Restconf.
This defines and agent application to control the tested operations from Java.

There are FIXMEs and TODOs left, to be fixed later,
probably together with Java implementation.
Merging this early will allow Changes for Bugs 7796-7807
to be implemented independently (as opposed to forming a single chain).

Change-Id: Icb9616c156f56f8706a24abe31e5ac097a65cf73
Signed-off-by: Vratko Polak <>
6 years agoPrepare config-it-base for Karaf 4 89/52189/4
Lorand Jakab [Wed, 22 Feb 2017 20:47:25 +0000 (22:47 +0200)]
Prepare config-it-base for Karaf 4

Downstreams using mdsal-it-parent as their integration test parent will
not be able to migrate their IT to a Karaf 4 based distribution without
this change.

See also

Change-Id: I572151bcf16fb9864f59dd446952ab13a12b295f
Signed-off-by: Lorand Jakab <>
6 years agoFix Javadoc 80/52080/2
Robert Varga [Mon, 20 Feb 2017 15:39:31 +0000 (16:39 +0100)]
Fix Javadoc

The argument reference was not updated, fix that.

Change-Id: Ib35ed59105c7090291c733725c8a85d384a1a288
Signed-off-by: Robert Varga <>
6 years agoBug 7521: Convert byte[] to ShardManagerSnapshot in DatastoreSnapshot 06/51006/7
Tom Pantelis [Wed, 25 Jan 2017 13:04:57 +0000 (08:04 -0500)]
Bug 7521: Convert byte[] to ShardManagerSnapshot in DatastoreSnapshot

Created a new ShardManagerSnapshot class in the persisted package
which is now stored in the DatastoreSnapshot in lieu of a
serialized byte[]. The previous ShardManagerSnapshot class was
deprecated and readResolves to the new class.

Change-Id: I1ae363e9711cf3bef6b6dd6257fa56bd41465bf3
Signed-off-by: Tom Pantelis <>
6 years agoBug 7521: Convert DatastoreSnapshot.ShardSnapshot to store Snapshot 24/50924/9
Tom Pantelis [Tue, 24 Jan 2017 09:19:45 +0000 (04:19 -0500)]
Bug 7521: Convert DatastoreSnapshot.ShardSnapshot to store Snapshot

Converted the new DatastoreSnapshot.ShardSnapshot class to store a
Snapshot instance instead of a serialized byte[] so the Snapshot
can be serialized directly to the file when saved.

The prior DatastoreSnapshotList was deprecated and readResolves to
the new DatastoreSnapshotList.

Change-Id: I656eca93bfed07ae99055c67cc3f195b25ea2b11
Signed-off-by: Tom Pantelis <>
6 years agoBug 7521: Move DatastoreSnapshotList et al to persisted package 45/50845/9
Tom Pantelis [Mon, 23 Jan 2017 17:02:45 +0000 (12:02 -0500)]
Bug 7521: Move DatastoreSnapshotList et al to persisted package

The serialized format of DatastoreSnapshotList et al will be changing
so new classes were added to the persisted package in preparation.
The current classes are deprecated and will readResolve to the new

Change-Id: Ib6aa600a71f52253b93ab0e4a82f6f56baafbfd9
Signed-off-by: Tom Pantelis <>
6 years agoBug 7521: Add FileBackedOutputStream and use for snapshot chunking 69/50769/13
Tom Pantelis [Sun, 22 Jan 2017 05:38:05 +0000 (00:38 -0500)]
Bug 7521: Add FileBackedOutputStream and use for snapshot chunking

Added a FileBackedOutputStream class, similar to the one in guava except:
  - allows for the temp dir to be confgured
  - keeps track of the count of bytes written for efficiency
  - uses a PhantomReference to delete the temp file instead of using finalize.

FileBackedOutputStream is now used in chunking the snapshop on the leader
side and re-assembling on the follower side.

Change-Id: Ieea4bc1388ffe18d6803783d2bb714089716b7b1
Signed-off-by: Tom Pantelis <>
6 years agoBUG-5280: emit DestroyLocalHistory and PurgeLocalHistory requests 54/51954/3 54/51954/4
Robert Varga [Thu, 16 Feb 2017 12:38:34 +0000 (13:38 +0100)]
BUG-5280: emit DestroyLocalHistory and PurgeLocalHistory requests

In order to properly prune local histories from the backend we need
to issue destroy/purge requests as the history is finalized.

Change-Id: I303937ba7afa594e83c4a944d16886ee98e3036c
Signed-off-by: Robert Varga <>
6 years agoBUG-5280: add a transction purge step 30/51930/5
Robert Varga [Wed, 15 Feb 2017 22:34:48 +0000 (23:34 +0100)]
BUG-5280: add a transction purge step

Backend needs to be informed about the client completing the transaction,
so it can remove any state trakcing the result of the transaction.

Since the frontend has no remaining state to transfer, there is no legal
way for the frontend to ever reference it (aside the purge request itself),
which always succeeds.

Change-Id: Ia957f0879114eede394b76184620a38cd5967955
Signed-off-by: Robert Varga <>
6 years agoBug 7746: Fix intermittent EOS test failure and synchronization 41/51941/3
Tom Pantelis [Thu, 16 Feb 2017 09:20:11 +0000 (04:20 -0500)]
Bug 7746: Fix intermittent EOS test failure and synchronization

Modified the EntityOwnershipListenerSupport class to be thread-safe
utilizing a ReadWriteLock to guard access to the listenerActorMap
and entityTypeListenerMap. While updates are only done by the
EntityOwnershipShard and thus aren't concurrent, read access occurs
concurrently via the EntityOwnershipChangeListener which runs in its
own actor sandbox. I also factored out an
EntityOwnershipChangePublisher interface with the read-only access
methods used by EntityOwnershipChangeListener to make it clear
that EntityOwnershipShard is the only mutator.

The testFunctionalityWithThreeNodes case failed intermittently b/c
it's possible for the follower2MockListener to get notified of a
pre-existing entity on registration twice if the prior owner change
is replicated and the EntityOwnershipChangeListener triggers concurrently
with the registration and the timing is just right. I added verification
of ownership sync to follower2 pior to registration to make it
deterministic and avoid the sporadic timing failures.

Change-Id: Icc197d0c23135ca69b56eac1702f249e8e60e66e
Signed-off-by: Tom Pantelis <>
6 years agoFix intermittent failure in testCloseCandidateRegistrationInQuickSuccession 15/51915/3
Tom Pantelis [Wed, 15 Feb 2017 16:02:57 +0000 (11:02 -0500)]
Fix intermittent failure in testCloseCandidateRegistrationInQuickSuccession

java.lang.IllegalStateException: Optional.get() cannot be called on an absent value
  at org.opendaylight.controller.cluster.datastore.entityownership.DistributedEntityOwnershipIntegrationTest.testCloseCandidateRegistrationInQuickSuccession(


if (!leaderEntityOwnershipService.getOwnershipState(ENTITY1).isPresent()
  || leaderEntityOwnershipService.getOwnershipState(ENTITY1).get() ==

The code inlines calls to getOwnershipState so it's possible the first call
returns a present Optional and the second call returns absent which leads to
the failure. It's safer to capture the Optional in a lcoal var.

Change-Id: I9baa120efc9924dc820435dd63217b4598731a13
Signed-off-by: Tom Pantelis <>
6 years agoCompile-time dependencies matter 23/51923/1
Vratko Polak [Wed, 15 Feb 2017 18:13:44 +0000 (19:13 +0100)]
Compile-time dependencies matter

Not sure whether this is a proper fix.
This is an analogy of

Change-Id: I4173cb756e40c1111e8fc29c0f370f8bdef1652b
Signed-off-by: Vratko Polak <>
6 years agoCleanup warnings around methods being potentially static 00/51900/2
Robert Varga [Wed, 15 Feb 2017 11:13:36 +0000 (12:13 +0100)]
Cleanup warnings around methods being potentially static

These are private methods and they do not touch state, hence they
can be made static.

Change-Id: I1d9adf70d9121e01b2ac8e03a1198c1ba73716fb
Signed-off-by: Robert Varga <>
6 years agoClean MockClusterWrapper up 99/51899/2
Robert Varga [Wed, 15 Feb 2017 11:08:55 +0000 (12:08 +0100)]
Clean MockClusterWrapper up

- use immutable set builder directly
- do not use deprecated UniqueAddress constructor

Change-Id: I6905f1feb46302e36a246938a7e0189b82025ede
Signed-off-by: Robert Varga <>
6 years agosal-distributed-datastore Checkstyle fixes (for next version) 89/51389/4
Michael Vorburger [Fri, 3 Feb 2017 10:58:51 +0000 (11:58 +0100)]
sal-distributed-datastore Checkstyle fixes (for next version)

Even though sal-distributed-datastore currentla already has CS
enforcement, these violations don't show up in the build, but I see them
as red in Eclipse; I think this must be becaues the CS version used in
the Eclipse plugin-in is more recent than the CS used in odlparent, and
one of the existing activated checks got a little more stringent.

Cleaning this up thus helps both to (a) not have read in Eclipse; (b)
pave the way to upgrade Checkstyle in odlparent some day.

Change-Id: Ib5649a95a1b26b5791f2c3f3f83924b569f965a2
Signed-off-by: Michael Vorburger <>
6 years agoUsage of Collections.unmodifiableCollection is unsafe 83/51883/1
Tom Pantelis [Wed, 15 Feb 2017 05:06:39 +0000 (00:06 -0500)]
Usage of Collections.unmodifiableCollection is unsafe

This is a follow-up to
wrt a review comment questioning why I returned a new ArrayList instead
of returning the Set directly. One reason was to avoid mutation of the
internal set by the caller but also to capture the state of the set at
that point in time and avoid concurrent mods which may not be safe.
Where a concurrent set is used, it would be thread-safe to return the
set directly but the set may by modified as the caller is iterating it
which may not be desired. For the other class whose set is a keySet
from a non-threadsafe Map, the caller could get a ConcurrentMod
exception while iterating. Based on the review, I changed the call
sites to return a Collections.unmodifiableCollection but this is also
incorrect and is susceptible to the same issues as that impl reads-thru
to the underlying collection. Therefore I changed the call sites back
to returning a new ArrayList.

Change-Id: I504f38c5bfc4c707180ac301eb10acd0ac24f872
Signed-off-by: Tom Pantelis <>
6 years agoAdd OnDemandShardState to report additional Shard state 83/51583/6
Tom Pantelis [Tue, 7 Feb 2017 21:48:03 +0000 (16:48 -0500)]
Add OnDemandShardState to report additional Shard state

Extended the OnDemandRaftState with OnDemandShardState to include
additional Shard state, including DTCL, DCL, and commit cohort actors.
This will enable us to report thus info from the JMX bean as it's useful
for debugging to have visibility into what listeners and cohorts
are registered.

The actors now also store the registered path. Both the instance and path
will be queried for debugging.

Change-Id: Iaa6c27c9aba3b5c0223199e6a3fc21bc54da95ba
Signed-off-by: Tom Pantelis <>
6 years agoAdd more info logging in sal-akka-raft 53/51753/6
Tom Pantelis [Sat, 11 Feb 2017 15:52:17 +0000 (10:52 -0500)]
Add more info logging in sal-akka-raft

Added more info logging for abnormal and infrequent code paths in
the raft behaviors to help in troubleshooting as these paths are
sometimes involved when something goes wrong.

Change-Id: I3017c81c2ef7100ca8a9477285ca637355c05e87
Signed-off-by: Tom Pantelis <>
6 years agoIgnore pax-exam's test-dependencies feature 74/51874/3
Robert Varga [Tue, 14 Feb 2017 16:55:46 +0000 (17:55 +0100)]
Ignore pax-exam's test-dependencies feature

pax-exam wraps the test dependencies in a feature, which certainly
should not hold anything of interest. Ignore it.

Change-Id: I952fe65172277f3f156727b3302478db8a3533cb
Signed-off-by: Robert Varga <>
6 years agoAdd DOMDataTreeCommitCohort example for the cars model 82/51582/6
Tom Pantelis [Tue, 7 Feb 2017 12:15:18 +0000 (07:15 -0500)]
Add DOMDataTreeCommitCohort example for the cars model

Change-Id: If15c748ceb718d9902ee6c0d5d5a7337a4cbd211
Signed-off-by: Tom Pantelis <>
6 years agoCDS: updateMinReplicaCount on RemoveServer 68/51868/1
Tom Pantelis [Tue, 14 Feb 2017 15:18:46 +0000 (10:18 -0500)]
CDS: updateMinReplicaCount on RemoveServer

When a replica is removed, we need to call updateMinReplicaCount
so the removed replica is no longer counted for consensus. Updated
the testRemoveServer case to cover it.

Change-Id: Id4b71381f7c32155c641e461832cba680c7062a6
Signed-off-by: Tom Pantelis <>
6 years agoRemove @VisibleForTesting annotation 56/51856/1
Robert Varga [Tue, 14 Feb 2017 11:47:41 +0000 (12:47 +0100)]
Remove @VisibleForTesting annotation

The merge job is failing on it for some reason and it is not
really needed, as the enclosing class already carries it.

Remove it  to get merge back online.

Change-Id: I6952c89efb862d52fbacfd6a3a54a5cce555bbe4
Signed-off-by: Robert Varga <>
6 years agoClarify config pusher message 86/51786/2
Robert Varga [Mon, 13 Feb 2017 13:53:20 +0000 (14:53 +0100)]
Clarify config pusher message

Reword the message logged so it is more obvious what is going
on. Also lower it from warning to info and perform a general code

Change-Id: I37035e8df15b10f40568c3e894ffe2875b935d95
Signed-off-by: Robert Varga <>
6 years agoIgnore feature conditions 22/51522/3
Stephen Kitt [Tue, 7 Feb 2017 15:34:23 +0000 (16:34 +0100)]
Ignore feature conditions

Features whose name contains "-condition-" encode feature conditions;
for example, kar-condition-shell is the shell condition on the kar
feature. These features should never be processed by

Change-Id: Ic2ce2312fb347792d269d43d7bcb5f115905380f
Signed-off-by: Stephen Kitt <>
6 years agoCheckstyle: fix ParenPad violations 02/51402/2
Lorand Jakab [Fri, 3 Feb 2017 13:44:55 +0000 (15:44 +0200)]
Checkstyle: fix ParenPad violations

Enforcing no space(s) after a left parenthesis and before a right
parenthesis is a proposed change [0] which can only be merged when all
violations are fixed in projects enforcing checkstyle. This patch fixes
those violations.


Change-Id: Id3e4853bf1cee789d584d4fb528f5415084e26ab
Signed-off-by: Lorand Jakab <>
6 years agoBUG-7407: Introduce API to request shard leader movement 40/49840/8
Robert Varga [Tue, 27 Dec 2016 16:57:18 +0000 (17:57 +0100)]
BUG-7407: Introduce API to request shard leader movement

There are some applications which would really want to control shard
leader location, so their producers talk to the local leader and do
not cross boundaries if not necessary.

Change-Id: I6c789d91b78d42f325890e36725d03892ae4a23f
Signed-off-by: Robert Varga <>
6 years agoRemove reliance on org.opendaylight.controller.sal.core.api.Broker 00/51300/6
Robert Varga [Wed, 1 Feb 2017 13:07:05 +0000 (14:07 +0100)]
Remove reliance on org.opendaylight.controller.sal.core.api.Broker

Broker-related interfaces are no longer used, as we are activating
via blueprint. Remove references to them.

Change-Id: I67552c986c31e0214cb35d8fc2b60cca536ecbb5
Signed-off-by: Robert Varga <>
6 years agoRemove unneeded SchemaService reference 99/51299/6
Robert Varga [Wed, 1 Feb 2017 12:58:45 +0000 (13:58 +0100)]
Remove unneeded SchemaService reference

sal-remoterpc-connector no longer need SchemaService, hence do not
look it up.

Change-Id: I1493ca1bbe769ad1cff183cf4ff2263bd6aaef77
Signed-off-by: Robert Varga <>
6 years agoBUG-7594: Rework sal-remoterpc-connector messages 29/50629/34
Robert Varga [Wed, 18 Jan 2017 15:01:21 +0000 (16:01 +0100)]
BUG-7594: Rework sal-remoterpc-connector messages

This breaks compatibility by using DOMRpcIdentifier directly
in transferred messages. Since we are breaking compatibility, we can
also rework the messages and their locations, limiting their visiblity
and features (such as Serializable).

RoutingTable no longer uses RouteIdentifier, but rather relies
on DOMRpcIdentifier, which is serialized using
NormalizedNodeDataInput/Output primitives, so the serialization
format is not dependent on the package DOMRpcIdentifier comes from
and can be compatibly switched to mdsal-provided one.

Change-Id: Idf083f9d288be9c9684c7e8e8bd99fbaff0ad4ce
Signed-off-by: Robert Varga <>
Signed-off-by: Tomas Cere <>
6 years agoBug 7521: Convert install snapshot chunking to use streams 44/50744/7
Tom Pantelis [Fri, 20 Jan 2017 20:32:37 +0000 (15:32 -0500)]
Bug 7521: Convert install snapshot chunking to use streams

On the leader side, converted LeaderInstallSnapshotState to use
the InputStream from the ByteSource instead of a ByteString to
chunk the data.

On the follower side, converted the SnapshotTracker, which is used
to reassemble the install snapshot chunks, to write the chunks to
an OutputStream instead of a ByteString. Currently a
ByteArrayOutputStream is used by will be changed to a
FileBackedOutputStream in a subsequent patch.

Change-Id: I7a16ad5d44a530e260aa332d91145fbc3fb95f5f
Signed-off-by: Tom Pantelis <>
6 years agoBug 7521: Convert Snapshot to store a State instance 72/50572/9
Tom Pantelis [Tue, 17 Jan 2017 18:24:28 +0000 (13:24 -0500)]
Bug 7521: Convert Snapshot to store a State instance

Created a new Snapshot class that stores the state as a Serializable
State instance instead of a byte[] to lay the groundwork for handling
snapshots > 2G. In this manner, State implementations can serialize
their data directly to the ObjectOutputStream.

The previous Snapshot class was deprecated but, unfortunately, it
can't simply "read resolve" to the new class on de-serialization
as the deserialization code doesn't know how to convert the data
from byte[] to a State instance. Therefore a new method,
deserializePreCarbonSnapshot, was added to RaftActorRecoveryCohort.

The introduction of the State interface necessitated changes throughout
the snapshot capture and snapshot recovery code paths. The Shard
implementations were also changed accordingly.

For follower snapshot install, an optional OutputStream is also passed
to createSnapshot. The new API contract is: if the OutputStream is present,
the implementation must serialize its state to the OutputStream and return
the stream instance in the CaptureSnapshotReply along with the snapshot
State instance. The snapshot State is serialized directly to the snapshot
store while the OutputStream is used to send the state data to follower(s)
in chunks. The deserializeSnapshot method is used to convert the serialized
data back to a State instance on the follower end. The serialization for
snapshot install is passed off so the cost of serialization is not charged
to the raft actor's thread.

The OutputStream is converted to a ByteSource when passed to AbstractLeader.
AbstractLeader still converts it to a byte[] but will be changed to use
the ByteSource's InputStream to chunk the data in a subsequent patch.

Also the SnapshotManager currently passes a ByteArrayOutputStream to
createSnapshot but this will be changed to a FileBackedOutputStream in a
subsequent patch.

Change-Id: I2ea30870b54478d7ef5669335ca4b444539f8d56
Signed-off-by: Tom Pantelis <>
6 years agoBUG-7556: update version tracking 22/50622/22
Robert Varga [Wed, 18 Jan 2017 15:01:21 +0000 (16:01 +0100)]
BUG-7556: update version tracking

This patch adds better version tracking, so it does not rely
on calendar time, but rather is monotonically increasing.

The 64bit version field is logically split into an incarnation
number (31 bits) and a version number (32 bits).

Change-Id: Ie0e1f4089cc1ee582037982d9837490348158975
Signed-off-by: Robert Varga <>
6 years agoAbstractConcurrentDataBrokerTest @deprecate-s the AbstractDataBrokerTest 86/51486/3
Michael Vorburger [Mon, 6 Feb 2017 23:23:31 +0000 (00:23 +0100)]
AbstractConcurrentDataBrokerTest @deprecate-s the AbstractDataBrokerTest

This is take #2 on a similar earlier attempt which made the same change
directly in AbstractDataBrokerTest, which broke some downstrean tests,
which were BADLY WRITTEN (!) because the assumed single threaded direct
execution (which DataBroker does not guarantee). has full background

Bug: 7538
Change-Id: I05ac3525bdcf1ab9c99dfa15b98e090848d0fddc
Signed-off-by: Michael Vorburger <>
6 years agoodl-config-persister feature clean-up 63/51563/1
Stephen Kitt [Wed, 8 Feb 2017 15:43:02 +0000 (16:43 +0100)]
odl-config-persister feature clean-up

This removes all the bundles which are pulled in transitively. The
resulting feature file is identical, but the POM only declares the
bundles we really care about (which ones are they?).

This is probably controversial, and is one possible variant of three
(see the other patches in the same topic).

Change-Id: Ib57241d792cb494f2a3e967bc76e23cdb4fa9bec
Signed-off-by: Stephen Kitt <>
6 years agoRe-enable transitive dependency search 59/51559/2
Robert Varga [Wed, 8 Feb 2017 13:22:10 +0000 (14:22 +0100)]
Re-enable transitive dependency search

This is no longer needed with odlparent patches.

Change-Id: I960483a9f097b111f911d1f9465555638f0e9fd5
Signed-off-by: Robert Varga <>
6 years agoclustering-test-app: Remove apparently un-used (weird) Tycho dependency 20/51520/3
Michael Vorburger [Tue, 7 Feb 2017 14:56:48 +0000 (15:56 +0100)]
clustering-test-app: Remove apparently un-used (weird) Tycho dependency

I was very surprised to notice something related my old friend Tycho
(who I know well, from a past life..) in c/51447 when glancing over that
change, and wondered what it was used for there, in a particularly
strange fashion... FYI Tycho is, normally, a Maven plugin, used for
among other thing dependency resolution of OSGi bundles from p2
repositories; I've never seen it used as a normal direct dependency, and
can't imagine what it would be good for in normal projects.  So I look
more at this project, and found that Tycho is used for.. nothing at all?

Change-Id: I8863406ea5e629e2fbaef207b0cd4357d6875a7a
Signed-off-by: Michael Vorburger <>
6 years agoDo not scan transitive dependencies 47/51447/6
Robert Varga [Sun, 5 Feb 2017 20:52:08 +0000 (21:52 +0100)]
Do not scan transitive dependencies

Doing so pulls in aries, which is provided by karaf, causing reactivation
of the platform, breaking pax-exam tests. This fixes the issue partially,
as blueprint is not being directly reactivated.

This is true for odl-mdsal-broker-local and odl-mdsal-xsql. Also the sample
test app should not be pulling tycho into an OSGi container, make sure the
dependency is only for test.

Change-Id: I5b08e19e39347fe6e5c03bf6dbe1cb05e36274e3
Signed-off-by: Robert Varga <>
6 years agoRevert "Support multithreading DataBrokerTestCustomizer (AbstractDataBrokerTest)" 67/51467/1
Michael Vorburger [Mon, 6 Feb 2017 12:47:24 +0000 (13:47 +0100)]
Revert "Support multithreading DataBrokerTestCustomizer (AbstractDataBrokerTest)"

This reverts commit 930817d4f1e01c7e08fd7e8ad79bf781cb53034a of Bug 7538.

Change-Id: Ie26f217a2f64cb4eea2d64f2280f6d9773713b21
Signed-off-by: Michael Vorburger <>
6 years agoRemove bad manifestLocation from maven-bundle-plugin 36/51236/2
Michael Vorburger [Tue, 31 Jan 2017 13:15:52 +0000 (14:15 +0100)]
Remove bad manifestLocation from maven-bundle-plugin

Change-Id: I7741c11a21393510af4dcb452e721abd236a9c2c
Signed-off-by: Michael Vorburger <>
6 years agoSupport multithreading DataBrokerTestCustomizer (AbstractDataBrokerTest) 07/51307/5
Michael Vorburger [Wed, 1 Feb 2017 16:03:16 +0000 (17:03 +0100)]
Support multithreading DataBrokerTestCustomizer (AbstractDataBrokerTest) has full background

Bug: 7538
Change-Id: Ic3f2169e18928e3010e45bddb43186cc53d897f4
Signed-off-by: Michael Vorburger <>
6 years agoBUG-7608: activate action-service element 14/51114/9
Robert Varga [Fri, 27 Jan 2017 12:39:53 +0000 (13:39 +0100)]
BUG-7608: activate action-service element

With downstream users fixed up, we can activate the action-service
element to actually require a promise of instantiation of actions.

Change-Id: I3f87acfd713936a4877822b2f62b5a7d2be46107
Signed-off-by: Robert Varga <>
6 years agoAdd Karaf 4 features 61/26161/14
Stephen Kitt [Thu, 19 Jan 2017 14:19:17 +0000 (15:19 +0100)]
Add Karaf 4 features

This moves the Karaf 3 features and adds matching Karaf 4 features for
all the controller features.

Blueprint is upgraded to match the version used in Karaf 4.

Bug: 7526
Change-Id: Ie41cd727942ad2083ef0ca33e03f0d08003c546d
Signed-off-by: Stephen Kitt <>
6 years agoFix an eclipse warning 21/51121/3
Robert Varga [Fri, 27 Jan 2017 13:28:57 +0000 (14:28 +0100)]
Fix an eclipse warning

Eclipse warns about duplicate groupId, as it is inherited
from parent. Fix that by removing it.

Change-Id: I6d99e1d0a547da7077216c83f6d096eb2a2fb5ee
Signed-off-by: Robert Varga <>
6 years agoFix breakage introduced by logback bump 60/51260/1
Robert Varga [Tue, 31 Jan 2017 15:53:45 +0000 (16:53 +0100)]
Fix breakage introduced by logback bump

This is an ugly fix to adjust for changes in logmack 1.1.9.

Change-Id: I424687fe757e5d7cb4525b5954d283f762a0d011
Signed-off-by: Robert Varga <>
6 years agoRemove unneded RoutingTable time tracking 07/50607/11
Robert Varga [Wed, 18 Jan 2017 00:49:13 +0000 (01:49 +0100)]
Remove unneded RoutingTable time tracking

Since we no longer use the time stored in internal entries,
we can use a Set instead of a Map. Adjust internal structure
of RoutingTable and tighten its exported methods.

Change-Id: Ifa2ed53ffc9d05c658927167a4e7dd331c3c2006
Signed-off-by: Robert Varga <>
6 years agoRemove Copier interface 91/50591/11
Robert Varga [Wed, 18 Jan 2017 00:37:28 +0000 (01:37 +0100)]
Remove Copier interface

This is an abstraction which is completely unneeded
at the Bucket level, as BucketData is expected to be immutable
and it is only mutated in RpcRegistry, which has a package-private
relationship with RoutingTable.

Rather than forcing an interface to be implemented and not used,
remove Copier and let RpcRegistry deal with RoutingTable however
seewit sees fit.

Change-Id: Id96a113638d0240c2f0aa9321c5fc4b4e2384a79
Signed-off-by: Robert Varga <>
6 years agoBUG-7573: add BucketStore source monitoring 85/50585/12
Robert Varga [Tue, 17 Jan 2017 23:09:34 +0000 (00:09 +0100)]
BUG-7573: add BucketStore source monitoring

Add BucketData interface capture, which exposes an optional ActorRef.
If this reference is given for a Bucket's data, the bucket will be tied
to the source actor's lifecycle via DeathWatch.

If such an actor is not provided, only basic cluster-level monitoring
will be done.

Change-Id: I794bbf9b360d0c3bf68b29e6869a4f5c7c0d2470
Signed-off-by: Robert Varga <>
6 years agoBUG-3128: cache ActorSelections 84/50584/12
Robert Varga [Tue, 17 Jan 2017 22:58:01 +0000 (23:58 +0100)]
BUG-3128: cache ActorSelections

This is a performance optimization. Since the ActorSelection
for a remote node is an invariant, keep a handy cache of
these objects so we do not have to construct them on every

Change-Id: I820c1d9be5c198a6cac7932b0de0e0776b35b0a5
Signed-off-by: Robert Varga <>
6 years agoBUG-3128: rework sal-remoterpc-connector 88/50488/26
Robert Varga [Fri, 13 Jan 2017 17:30:22 +0000 (18:30 +0100)]
BUG-3128: rework sal-remoterpc-connector

This patch reworks the implementation to take advantage
of the services provided by DOMRpcService, notifying us
of locally-available services.

Previously we have registered all routed RPCs known in
the SchemaContext for global routing context, which has
causes lookups for routed RPCs not otherwise bound to
call back to the remote connector, which then performed
a router lookup.

This approach is slow as each RPC invocation incurs
an additional round-trip to the RpcRegistry to lookup
the appropriate router before the request is sent to it.
It also does not work for global RPCs, because they
only ever have a global context -- hence the routing
decision needs to be made solely in DOMRpcService.

With this patch we maintain a single higher-cost
implementation registered towards each remote node,
handling RPCs discovered via gossiping RoutingTables.
The implementation dispatches requests directly to that
node's RpcInvoker (formerly known as RpcBroker). That
way DOMRpcService will perform internal routing based
on cost and invoke our service only if there are no
local implementations registered.

RpcRegistry no longer performs delayed router discovery
and instead dispatches RoutingTable bucket updates to
a new actor, RpcRegistrator, whose sole job is to maintain
registrations of RemoteRpcImplementation instances for
each remote node with DOMRpcProviderService.

Because of DOMRpcService's ability to filter registration
notifications, our RpcListener will never be notified
of our registrations, which precludes routing loops. We
can therefore remote RemoteRpcInput, whose sole purpose
was to act as a loop detector.

Futher cleanup is done to RpcManager and RemoteRpcProvider
lifecycle, as these now correctly terminate their children
and remove registrations on both restarts and shutdowns.
RpcManager's children startup is also moved from the
constructor to preStart(), so as correctly plug into
the actor lifecycle.

Gossiper is updated to forward node removals to the BucketStore,
so that buckets from unreachable nodes are removed as soon
as possible.

BucketStore is updated to pass down changed buckets
to the subclass whenever a bucket is removed or updated.
It also requires the subclass to provide the initial bucket
data item -- which makes it obvious that a bucket's data
can never be null. This was previously achieved by sending
updating the bucket data from the subclass constructor.

BucketStore/Gossiper messages are updated to be immutable,
which simplifies their instantiation and ensures that they
do not contain nulls (which is required anyway).

Change-Id: I4efb3ddd8ea46ae5be1eb59f1d4fe508f2bc5763
Signed-off-by: Robert Varga <>
6 years agoBUG-7608: Add ActionServiceMetadata and ActionProviderBean 84/50784/18
Robert Varga [Fri, 20 Jan 2017 21:04:11 +0000 (22:04 +0100)]
BUG-7608: Add ActionServiceMetadata and ActionProviderBean

This patch add the new concepts of action-provider and

The implementation does nothing, as we are transitioning from
a run-time logic being coupled with sal-remoterpc-connector.

This allows us to migrate users, while retaining behavior indepent
of sal-remoterpc-connector's actions. This will allow us to fix

Once it is fixed, and DOMRpcRouter can express the action-provider
advertisement, we are going to actiovate the commented-out code

Change-Id: I3f412d092c10b51a198721f288fdefdfc907f0b7
Signed-off-by: Robert Varga <>
6 years agoBUG-7608: Clarify DOMRpc routing/invocation/listener interactions 34/51034/4
Robert Varga [Wed, 25 Jan 2017 21:47:02 +0000 (22:47 +0100)]
BUG-7608: Clarify DOMRpc routing/invocation/listener interactions

As it happens our DOMRpcProviderService is under-documented around
routing behavior and how it interacts with respect to both
DOMRpcService and DOMRpcAvailabilityListener.

Fix this by defining the interactions the same way they are implemented
in the only implementation, DOMRpcRouter.

The fallout of these clarifications is that blueprint's interpretation
of the API contract covers only the RFC6020 RPC part correctly and falls
short of the RFC7950 action case.

This shortcoming will be addressed in a follow-up patch.

Change-Id: I2572c21b7aa6f24b9e2ed37f446b76a032f1880b
Signed-off-by: Robert Varga <>
6 years agoBUG-7697: add defences against nulls 50/51150/2
Robert Varga [Fri, 27 Jan 2017 19:40:49 +0000 (20:40 +0100)]
BUG-7697: add defences against nulls

Null listener is invalid, also make sure we do not ever set
prevRpcs to null.

Change-Id: If8cd16e93a2a07c77a26569c8ecacdc35696cea1
Signed-off-by: Robert Varga <>
6 years agoBUG-6937: Add ReachableMember case to Gossiper 79/51079/3
Tomas Cere [Thu, 26 Jan 2017 17:36:33 +0000 (18:36 +0100)]
BUG-6937: Add ReachableMember case to Gossiper

In case we detect a member down event we remove that member's
address from the whitelist, leading to further gossips being

Subscribe to ReachableMember event to receive notifications
when the cluster heals, so we propagate re-add the member
back to the whitelist.

Change-Id: Id6b366edfa2be89e1a15225d2cad786bbf552129
Signed-off-by: Tomas Cere <>
Signed-off-by: Robert Varga <>
6 years agoDrop explicit dependency on Findbugs annotations 22/50922/2
Stephen Kitt [Tue, 24 Jan 2017 09:05:20 +0000 (10:05 +0100)]
Drop explicit dependency on Findbugs annotations

odlparent provides jsr305, and will eventually provide annotations
instead; so the dependencies no longer need to be explicitly added to
downstream projects.

Bug: 7663
Change-Id: If8fa8b231f9cb3d4a5e4fbdbd1b58e720756f5c0
Signed-off-by: Stephen Kitt <>