3 years agoAdd documentation about per-shard settings 31/89931/2
Robert Varga [Mon, 25 May 2020 17:44:44 +0000 (19:44 +0200)]
Add documentation about per-shard settings

Previous implementation of per-shard datastore properties did not
document this ability. Make sure we document it and properly test it.

Change-Id: I5be13c73e76e612a93620710e6a00b78d9dee216
Signed-off-by: Robert Varga <>
3 years agoAdd tests for new RootDataTreeChangeListenerProxy and Actor 07/89907/4
Tibor Král [Thu, 21 May 2020 16:27:08 +0000 (18:27 +0200)]
Add tests for new RootDataTreeChangeListenerProxy and Actor

Listening on root with multiple shards is not tested anywhere,
add some test coverage.

Change-Id: Ie0d94f2d9b90869a140b73d85f1696df712fad25
Signed-off-by: Tibor Král <>
Signed-off-by: Robert Varga <>
3 years agoDo not bump follower term while it is isolated 63/89863/3
Tomas Cere [Fri, 22 May 2020 11:11:04 +0000 (13:11 +0200)]
Do not bump follower term while it is isolated

When a follower gets into a state that its isolated(ie cannot reach either peer)
it starts bumping its term every election timeout. Once the cluster heals it
would then disrupt the cluster because it has a higher term then the healthy part.
We can avoid this by not triggering new elections on followers that cannot
reach other peers while they are unreachable.

Change-Id: I8ee9f333740637ba5569287d405540f374bbc4bc
Signed-off-by: Tomas Cere <>
3 years agoAdd support for root DTCL listening on all shards in DS 04/88804/15
Robert Varga [Tue, 19 May 2020 14:37:47 +0000 (16:37 +0200)]
Add support for root DTCL listening on all shards in DS

Devide DTCLProxy into DTCLSingleShardProxy, DTCLMultiShardProxy and
DTCLPrefixShardProxy to address the different registration mechanisms
used in all three cases.

Change-Id: I48732577f26fa5844b69a2feaddb02fe53909da7
Signed-off-by: Tibor Král <>
Signed-off-by: Robert Varga <>
3 years agoClean up legacy API bridging 65/89865/1
Robert Varga [Tue, 19 May 2020 14:55:11 +0000 (16:55 +0200)]
Clean up legacy API bridging

Since we have removed controller APIs, there is no longer a need
to proxy interfaces and we can completely reference MD-SAL concepts.

Change-Id: I34d277bc86ab07c70d74bb23b381faf226f4f2e3
Signed-off-by: Robert Varga <>
3 years agoFix DeleteEntries persisting with wrong index 03/89703/5
tadei.bilan [Tue, 12 May 2020 14:03:37 +0000 (17:03 +0300)]
Fix DeleteEntries persisting with wrong index

During persisting we delete entries, so in case of persisting DeleteEntries with adjusted index,
 index is being adjusted twice, that results in additional entries being deleted during recovery.


Signed-off-by: tadei.bilan <>
Change-Id: Ib326f02630281ed52982dab2f48c01503b791ef7

3 years agoAttach test-jar sources 02/89702/1
Robert Varga [Tue, 12 May 2020 12:57:47 +0000 (14:57 +0200)]
Attach test-jar sources

We are distributing test infrastructure within test-jars, but do not
create -sources for those artifacts. Make sure we do, making it easier
on IDE users.

Change-Id: Icb1c1863ec98fc4f3fadb2c4d7e2b86df323ab7c
Signed-off-by: Robert Varga <>
3 years agoFix a feature typo 63/89663/1
Robert Varga [Mon, 11 May 2020 14:09:12 +0000 (16:09 +0200)]
Fix a feature typo

We have 'odl' prefix added twice, fix that.

Change-Id: If71674c4373040936eaacf0850712d387c295e54
Signed-off-by: Robert Varga <>
3 years agoBump version to 2.0.1-SNAPSHOT 74/89474/5
Robert Varga [Mon, 27 Apr 2020 22:58:31 +0000 (00:58 +0200)]
Bump version to 2.0.1-SNAPSHOT

This starts the next development iteration.

Change-Id: I2f401017e49f34077ffa71fbda5648e282868c04
Signed-off-by: Robert Varga <>
3 years agoChange distribution name to controller-test-karaf 86/89486/2
Robert Varga [Tue, 28 Apr 2020 09:59:14 +0000 (11:59 +0200)]
Change distribution name to controller-test-karaf

Shorted the name of the distribution and use a directory which
is a wee bit more friendly. Also do not package mdsal's feature
repository, only features from controller.

Change-Id: I90d413ce20e6de25138a6096d0951eafa26d0b6f
Signed-off-by: Robert Varga <>
3 years agoRemove NormalizedNodePruner 85/89485/2
Robert Varga [Tue, 28 Apr 2020 09:19:05 +0000 (11:19 +0200)]
Remove NormalizedNodePruner

This one-shot class has been deprecated, remove it now.

Change-Id: I4a94e7ef191febcb76aa014b0175529ceee47e96
Signed-off-by: Robert Varga <>
3 years agoRemove superfluous groupId declarations 83/89483/2
Robert Varga [Tue, 28 Apr 2020 07:20:20 +0000 (09:20 +0200)]
Remove superfluous groupId declarations

When we are inherinting from a controller parent, there is no point
in specifying the groupId again, remove such declarations.

Change-Id: I95acd155bf8c63cb29f727b8e0af8d77ad2efca6
Signed-off-by: Robert Varga <>
3 years agoRemove use of deprecated addAugmentation() 81/89481/2
Robert Varga [Tue, 28 Apr 2020 07:09:28 +0000 (09:09 +0200)]
Remove use of deprecated addAugmentation()

The two-argument variant has been removed, do not use it.

Change-Id: Iae92f7215994dd46f237284acd295eb37c5f2950
Signed-off-by: Robert Varga <>
3 years agoCleanup versions across modules 72/89472/2
Robert Varga [Mon, 27 Apr 2020 20:31:34 +0000 (22:31 +0200)]
Cleanup versions across modules

This finishes up the audit of pom.xml files to eliminate
superfluous version declarations.

Change-Id: Id7c671ad1c16ffb7db15709709fec9d933c65170
Signed-off-by: Robert Varga <>
3 years agoMove odl-toaster to experimental features 71/89471/2
Robert Varga [Mon, 27 Apr 2020 20:19:09 +0000 (22:19 +0200)]
Move odl-toaster to experimental features

odl-toaster is not a production feature, move it to experimental

Change-Id: I040af8543921cb861f2ccfca48d4154c1d5c6b17
Signed-off-by: Robert Varga <>
3 years agoRemove unused declaration 73/89473/2
Robert Varga [Mon, 27 Apr 2020 20:40:25 +0000 (22:40 +0200)]
Remove unused declaration

We do not need this declaration, remove it.

Change-Id: I499b7525229cffb59b2526fdb6e9629cabcf5cdd
Signed-off-by: Robert Varga <>
3 years agoUpdate feature version declarations 70/89470/1
Robert Varga [Mon, 27 Apr 2020 20:17:38 +0000 (22:17 +0200)]
Update feature version declarations

We do not need to override parent's version, as it matches our
version. Also trim down use of project.version where the artifact
is already declared in artifacts.

Change-Id: I3692983e6853eb3f90e843a082d4ea19a8d7b279
Signed-off-by: Robert Varga <>
3 years agoCleanup docs use of versions 69/89469/1
Robert Varga [Mon, 27 Apr 2020 20:17:10 +0000 (22:17 +0200)]
Cleanup docs use of versions

We can use project.version here, let's do that to keep explicit
versions down.

Change-Id: Ia652946ac279efb7c6568a78d53756c92934eec4
Signed-off-by: Robert Varga <>
3 years agoUpdate benchmark integration 68/89468/1
Robert Varga [Mon, 27 Apr 2020 20:06:35 +0000 (22:06 +0200)]
Update benchmark integration

Reuse mdsal-parent to get both the project version and dependency
declarations, eliminating some amount of duplication.

Change-Id: I08bbae324edc340daef748803284853ddbba5b2d
Signed-off-by: Robert Varga <>
3 years agoUpdate 1.15.0-SNAPSHOT to 2.0.0-SNAPSHOT 67/89467/1
Robert Varga [Mon, 27 Apr 2020 19:58:51 +0000 (21:58 +0200)]
Update 1.15.0-SNAPSHOT to 2.0.0-SNAPSHOT

This performs the final part of version alignment. All artifacts
except config remnants are bumped to 2.0.0-SNAPSHOT, achieving
a consistent version across all non-deprecated functionality.

Change-Id: I8378059b05b32a2abf37ffe5356bb6f3a43628f6
Signed-off-by: Robert Varga <>
3 years agoEliminate odl-jolokia-osgi.version 66/89466/1
Robert Varga [Mon, 27 Apr 2020 19:56:24 +0000 (21:56 +0200)]
Eliminate odl-jolokia-osgi.version

This version is aligned with project.version, hence we can
drop the custom property.

Change-Id: Iaa046cfff77b1be8ebcaee1e8e8561c1fa14adc7
Signed-off-by: Robert Varga <>
3 years agoEliminate blueprint.version 65/89465/1
Robert Varga [Mon, 27 Apr 2020 19:53:10 +0000 (21:53 +0200)]
Eliminate blueprint.version

We have achieved alignment of blueprint.version with project.version,
which means we can ditch the specialized property.

Change-Id: Iabd86c00b4a5134f528a844f061586b9dc7b8188
Signed-off-by: Robert Varga <>
3 years agoMass-update 1.12.0-SNAPSHOT to 2.0.0-SNAPSHOT 64/89464/1
Robert Varga [Mon, 27 Apr 2020 19:50:47 +0000 (21:50 +0200)]
Mass-update 1.12.0-SNAPSHOT to 2.0.0-SNAPSHOT

Update the primary version to 2.0.0-SNAPSHOT, reflecting the major
shakeup we have done in this release cycle.

Change-Id: I597dfa652ed636b0523853bdea97e1caa825d1f5
Signed-off-by: Robert Varga <>
3 years agoUpdate CDS versions to 1.12.0-SNAPSHOT 63/89463/1
Robert Varga [Mon, 27 Apr 2020 19:48:16 +0000 (21:48 +0200)]
Update CDS versions to 1.12.0-SNAPSHOT

These versions are four versions behind artifacts, bump them to

Change-Id: I85ad5cade48048ba6edb0c575f142de01e6576cf
Signed-off-by: Robert Varga <>
3 years agoAlign benchmark versions to 1.12.0-SNAPSHOT 62/89462/1
Robert Varga [Mon, 27 Apr 2020 19:45:10 +0000 (21:45 +0200)]
Align benchmark versions to 1.12.0-SNAPSHOT

These versions are trailing by two release, make sure they are

Change-Id: I7e92f3bd701e6ab87d57a8508e0030e912589276
Signed-off-by: Robert Varga <>
3 years agoBump root and docs to 1.12.0-SNAPSHOT 61/89461/1
Robert Varga [Mon, 27 Apr 2020 19:40:59 +0000 (21:40 +0200)]
Bump root and docs to 1.12.0-SNAPSHOT

This is the version advertized by artifacts, let's just align
on that for now.

Change-Id: I5ee4835b72ba35eb0cf75fc90c1636bb068f6860
Signed-off-by: Robert Varga <>
3 years agoAlign odl-jolokia-osgi version with project 60/89460/1
Robert Varga [Mon, 27 Apr 2020 19:39:24 +0000 (21:39 +0200)]
Align odl-jolokia-osgi version with project

Our project version (as defined by artifacts) is 1.12.0-SNAPSHOT,
make sure jolokia is using the same version.

Change-Id: I0ebeb8fa17f8ded15fe8a02b8310825bb2847996
Signed-off-by: Robert Varga <>
3 years agoAlign odl-controller-exp-netty-config version 59/89459/1
Robert Varga [Mon, 27 Apr 2020 19:36:18 +0000 (21:36 +0200)]
Align odl-controller-exp-netty-config version

We want to have feature versions aligned with the overall project
version -- do that for odl-controller-exp-netty-config.

Change-Id: I445f5d94d7ad9412c1ec0eb9eb89e7af303ebaef
Signed-off-by: Robert Varga <>
3 years agoPromote blueprint version to 2.0.0 58/89458/1
Robert Varga [Mon, 27 Apr 2020 19:33:55 +0000 (21:33 +0200)]
Promote blueprint version to 2.0.0

We want to coordinate all versions, and given the mix of versions
we are currently defining, 2.0.0 is the best candidate.

Change-Id: Ic6c0fb894816a65cd138ae36b96cb0c82cbb35e8
Signed-off-by: Robert Varga <>
3 years agoRemove benchmark-data-store 39/89439/3
Robert Varga [Mon, 27 Apr 2020 11:22:03 +0000 (13:22 +0200)]
Remove benchmark-data-store

This code has been migrated to mdsal component, remove it.

Change-Id: I238f7e09a3907ce07cc4fc857a6fea72d69204cf
Signed-off-by: Robert Varga <>
3 years agoFix datastore benchmark 38/89438/3
Robert Varga [Mon, 27 Apr 2020 10:10:25 +0000 (12:10 +0200)]
Fix datastore benchmark

The benchmark slid into disrepair, fix it up again and shorten
its run length.

Change-Id: I874c0979615f289ee726e4b6926b6d9d8aba5184
Signed-off-by: Robert Varga <>
3 years agoCleanup aggregator poms 37/89437/3
Robert Varga [Mon, 27 Apr 2020 09:34:31 +0000 (11:34 +0200)]
Cleanup aggregator poms

We do not want expose our repository layout to outside world, hence
cleanup aggregators so they are just that and are not installed.

Change-Id: Ib9ec89e46ed4a966a0750778f6067096ebbb8a14
Signed-off-by: Robert Varga <>
3 years agoCreate features-controller 35/89435/5
Robert Varga [Mon, 27 Apr 2020 08:41:26 +0000 (10:41 +0200)]
Create features-controller

Squash features-mdsal and features-extras into a single production
features repository.

Change-Id: I76f3f8e575d9faa3979aeefa62d466d3c889dff3
Signed-off-by: Robert Varga <>
3 years agoRemove archetypes 34/89434/4
Robert Varga [Mon, 27 Apr 2020 08:31:53 +0000 (10:31 +0200)]
Remove archetypes

Archetypes has been split into a separate project. remove its

Change-Id: I586fef9a04c71a82ce56be519760cbc1e97eda40
Signed-off-by: Robert Varga <>
3 years agoClean up odl-message-bus-collector 33/89433/4
Robert Varga [Mon, 27 Apr 2020 07:46:09 +0000 (09:46 +0200)]
Clean up odl-message-bus-collector

This is not an end-user feature and it is quite experimental, with
only provider being NETCONF, and that at beta quality. Move it out
to expertimental features, with adjusted name.

Change-Id: Ib16a322d81c6ac5aa7c8f7b059a949f0473fb2f8
Signed-off-by: Robert Varga <>
3 years agoClean up features-mdsal-benchmark 06/89406/4
Robert Varga [Sun, 26 Apr 2020 20:24:18 +0000 (22:24 +0200)]
Clean up features-mdsal-benchmark

The benchmark features are not really used anywhere. Repurpose them
as features-controller-testing, so that our testing code has an
isolated feature repository.

Change-Id: I18502d99ef133694ee8bb33685af82209b3f57ad
Signed-off-by: Robert Varga <>
3 years agoClean up features-config-netty 05/89405/1
Robert Varga [Sun, 26 Apr 2020 19:37:09 +0000 (21:37 +0200)]
Clean up features-config-netty

This feature repository contains a single feature, odl-config-netty,
which really is a remnant of config subsystem.

It further attempts to unify configuration of various southbound
modules' use of Netty, which unfortunately does not work because
downstreams need have better control over verious aspects of Netty

Furthermore not everyone is using this infrastructure, and even
then it is a bad idea, as it lowers the amount of isolation plugins

Repurpose this feature repository as features-controller-experimental,
holding a single odl-controller-exp-netty-config feature. This
clearly indicates the amount of stability that can be expected
and the plan is to move downstreams away from this feature.

Change-Id: I2edb9da48795cf1ff7de68c943c1bf895f584577
Signed-off-by: Robert Varga <>
3 years agoAdd controller's single-feature-parent 04/89404/2
Robert Varga [Sun, 26 Apr 2020 18:00:18 +0000 (20:00 +0200)]
Add controller's single-feature-parent

Sharing common knobs cuts down on duplication and allows us to
keep consistency.

Change-Id: I796218c981d3278f0fbe2b62e4a51a97577caad0
Signed-off-by: Robert Varga <>
3 years agoBump mdsal to 6.0.0 03/89403/1
Robert Varga [Sun, 26 Apr 2020 17:27:49 +0000 (19:27 +0200)]
Bump mdsal to 6.0.0

MD-SAL has been released, make sure we stabilize our reference to

Change-Id: I77578b64916e02a6ed1a27aae859d50458865547
Signed-off-by: Robert Varga <>
3 years agoMove features 02/89402/1
Robert Varga [Sun, 26 Apr 2020 16:36:11 +0000 (18:36 +0200)]
Move features

We want to flatten our structure, make sure we concentrate features
in the main directory.

Also eliminate odl-extras-all, as that is just an an aggregator for

Change-Id: I6b7d5a0a8c12e574500c410f6fd3829275f7034b
Signed-off-by: Robert Varga <>
3 years agoRename controller-features 01/89401/1
Robert Varga [Sun, 26 Apr 2020 16:33:38 +0000 (18:33 +0200)]
Rename controller-features

This is an aggregator, which should not be installed. Fix its name
and stop publishing it.

Change-Id: I8444d8e5a5637e29843630328f9419fc00613dad
Signed-off-by: Robert Varga <>
3 years agoBump yangtools to 5.0.1 35/89335/1
Robert Varga [Fri, 24 Apr 2020 10:06:18 +0000 (12:06 +0200)]
Bump yangtools to 5.0.1

We need a few more changes from yangtools to get across the finish
line, pick them up.

Change-Id: Id026c2fdf1b69158f5d7fad19518fc7e00247023
Signed-off-by: Robert Varga <>
3 years agoPropagate EffectiveModelContext in blueprint 21/89321/2
Robert Varga [Thu, 23 Apr 2020 15:56:51 +0000 (17:56 +0200)]
Propagate EffectiveModelContext in blueprint

We are moving away from SchemaContext, start using its replacement.

Change-Id: If222b7ac2fa2004d1af72504d63b139cb42bd4ac
Signed-off-by: Robert Varga <>
3 years agoPartially revert "Adjust for RPCService methods changing" 20/89320/2
Robert Varga [Thu, 23 Apr 2020 18:53:28 +0000 (20:53 +0200)]
Partially revert "Adjust for RPCService methods changing"

This reverts commit ba6824307ad4b3c272abefe9682d623adc3b42d2,
as it was overzealous with regards to ContainerNode conversion.
This reverts parts of it, so that we arrive at something sane.

Change-Id: I9bd61b6dd1c88b53c39ac1b8791edaf38cad7885
Signed-off-by: Robert Varga <>
3 years agoAdjust to CodeHelpers having been updated 19/89319/2
Robert Varga [Thu, 23 Apr 2020 15:32:19 +0000 (17:32 +0200)]
Adjust to CodeHelpers having been updated

MD-SAL has provided more useful methods to use this, fix compilation

Change-Id: I354e4e4e224a0b53d59283a7af8196a5cb56778b
Signed-off-by: Robert Varga <>
3 years agoAdjust for RPCService methods changing 05/89305/1
Robert Varga [Wed, 22 Apr 2020 23:29:18 +0000 (01:29 +0200)]
Adjust for RPCService methods changing

ListenableFuture return from the API contract has changed slightly,
adjust for that. Also make sure we do not pass nulls to RPC

Change-Id: I62e6adc5d7226267c4c3c125ebb2fd43b3af1a5b
Signed-off-by: Robert Varga <>
3 years agoRemove executable bit from RaftActor 33/89133/2
Robert Varga [Sun, 19 Apr 2020 13:34:00 +0000 (15:34 +0200)]
Remove executable bit from RaftActor

This should never have been here, remove it.

Change-Id: Ib4dab9fe680aa1a21067168a2dd9715dc719bd80
Signed-off-by: Robert Varga <>
3 years agoRemove netty-config-api 29/89129/1
Robert Varga [Sun, 19 Apr 2020 08:44:34 +0000 (10:44 +0200)]
Remove netty-config-api

This artifact does not contain anything, serving only to pull in
netty-transport. Remove it and adjust its users to pul in what they
need, which ends up lowering dependencies in some cases.

Change-Id: I8d5bcb6cf5284d0780c9b41b5f7fa9008d7db14f
Signed-off-by: Robert Varga <>
3 years agoCentralize artifacts 27/89127/1
Robert Varga [Sat, 18 Apr 2020 20:47:32 +0000 (22:47 +0200)]
Centralize artifacts

Rather than having three different sets of artifacts:
- mdsal-artifacts
- config-artifacts
- benchmark-artifacts

Create a project-wide controller-artifacts, just as the guidelines
tell us to. This has the benefit for downstreams, as they do not
need to track multiple versions. It also benefits us, as we have
a single place for tracking what we produce.

Change-Id: I73cc02c6f1df6c4d705ef83dfc57e6aad17c6287
Signed-off-by: Robert Varga <>
3 years agoBump to yangtools-5.0.0 26/89126/1
Robert Varga [Sat, 18 Apr 2020 14:12:26 +0000 (16:12 +0200)]
Bump to yangtools-5.0.0

We have things integrated and have an upstream release, use that
instead of snapshots.

Change-Id: I5f8318c71e15903031b55ac7dc96bbd4acbc0352
Signed-off-by: Robert Varga <>
3 years agoRealign upstream javadoc links 25/89125/1
Robert Varga [Sat, 18 Apr 2020 14:10:48 +0000 (16:10 +0200)]
Realign upstream javadoc links

Our links were desynchronized, fix that.

Change-Id: I6ae58edd6e4048fe43f8ce4f226a0a4aa47220e8
Signed-off-by: Robert Varga <>
3 years agoBump odlparent/yangtools/mdsal 49/88849/25
Robert Varga [Thu, 2 Apr 2020 12:15:52 +0000 (14:15 +0200)]
Bump odlparent/yangtools/mdsal

Update upstream references to:
- odlparent-7.0.1
- yangtools-5.0.0-SNAPSHOT
- mdsal-6.0.0-SNAPSHOT

Also adjust the codebase to match changes in yangtools/mdsal
and scala-2.13.

Change-Id: Ib082e955b5106fa002522dfe3d7a21fe990006d8
Signed-off-by: Robert Varga <>
3 years agoRemove remnants of leveldb configuration 96/88996/1
Robert Varga [Thu, 9 Apr 2020 15:24:22 +0000 (17:24 +0200)]
Remove remnants of leveldb configuration

We do not have leveldb available in Aluminium, remove remaining
configuration directives which would reference it.

Change-Id: I586b96b16adda975c2df405cb8154bc568f06d81
Signed-off-by: Robert Varga <>
3 years agoSwitch default persistence to segmented-journal 95/88995/1
Robert Varga [Tue, 11 Feb 2020 17:26:32 +0000 (18:26 +0100)]
Switch default persistence to segmented-journal

We want to migrate away fro leveldb persistence, this switches
the default persistence being used for new deployments to our own
segmented-journal plugin.

Change-Id: I9db4e8115ac8f31c5c331c194de1ff08a674af97
Signed-off-by: Robert Varga <>
3 years agoMigrate Assert.assertThat() 78/88878/4
Robert Varga [Fri, 3 Apr 2020 15:42:46 +0000 (17:42 +0200)]
Migrate Assert.assertThat()

This method has been migrated, make sure we use its new place.

Change-Id: Ib17471706233150f26a452b8bca36914a95fc8db
Signed-off-by: Robert Varga <>
3 years agoAdd automatic module names for CDS API compoments 58/88858/2
Robert Varga [Thu, 2 Apr 2020 16:49:34 +0000 (18:49 +0200)]
Add automatic module names for CDS API compoments

Add basic JPMS integration by fixing the module name through which
this compatibility is available.

Change-Id: I4636b121b179fcf04b58c095dbcc16a795091ad5
Signed-off-by: Robert Varga <>
3 years agoSimplify DistributedShardFrontendTest assertions 77/88877/2
Robert Varga [Fri, 3 Apr 2020 14:05:20 +0000 (16:05 +0200)]
Simplify DistributedShardFrontendTest assertions

Rather than matching entries in their order, realize that an
entry is need not retain its argument values, and hence can be
expected to apply children in different order.

Change-Id: I8ab97750e593a2f2d548f97075b1ee36c04179c3
Signed-off-by: Robert Varga <>
3 years agoRemove deprecated MD-SAL APIs 36/87936/15
Robert Varga [Fri, 21 Feb 2020 05:41:50 +0000 (06:41 +0100)]
Remove deprecated MD-SAL APIs

The APIs in controller have been deprecated for removal and cannot
sustain an upgrade to Guava-28+. Remove them along with all supporting

Change-Id: I213797b7045cfd7bef744e249614e2b1f6169c1c
Signed-off-by: Robert Varga <>
3 years agoMigrate OSGI compendium reference 48/88848/2
Robert Varga [Thu, 2 Apr 2020 12:24:03 +0000 (14:24 +0200)]
Migrate OSGI compendium reference

OSGi R6 has moved the artifact declaration, make sure we do not use
the R5 one.

Change-Id: If1fcfbdc97fbba1d6ee962a77046a13bdf6da7e2
Signed-off-by: Robert Varga <>
3 years agoFix checkstyle 53/88853/2
Robert Varga [Thu, 2 Apr 2020 12:26:12 +0000 (14:26 +0200)]
Fix checkstyle

Upgraded checkstyle is finding some violations, fix them up.

Change-Id: I7d29834cb38eda40f90fdf04935bef137da843f0
Signed-off-by: Robert Varga <>
3 years agoFixup "Leader should always apply modifications as local" regression 16/87616/4
Tomas Cere [Wed, 12 Feb 2020 12:23:22 +0000 (13:23 +0100)]
Fixup "Leader should always apply modifications as local" regression

This reintroduces the original commit:
and fixes up the two bugs it introduced.

First one didn't account for the fact that the new leader might have not
tracked forwarded transactions from the previous leader which would
be ignored. Previously not tracked transactions are now applied
normally on the new leader.

Second issue was that we started keeping around deserialized
candidates in memory in each CommitTransactionPayload even after they
were applied and no longer needed.During the final use of the
candidate in ShardDataTree the candidate is now clearedduring
CommitTransactionPayload.acquireCandidate() which allows the
deserialized candidate to be cleared by GC.

Change-Id: I47876d4d29a8e9b6b9283d70e47108f3dc2ed3ee
Signed-off-by: Tomas Cere <>
3 years agoDo not use passive connections 37/88437/1
Robert Varga [Mon, 16 Mar 2020 11:45:48 +0000 (12:45 +0100)]
Do not use passive connections

We are seeing issues with passive connections, pointing towards
switching them off (or migrate to Artery TCP, which is one-way).

As Artery TCP has memory leaks before 2.5.29, opt to disable passive

Change-Id: Ia9779ad6a7d9d2bc73306d0968e5d22553450fac
Signed-off-by: Robert Varga <>
3 years agoRemove NormalizedNodeInputOutput and related classes 35/87935/3
Robert Varga [Fri, 21 Feb 2020 05:33:21 +0000 (06:33 +0100)]
Remove NormalizedNodeInputOutput and related classes

This functionality is available from yangtools, remove compatibility
wrappers as they have been deprecated.

Change-Id: I40be1adb795a6663d647191eeab2f52afb6cbbb1
Signed-off-by: Robert Varga <>
3 years agoExpose more fine-grained shutdown methods 34/87934/2
Robert Varga [Fri, 21 Feb 2020 05:28:55 +0000 (06:28 +0100)]
Expose more fine-grained shutdown methods

We want to the user to be in control of timing of shutdown, expose
appropriate methods to do that.

Change-Id: Id0a787a1b707a3eb6c2909c52023cc5eac3c1402
Signed-off-by: Robert Varga <>
3 years agoBump versions by x.y.(z+1) 86/87986/1
jenkins-releng [Sat, 22 Feb 2020 04:30:15 +0000 (04:30 +0000)]
Bump versions by x.y.(z+1)

Signed-off-by: jenkins-releng <>
Change-Id: I4cbd97f4e31c98c1456142f8bbee0bf0c3be1377

3 years agoPropagate TimeoutException when ActorSystem fails to terminate 82/87482/2
Tibor Král [Thu, 6 Feb 2020 11:19:42 +0000 (12:19 +0100)]
Propagate TimeoutException when ActorSystem fails to terminate

ActorSystemProviderImpl waits 10s for the ActorSystem to terminate.
If this timeout is reached propagate the resulting TimeoutException
so the caller knows something went wrong.

Change-Id: I6518600e2930e3a0a955215b24a9b3074730ff64
Signed-off-by: Tibor Král <>
3 years agoRevert "Leader should always apply modifications as local" 52/87452/1
Robert Varga [Wed, 5 Feb 2020 14:13:46 +0000 (15:13 +0100)]
Revert "Leader should always apply modifications as local"

This reverts commit 9b319f491af1c65705b69e8a182aab5006a2f959, which
broke both upgrade-recovery and pre-leader entry application. We
will re-visit the patch and try again.

Change-Id: I23e4264cf6a20e9d2369d44005c31db1ef7635c9
Signed-off-by: Robert Varga <>
3 years agoCache full datastore context 71/87071/2
Robert Varga [Tue, 21 Jan 2020 22:31:31 +0000 (23:31 +0100)]
Cache full datastore context

While the context is small, it is also invariant across a number of
test cases, each of which is instantiating it. Just share one
instance across all tests to speed them up.

While we are at it, we switch to using EffectiveModelContext to
ease our future migration.

Change-Id: I29a89e93903e7582bde4984828405aa2a8e45c27
Signed-off-by: Robert Varga <>
3 years agoForce pruning during data migration 67/87067/2
Robert Varga [Tue, 21 Jan 2020 13:31:48 +0000 (14:31 +0100)]
Force pruning during data migration

Our current PruningDataTreeModification performs pruning only in
two cases:
1) the root is being written (i.e. Snapshot recovery)
2) DataTree reports a validation issue

This is not sufficient for uint-type migration, as we have to
subject all writes and merges to pruning/translation irrespective
of where they occur.

Split up PruningDataTreeModification into two implementations,
Proactive and Reactive and use them as appropriate based on migration

Change-Id: I4184c56380b7f52a8d7af6f17346f9c5edd31b28
Signed-off-by: Robert Varga <>
3 years agoCleanup PruningDataTreeModification 66/87066/1
Robert Varga [Tue, 21 Jan 2020 13:22:21 +0000 (14:22 +0100)]
Cleanup PruningDataTreeModification

Rename arguments to match API contract, simplify empty
YangInstanceIdentifier checks and do not attempt pruning multiple

Change-Id: I4c5c8af89116b9c6f7c9dd30f63e32eca94de941
Signed-off-by: Robert Varga <>
3 years agoTranslate uint values for old streams 42/87042/10
Robert Varga [Sun, 19 Jan 2020 12:11:28 +0000 (13:11 +0100)]
Translate uint values for old streams

When we encounter a commit that was produced before Mg, we know
uints are upcasted and hence want to convert values. Same goes
for recovery snapshots.

Change-Id: Id22830abaf5adc2d9ca7f5d0233409a971cf0c01
Signed-off-by: Robert Varga <>
3 years agoAllow programmatic module sharding configuration 26/85326/12
Tibor Král [Tue, 22 Oct 2019 16:24:21 +0000 (18:24 +0200)]
Allow programmatic module sharding configuration

Adds the option to create Configuration without the need for
module-shards.conf file. Current version only accepts a path
to the module-shards.conf. The file is later loaded and
deserialized into a Config object. This patch provides the
option to pass the Config object directly.

Change-Id: Ibeb666bd5f01d7ae972d26453046c959749a0656
Signed-off-by: Tibor Král <>
Signed-off-by: Robert Varga <>
3 years agoExpose stream version used for DataTreeCandidate stream 38/87038/8
Robert Varga [Sun, 19 Jan 2020 10:53:05 +0000 (11:53 +0100)]
Expose stream version used for DataTreeCandidate stream

We need to properly version the payload stream, as it gives us
the view into which version produced it. This allows us to make
proper typing assumptions in normalization (and thus pruning).

Change-Id: Iaea995a5ac58e1fba2a4199d3355b321cf9fcff3
Signed-off-by: Robert Varga <>
3 years agoAdd PathArgument uint adaptation 31/87031/12
Robert Varga [Tue, 17 Dec 2019 11:56:56 +0000 (12:56 +0100)]
Add PathArgument uint adaptation

Legacy uint values may be present in NodeWithValue as well
as NodeIdentifierWithPredicates. Make sure we run the appropriate

Change-Id: Ib59adb9e596e4d63110cbe9987feeedc61cb05eb
Signed-off-by: Robert Varga <>
3 years agoRefactor PruningDataTreeModification instantiation 41/87041/4
Robert Varga [Sun, 19 Jan 2020 11:39:58 +0000 (12:39 +0100)]
Refactor PruningDataTreeModification instantiation

Hiding the pruner works against what we want to do, as we need
to be able to control how pruning works. While we are at it, hide
delegate() so that users are forced to hold on to this invariant.

Change-Id: Iba78b2fd5f775281bf4bc04f449539d185c94f9c
Signed-off-by: Robert Varga <>
3 years agoRework PruningDataTreeModificationTest 37/87037/2
Robert Varga [Sun, 19 Jan 2020 10:20:08 +0000 (11:20 +0100)]
Rework PruningDataTreeModificationTest

Eliminate the use of a dedicated constructor, ensure invariants
are shared across tests.

Change-Id: Ieaec8bafcb7c2f6bf4fe22815b1b14f84d396ef9
Signed-off-by: Robert Varga <>
3 years agoLeader should always apply modifications as local 76/82576/24
Tomas Cere [Tue, 18 Jun 2019 12:54:56 +0000 (14:54 +0200)]
Leader should always apply modifications as local

Normally an entry application is as follows:
1. leader sends an append entry off to persistence and replicates it to
2. leaders creates its ClientRequestTracker
3. when the entry is done with persistence and replication leader moves its
   commit index
4. part of moving the commit index is sending an ApplyState message which
   finalizes the entry application in the DataTree
5. The ApplyState determines if a ClientRequestTracker is present and adds
   an identifier to the ApplyState message if it is. This determines the way
   in which the finalize of the entry application happens in the DataTree.
   If it is present the entry is applied as if it originated on the leader,
   if it is not present it is applied as if the node is a follower.

The problem is when the leader flaps in a leader -> follower -> leader
transition after 2. and before 4..

This would mean that the new leader no longer has the ClientRequestTracker
which was created in the previous leader state, which means that when it
starts with 5. it will create the ApplyState without an identifier
and the entry finishes up the application as if the node is a follower.

This means that it will be applied without finishCommit which means that
the transaction will be forever stuck in COMMIT_PENDING state until
the node would be restarted.

Change this up, so that the leader will apply modifications as local, even
when it looses its ClientRequestTracker and add Identifiable to payloads
which require it.

Since this code path should never occur when we are candidate, catch this
transition. As ClientRequestTracker becomes an optional entity, we hide that
as well.

Change-Id: I636f998cd62ec82ef02193261624e4a51275fb86
Signed-off-by: Tomas Cere <>
Signed-off-by: Robert Varga <>
3 years agoBump to odlparent-6.0.4/yangtools-4.0.6/mdsal-5.0.9 94/86994/2
Robert Varga [Thu, 16 Jan 2020 21:02:40 +0000 (22:02 +0100)]
Bump to odlparent-6.0.4/yangtools-4.0.6/mdsal-5.0.9

Pick up latest fixes and upgrades.

Change-Id: I362cc1e6bee6b9d3b6183747188cec24ad005b60
Signed-off-by: Robert Varga <>
3 years agoSplit out sal-distributed-eos 79/86679/7
Robert Varga [Thu, 2 Jan 2020 12:20:37 +0000 (13:20 +0100)]
Split out sal-distributed-eos

This splits out entity ownership implementation from
sal-distributed-datastore. Key point here is that the tie with
CDS is an implementation detail, which is subject to future
revision (for example by using purely raft-based-approach).

Change-Id: Ia62b0a14991e64424b08e0d4274b0e8eaffdacbd
Signed-off-by: Robert Varga <>
3 years agoRefactor AbstractClientHandle a bit 45/85745/10
Robert Varga [Tue, 12 Nov 2019 11:21:13 +0000 (12:21 +0100)]
Refactor AbstractClientHandle a bit

We can pull the proxy creation method down into the subclass,
making it simpler to follow.

Change-Id: I0d025ace708a0646fb0c7dc49fc3f819453b90e5
Signed-off-by: Robert Varga <>
3 years agoLower dependency to minimal network topology 21/86721/1
Robert Varga [Sun, 5 Jan 2020 16:53:15 +0000 (17:53 +0100)]
Lower dependency to minimal network topology

Controller does not need topology model extensions, it just needs
the base model. Lower feature dependencies to express that.

Change-Id: I0ccf880420eae05909fc9e2a35223a051bc49a1a
Signed-off-by: Robert Varga <>
3 years agoRemove unneeded checkstyle suppression 85/86685/1
Robert Varga [Fri, 3 Jan 2020 12:44:17 +0000 (13:44 +0100)]
Remove unneeded checkstyle suppression

We are not catching anything here, remove the suppression.

Change-Id: If15723f11bc7099d55fc1eaaa9bfa6b86461dae9
Signed-off-by: Robert Varga <>
3 years agoRemove jsr173-ri from dependencies 79/86479/1
Robert Varga [Wed, 18 Dec 2019 11:09:46 +0000 (12:09 +0100)]
Remove jsr173-ri from dependencies

JSR173 is part of JRE, hence there is no point to inherit this
dependency. It also helps to have our releases consumable from
Central (which does not carry the .jar).

Change-Id: I3cd50c6f20149e48c1946c0ea50a3a8e57f847b1
Signed-off-by: Robert Varga <>
3 years agoUse yang-data-codec-binfmt 25/86425/6
Robert Varga [Sun, 15 Dec 2019 16:41:34 +0000 (17:41 +0100)]
Use yang-data-codec-binfmt

yang-data-codec-binfmt now carries migrated code from sal-clustering-commons,
make sure we use as much as we can, so that we do not duplicate code.

Change-Id: I5d50a63317c2d502c0eb7f71e1e6875cd95d7f9a
Signed-off-by: Robert Varga <>
3 years agoRemove unneeded Java 9+ check 56/86456/1
Robert Varga [Tue, 17 Dec 2019 02:47:56 +0000 (03:47 +0100)]
Remove unneeded Java 9+ check

We are running at least on Java 11, hence this check is useless.

Change-Id: I802c80384e652b18ef9ec0586acbface73a2cde4
Signed-off-by: Robert Varga <>
3 years agoRemove ARIES-1923 workaround 40/86440/3
Robert Varga [Mon, 16 Dec 2019 21:07:05 +0000 (22:07 +0100)]
Remove ARIES-1923 workaround

We now have proper monkey-patch in place and can therefore remove
this workaround.

Change-Id: I2f4665131953964a1ed64848843e039ccc7015c3
Signed-off-by: Robert Varga <>
3 years agoFix mdsal-it-base karaf setup 55/86455/2
Robert Varga [Tue, 17 Dec 2019 02:43:17 +0000 (03:43 +0100)]
Fix mdsal-it-base karaf setup

Since we are setting up a karaf environment, we must make sure
we are not overriding opendaylight-karaf-empty, otherwise we are
not matching distribution (and not picking up its fixes,
to ARIES-1923 for example).

Change-Id: I9f723ee2edd13ee4848e302c572285517a1d552b
Signed-off-by: Robert Varga <>
3 years agoBump odlparent/yangtools/mdsal to 6.0.3/4.0.3/5.0.6 62/86362/6
Robert Varga [Wed, 11 Dec 2019 23:48:08 +0000 (00:48 +0100)]
Bump odlparent/yangtools/mdsal to 6.0.3/4.0.3/5.0.6

Pick up the latest upgrades and fixes.

Change-Id: I05d54f6ad7ec934f77f123efaffc9a8a090a6384
Signed-off-by: Robert Varga <>
3 years agoRemove unneeded javassist dependency 12/86412/1
Robert Varga [Thu, 12 Dec 2019 15:32:19 +0000 (16:32 +0100)]
Remove unneeded javassist dependency

The test is not using javassist, let's ditch the declaration.

Change-Id: I9226f2029cc4679f4fee8e126db8735e2e1ecd7d
Signed-off-by: Robert Varga <>
3 years agoBail faster on not found module 77/85977/4
Robert Varga [Tue, 26 Nov 2019 14:31:49 +0000 (15:31 +0100)]
Bail faster on not found module

If we fail to find config for a particular module, we can bail
directly without going through another empty check.

Change-Id: I47dc844d51ecbe1ca3f22fd355532539e07f798b
Signed-off-by: Robert Varga <>
3 years agoSwitch default stream output to Magnesium 95/84695/23
Robert Varga [Wed, 25 Sep 2019 06:16:56 +0000 (08:16 +0200)]
Switch default stream output to Magnesium

This flips the switch and uses Magnesium format for all unversioned
users. Also updates tests to reflect new expected stream sizes.

Change-Id: I0ed5abe495124b525b7a8c877a3cc7b09f3244ca
Signed-off-by: Robert Varga <>
3 years agoSwitch current {ABI,DataStore,Payload}Version to Magnesium 10/84710/7
Robert Varga [Wed, 25 Sep 2019 14:29:34 +0000 (16:29 +0200)]
Switch current {ABI,DataStore,Payload}Version to Magnesium

This mass-switches versioned resources to use Magnesium streaming
format. It also updates the hand-written test data to use Uint64
instead of BigInteger, as Magnesium does not support BigIntegers.

Change-Id: I4734fe3fe0064809fde899ea127e98380c8aacf4
Signed-off-by: Robert Varga <>
3 years agoAllow shard settle timeout to be tuned 41/85741/9
Tibor Král [Mon, 11 Nov 2019 17:23:31 +0000 (18:23 +0100)]
Allow shard settle timeout to be tuned

When we are starting the datastore, we wait up to a fixed number of
election timeout intervals (3) for shards to finish electing a leader.

This is not always enough, especially if recovery takes a long time,
hence introduce shardLeaderElectionTimeoutMultiplier to make this

Change-Id: Iba1d116d0248fc6046aeeae3ec30ecac50f373c9
Signed-off-by: Tibor Král <>
Signed-off-by: Robert Varga <>
3 years agoAdd javadoc links to yangtools-docs and mdsal-docs 78/85878/1
Robert Varga [Wed, 20 Nov 2019 08:14:27 +0000 (09:14 +0100)]
Add javadoc links to yangtools-docs and mdsal-docs

Cross reference controller-docs with upstreams.

Change-Id: I2143d6971b4bf4bceab331e350c7363755b03a4a
Signed-off-by: Robert Varga <>
3 years agoBump to odlparent-6.0.1/yangtools-4.0.2/mdsal-5.0.4 49/85549/1
Robert Varga [Mon, 4 Nov 2019 13:34:56 +0000 (14:34 +0100)]
Bump to odlparent-6.0.1/yangtools-4.0.2/mdsal-5.0.4

This picks up latest upgrades and fixes.

Change-Id: I8db358b0af81394a561071d98bffea168dda47cc
Signed-off-by: Robert Varga <>
3 years agoAllow AbstractClientActor generation to start from non-zero 97/85397/2
Robert Varga [Fri, 25 Oct 2019 13:50:59 +0000 (15:50 +0200)]
Allow AbstractClientActor generation to start from non-zero

This adds the ability to override the initial generation seeded
into persistence. The requested generation is controlled via
system properties on a per-client-type basis:

org.opendaylight.controller.cluster.access.client.initial.generation.datastore-operational = 500

This is useful during bringup of a zombie node, which lost all
of its persistence, for example during recovery from backup.

Change-Id: If32487fedcb5b6b39551a3359c069df940a6a725
Signed-off-by: Robert Varga <>
3 years agoAdd the ability to report known connected clients 73/85373/8
Robert Varga [Thu, 24 Oct 2019 11:54:38 +0000 (13:54 +0200)]
Add the ability to report known connected clients

In order to allow from-scratch recovery, we need the ability to
query all existing shards to provide the identifiers of clients
they know about. This patch adds the models to support such a query
as well as implementing it in cluster-admin.

Change-Id: Id69aeb9021c8111dad10930620c9eaacfccd0d94
Signed-off-by: Robert Varga <>
3 years agoRemove dependency section from mdsal parent 84/85384/1
Robert Varga [Fri, 25 Oct 2019 07:59:36 +0000 (09:59 +0200)]
Remove dependency section from mdsal parent

This pom acts as an extension to binding parent, it is not a good
idea to also add dependencies here -- each artifact should list
them as needed.

Change-Id: I1524a234043ce334ca1a82f4e72f4fec7acdacbf
Signed-off-by: Robert Varga <>
3 years agoImport scala.concurrent.Future 74/85374/2
Robert Varga [Thu, 24 Oct 2019 15:49:08 +0000 (17:49 +0200)]
Import scala.concurrent.Future

Since we are returning ListenableFuture from RPCs, we can freely
import Scala's Future and shorten references to it.

Change-Id: I77c911fa6d9eca5804547039715f3e57866bafcf
Signed-off-by: Robert Varga <>
3 years agoMigrate Props.create() call sites 71/85371/3
Robert Varga [Thu, 24 Oct 2019 10:58:27 +0000 (12:58 +0200)]
Migrate Props.create() call sites

Props.create() now takes a class identifying the class being
instantiated. Fix callsites to do that.

Change-Id: I4a0169663465b0c1ba62fc87ca13423cf5a4464f
Signed-off-by: Robert Varga <>