Robert Varga [Fri, 18 Feb 2022 10:50:45 +0000 (11:50 +0100)]
Bump mdsal to 8.0.12
Pick up the single fix from upstream.
Change-Id: I27e3c14ae8dc86110932466519ba4b824ded9c21
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 14 Feb 2022 15:26:41 +0000 (16:26 +0100)]
Bump versions to 4.0.11-SNAPSHOT
This starts the next development iteration.
Change-Id: I5e82321e2ff8dd7552d364270f9aa1834f19958c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 14 Feb 2022 14:55:02 +0000 (15:55 +0100)]
Fix yangtools mis-alignment
We have a mis-aligned yangtools versions, fix that up.
Change-Id: I5153b518d2146eef8e3d7cb239a05686515755cc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 14 Feb 2022 08:27:09 +0000 (09:27 +0100)]
Bump versions to 4.0.10-SNAPSHOT
This starts the next development iteration.
Change-Id: I668b50e9453e446fbae93795ae39ef3c76f36aa4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 14 Feb 2022 07:26:31 +0000 (08:26 +0100)]
Bump upstream versions
Adopt:
- odlparent-9.0.13
- yangtools-7.0.13
- mdsal-8.0.11
Change-Id: I4987c100930e883b51f8b519d2a1f9696196a032
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 19 Jan 2022 12:27:47 +0000 (13:27 +0100)]
Bump versions to 4.0.9-SNAPSHOT
This starts the next development iteration.
Change-Id: Ifd044e7a9d6ee1c5268d053702b8c511e6901575
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tomas Cere [Tue, 21 Dec 2021 16:16:40 +0000 (17:16 +0100)]
Fix clearing of candidates from previous iterations
During initialization the CandidateRegistry wasnt clearing
candidates from the previous instance in a reliable way.
Event with ReadMajority if the cluster members havent been updated
yet, it acted as if there were no candidates present so it did
not clear them.
Introduce a mechansim that goes through the akka singleton that
picks owners, so it only executes the clearing of candidates once
the cluster is in a healthy state.
JIRA: CONTROLLER-2025
Change-Id: I5a43908e45273adfea325621189f633ce493ca87
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
df7335957f40d6b905b7591b2dc32ffb6093b671)
Robert Varga [Wed, 19 Jan 2022 12:27:01 +0000 (13:27 +0100)]
Bump upstream versions
Adopt:
- odlparent-9.0.12
- yangtools-7.0.12
- mdsal-8.0.10
Change-Id: Ia0b658d8c92e5ae41e50e13f01c848fb4ffb6b81
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tomas Cere [Wed, 8 Dec 2021 11:40:40 +0000 (12:40 +0100)]
Restart downed nodes.
Nodes can be downed by sbr(for example when Isolated, sbr makes the
decision to down the minority), so we need to make sure they can
come up automatically unless we have another mechanism in place
for bringing up downed nodes.
JIRA: CONTROLLER-2025
Change-Id: I23d3ca2cee471c51d0eadc6c426461aa6eef193d
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
(cherry picked from commit
46fedf6c2d91ea96c453c059c3b2b7a6c16c370f)
Tomas Cere [Mon, 22 Nov 2021 10:32:48 +0000 (11:32 +0100)]
Enable Split-Brain Resolver
In order to make EOS service work, we need to have a provider handling
dead nodes. Enable SBR to fill that role, so that we properly recover
from nodes going away.
JIRA: CONTROLLER-2025
Change-Id: Idf817455bfe2a90d6e02011eee4ed407e1254fd2
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
58e85a6f7c26366affdc65477b817826bedfe6a7)
Robert Varga [Mon, 20 Dec 2021 11:52:55 +0000 (12:52 +0100)]
Bump akka to 2.6.18
https://akka.io/blog/news/2021/12/20/akka-2.6.18-released
JIRA: CONTROLLER-2027
Change-Id: I7ec7581f48610d8d8479e971186a16d6b870ed9c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 13 Jan 2022 10:23:18 +0000 (11:23 +0100)]
Bump scala-java8-compat_2.13 to 1.0.2
Akka 2.6.16+ is using version 1.0.0, and they are binary compatible,
let's make sure we align to a newer version as well.
https://github.com/scala/scala-java8-compat/releases/tag/v1.0.0
https://github.com/scala/scala-java8-compat/releases/tag/v1.0.1
https://github.com/scala/scala-java8-compat/releases/tag/v1.0.2
Change-Id: I6c5f21c296dae9ca7236487e460755f0ef3e7622
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 13 Jan 2022 09:29:04 +0000 (10:29 +0100)]
Bump scala to 2.13.8
https://github.com/scala/scala/releases/tag/v2.13.7
https://github.com/scala/scala/releases/tag/v2.13.8
Change-Id: Ifc5ac268e531b10a9920c7a16bfbdbb3de12d611
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Dominik Vrbovsky [Mon, 22 Nov 2021 10:56:26 +0000 (11:56 +0100)]
Rework karaf CLI commands to print results on console
Some of these karaf CLI commands may produce return values and some CSIT components need to
read them from console.
Change-Id: Iae54c9481515c1e8fc42e9b1cf7b1530d523a142
Signed-off-by: Dominik Vrbovsky <dominik.vrbovsky@pantheon.tech>
Robert Varga [Mon, 10 Jan 2022 13:10:56 +0000 (14:10 +0100)]
Bump upstream versions
Adopt:
- odlparent-9.0.10
- yangtools-7.0.11
- mdsal-8.0.9
Change-Id: I24be0e4be695c02720f139b25e0be9f7854410e7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 25 Dec 2021 13:28:03 +0000 (14:28 +0100)]
Bump upstream versions
Adopt:
- odlparent-9.0.9
- yangtools-7.0.10
- mdsal-8.0.8
Change-Id: Ifbfb9c8b335bbf49df4a2965c5a4744ce558089b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 21 Dec 2021 08:38:43 +0000 (09:38 +0100)]
Cleanup asserts a bit
Rather than using String operations, use assertThat() and matchers.
Change-Id: I0e76854950965fbfef739c38b061ccda1a9f1e37
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Dominik Vrbovsky [Mon, 6 Dec 2021 17:05:03 +0000 (18:05 +0100)]
akka.actor.provider set to 'cluster'
A number of sal-akka-raft test logs are polluted by ConfigurationException.
ActorSystem needs to have 'akka.actor.provider' set to 'cluster' in the
configuration.
JIRA: CONTROLLER-2023
Change-Id: If6e873864ffe0ea8261c80c233b6d40459d05164
Signed-off-by: Dominik Vrbovsky <dominik.vrbovsky@pantheon.tech>
Robert Varga [Sun, 14 Nov 2021 09:12:49 +0000 (10:12 +0100)]
Bump versions to 4.0.8-SNAPSHOT
This starts the next development iteration.
Change-Id: I96de621e9636e25b8855e38c0d0cfc9c19fc063e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tomas Cere [Fri, 12 Nov 2021 17:17:00 +0000 (18:17 +0100)]
Add an actor for entity rpc execution.
Instead of entity-owners rpcs being handled by owner supervisor
directly add an actor that handles the execution, preventing failures
that happen after the akka singleton has moved to a different node.
This new actor first attempts to retrieve current data from the supervisor
and if that fails, falls back to using distributed-data.
JIRA: CONTROLLER-2010
Change-Id: Idf71d66d380402c10e276c726edef2f5034f7363
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sun, 14 Nov 2021 06:26:53 +0000 (07:26 +0100)]
Cleanup test format
We have wrong spaces, fix them up.
Change-Id: I166314fe85d350292fa25f36cfdbb7cd5424be76
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sun, 14 Nov 2021 05:36:34 +0000 (06:36 +0100)]
Use DateTimeFormatter in ShardStats
This conversion allows us to drop a global lock. Also clean up the
associated test.
Change-Id: Ie91e99dd0d1ba4726b802c1c8953cfe1226714e1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 18:38:08 +0000 (19:38 +0100)]
Handle ModifyTransactionRequest in forward path
When we have remote -> local handoff, we will use a
ModifyTransactionRequest, which we need to apply before moving on.
JIRA: CONTROLLER-2022
Change-Id: I04bdfda162d474966b153223c7480fd5b3af8099
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 18:05:06 +0000 (19:05 +0100)]
Modernize TransactionRateLimitingCallbackTest
Use assertThrows() and mockito runner.
Change-Id: I8cda7b267ebc923304e5b1b60c42d78a70d17d19
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 17:58:19 +0000 (18:58 +0100)]
Modernize ThreePhaseCommitCohortProxyTest
Use List.of(), assertEquals() and mockito runner.
Change-Id: Ide20b467ddc7128680f3f29668f4e978a978696e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 17:39:45 +0000 (18:39 +0100)]
Cleanup AbstractDOMBrokerWriteTransactionTest
Use mockito runner instead of initMocks().
Change-Id: I205513eb6600deb9380db9b0380e2f70ac556f89
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 17:36:24 +0000 (18:36 +0100)]
Clean up ClientBackedReadTransactionTest
Use mockito junit runner instead of initMocks().
Change-Id: I4d51748007191df9d490bf5b25cf03acdad8cc75
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 17:31:11 +0000 (18:31 +0100)]
Cleanup TransactionRateLimiterTest
Use guava stopwatch and mockito runner.
Change-Id: I87fd7f6b32379307875a2d3f353e6ad2d5bc2d38
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 17:16:20 +0000 (18:16 +0100)]
Migrate AbstractClientHandleTest
Mockito.initMocks() is deprecated, migrate to using mockito runner.
Change-Id: I6fbf7dd3502ed054701a1f6f41cd26e537b163e7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 17:09:40 +0000 (18:09 +0100)]
Fold AbstractShardManagerTest
We have only a single subclass, ShardManagerTest, hence we can reduce
complexity by merging the two classes together. Also use
MockitoJUnitRunner to initialize mocks.
Change-Id: Idadafff3a3c96b38a5695ba903998382dc4054eb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 16:14:32 +0000 (17:14 +0100)]
Migrate AbstractProxyTransactionTest to MockitoJUnitRunner
Do not use Mockito.openMocks(), but rather a proper runner.
Change-Id: I26d9d15cd10f8717c7bc36ccb91591a70305bda2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 14:47:43 +0000 (15:47 +0100)]
Enable testTransactionWithIsolatedLeader() for tell-based protocol
Behaviour differs between ask-based (which fails) and tell-based (which
continues retrying). Modify the test suite to account for this
difference.
JIRA: CONTROLLER-2018
Change-Id: I208fd8aa8088558dbe2160168ee35182e02c97fa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 14:27:44 +0000 (15:27 +0100)]
Cleanup IntegrationTestKit
Use equality on optionals, assertThrows(), and static imports of test
DSL.
Change-Id: I1e66e5b1a3e10dd2d866f355de0d24da604d2c3a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 12:08:56 +0000 (13:08 +0100)]
Fix error message concatenation
We are missing a space here, fix that up.
Change-Id: I2eba64ddcb7db14a56eb65a84d25851e4869ba5a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 13 Nov 2021 11:52:29 +0000 (12:52 +0100)]
Clean up modification tests
Make sure we close the read transaction and improve assertions with
Optional.
Change-Id: Ia465f64c5845e3d5e215759cc32048e06478104b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 11 Nov 2021 01:01:42 +0000 (02:01 +0100)]
Enable testLeadershipTransferOnShutdown()
We are looking at cohort caches here -- and those are not used by
ClientBackedDatastore.
Change-Id: I3abfa3299d8222df6edfa98cc4a3d108a05454e4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 12 Nov 2019 22:50:34 +0000 (23:50 +0100)]
Track skipped transactions
We are allocating transaction identifiers which are shared across
shards. As a transaction can touch only some shards, non-participating
shards will never see the transaction ID, leading to holes in their
UnsignedLongSets -- and those holes gradually eat up more and more
memory.
Track when we have such a hole and lazily forward a new request, which
purges one or more such identifiers -- plugging the memory leak.
The crux of the machinery is exchanging state between ProxyHistory
and FrontendHistoryMetadataBuilder.
JIRA: CONTROLLER-1991
Change-Id: I3817fa2841e5f9c405bb20ff1a104537ad459ce3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 11 Nov 2021 07:38:58 +0000 (08:38 +0100)]
Handle SnapshotComplete message
This is an internally-generated message, make sure we handle it in
support to indicate when we have finished completely propagating
state.
JIRA: CONTROLLER-2019
Change-Id: I4f5c5231070140d54531c2e5379dffcaf1c5c4ee
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 11 Nov 2021 08:22:08 +0000 (09:22 +0100)]
Disable state tracking on ReadyLocalTransaction
We are failing to recognize ReadyLocalTransaction as an ask-based
message, leading to us populating state.
JIRA: CONTROLLER-2021
Change-Id: I48b3c57e11430a5ca15e0559f2a8e13627f4bab1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 11 Nov 2021 07:10:31 +0000 (08:10 +0100)]
Drop a test re-enable FIXME
Add an explicit JIRA tag to the FIXME.
Change-Id: If567cf66476a16ce3193d1a64e18538d7bdcab53
JIRA: CONTROLLER-2020
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 11 Nov 2021 06:16:35 +0000 (07:16 +0100)]
Add update FIXME to enable test
Add an explicit reference to the issue tracking enablement of this
test.
JIRA: CONTROLLER-2018
Change-Id: I62fb6377e138cfb00deb0a3fd9093ec13f76dc46
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 11 Nov 2021 01:00:13 +0000 (02:00 +0100)]
Move assumption
Let's assume things only just before we are hitting and error and tag
the FIXME with an issue.
JIRA: CONTROLLER-2017
Change-Id: I114ff0f3ef2e72fdc1be5e8eb61adac8ed00ff42
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 11 Nov 2021 00:47:15 +0000 (01:47 +0100)]
Add a FIXME for enabling a test
Record the problem observed and assign an issue to track it.
JIRA: CONTROLLER-2016
Change-Id: Idbf52a2598a93f55797954223de98cd974abac3a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 21:05:44 +0000 (22:05 +0100)]
Rename UnsignedLongSet.size()
Since we have 'Set' in our name, size() invokes Set.size(), which is
not we provide w.r.t. the number of distinct elements that are contained
in the set.
We are communicating how many ranges are stored, hence the method's name
is 'rangeSize()'.
Change-Id: Iaf9999db86fe03a8e753107638fc2e189b680677
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 19:44:05 +0000 (20:44 +0100)]
Make UnsignedLongSet.Entry immutable
Having entries mutable is just a drag when transferring them to
mutable, as we need to perform deep copies. Let's turn them into
immutables and be done with it.
JIRA: CONTROLLER-2015
Change-Id: I3be807cbdf71a51e6b9506e0932857a230924986
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 17:51:05 +0000 (18:51 +0100)]
Fix UnsignedLongSet entry lifecycle
When we are copying things around, we have to ensure we copy Entries,
because they cannot be shared.
JIRA: CONTROLLER-2015
Change-Id: I8a484a3bf52ffeaf4f4d0e770bc77dba31dbb221
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 13:43:58 +0000 (14:43 +0100)]
Fix Eclipse compilation error
JDT has trouble with Scala classes here, make sure we specify
more general scala.collections.Set instead of its immutable counterpart.
Change-Id: I60b56e6b7ec5705409aee8d1e30a8ae9e5579bfb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 12:52:15 +0000 (13:52 +0100)]
Fixup assertions a bit
The tests are using different transaction mix, pass down explicit
expected transaction count.
Change-Id: I5007fe0ad90009fcafb727bac8d37bd07dfaae94
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 11:34:30 +0000 (12:34 +0100)]
Improve tell-based protocol assumptions
Make failures a bit more visible by comparing human-readable things.
Change-Id: I682c020be348c61fcdf4c3f31949ba0f666af020
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 9 Nov 2021 20:02:31 +0000 (21:02 +0100)]
Partially enable testSingleTransactionsWritesInQuickSuccession()
Split the asserts into two methods, asserting the two datastore
options. The ask-based path remains disabled because it currently
fails tests.
Also improve tell-based protocol assertions, which need to wait
for the purge process to settle.
Change-Id: I8b2f3d84b2c7cd01dec4f7994eda716d022a98aa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 06:33:12 +0000 (07:33 +0100)]
Cleanup DistributedDataStoreRemotingIntegrationTest
We have a few @Ignored tests and assumptions scattered a bit, perform
a general cleanup on them.
JIRA: CONTROLLER-1991
Change-Id: I70054276b5ffa179337a302e5d2498e925b65ce8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 10:18:19 +0000 (11:18 +0100)]
Cleanup JsonExportActor
Remove unneeded 'this.' qualifiers and using an
EffectiveStatementInference instead of SchemaPath when instantiating
JSON codec.
Change-Id: Iac6b980771c4ad395341a9c88ee0d16c34d8a02a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 10:12:33 +0000 (11:12 +0100)]
Cleanup ShardInformation
Drop unneeded 'this.' qualifiers and use a simple return expression
in getSerializedLeaderActor().
Change-Id: I9a11410f8bc6d8246bacf99fa86c42de85c328ae
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 10:10:52 +0000 (11:10 +0100)]
Cleanup ShardWriteTransaction
A few arguments can be made final and an if/else block can be
simplified.
Change-Id: Ib5464482b4e4cc1d73f755b4b467470fc3b2af25
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 10 Nov 2021 09:50:50 +0000 (10:50 +0100)]
Clean up AbstractTransactionContextFactory
Add a few @NonNull annotations and eliminate two else blocks.
Change-Id: Ide21c363f349af7b24fb4835b859a224357586c8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 9 Nov 2021 18:48:16 +0000 (19:48 +0100)]
Expose ImmutableList from FrontendClientMetadata
ImmutableList is an API contract, exposed it to callers.
Change-Id: I7fb2a09c2b225ce48ece7400128c8215d70292fe
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 9 Nov 2021 18:31:28 +0000 (19:31 +0100)]
Cleanup cds-access-api dependencies
We are using Guava, declare that as a dependency.
Change-Id: Ibe905f0d2d87c5e7dfb4fad598acb27b4323c7b8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 9 Nov 2021 10:23:05 +0000 (11:23 +0100)]
Add MutableUnsignedLongSet.addAll()
Add the ability to merge two UnsignedLongSets. This is useful when
we are using ImmutableUnsignedLongSet as a data interchange format
to communicate changes to a MutableUnsignedLongSet.
JIRA: CONTROLLER-2015
Change-Id: Ia84474b685872586722914f20db8f96a3c172f97
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 6 Nov 2021 15:04:48 +0000 (16:04 +0100)]
Add UnsignedLongBitmap
Rather than using a ImmutableMap<UnsignedLong, Boolean>, we can do
have a much denser representation with a specialized class. Here we
are introducing an explicit UnsignedLongBitmap, which stores an array
of longs and an array of booleans, ditching the intermediate objects.
Also clean up error reporting, throwing an IOException instead of a
VerifyException when things should go south unexpectedly.
JIRA: CONTROLLER-2013
Change-Id: Ie64da0af68ea2898dc77368afd4fce8abd2cccea
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 8 Nov 2021 15:50:25 +0000 (16:50 +0100)]
Sprinkle @NonNull annotations
We have a few return methods which could use @NonNull annotations,
sprinkle them around.
Change-Id: I48c0f8879127673eb122321dd6c92d4572098f68
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 8 Nov 2021 08:22:45 +0000 (09:22 +0100)]
Inline Entry.contains()
MutableUnsignedLongSet.add() has half of the check done in contains()
as an invariant. Inline the second part there, improving performance a
bit.
Thisleaves only UnsignedLongSet.contains() as the sole caller of
Entry.contains(). Inline it there, reducing the footprint a bit.
JIRA: CONTROLLER-2014
Change-Id: Ie38283a1fc46aff8fbc717a23aa9a068805636db
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 8 Nov 2021 07:49:15 +0000 (08:49 +0100)]
Remove UnsignedLongSet.addImpl()
We now do not share utilities in UnsignedLongSet, hence relocate
implementation code to MutableUnsignedLongSet.add().
JIRA: CONTROLLER-2014
Change-Id: Id1578a8ea639ed512d55b2e6dca26de5abdf3ab0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 8 Nov 2021 07:42:03 +0000 (08:42 +0100)]
Improve UnsignedLongSet efficiency
We can use NavigableMap's higher() and floor() methods to elide object
object allocations.
JIRA: CONTROLLER-2014
Change-Id: I75747c58027caee2678e32187dbd628d60ce6604
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sun, 7 Nov 2021 09:58:38 +0000 (10:58 +0100)]
Bump versions to 4.0.7-SNAPSHOT
This starts the next development iteration.
Change-Id: I837a7d5dcc6df7deb8360d3a662d0628fb1a199f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sun, 7 Nov 2021 00:19:18 +0000 (01:19 +0100)]
Minor sal-distributed-datastore cleanups
Corrent a @GuardedBy annotations, add @NonNull annotations, fix javadocs
and make a few methods final.
Change-Id: Icb93aae229fb0aece5ece223a759ce9f36ee0297
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 6 Nov 2021 14:20:11 +0000 (15:20 +0100)]
Use ImmutableList.Builder in FrontendClientMetadata
We are performing a defensive copy in constructor, hence it is
better to allocate a builder, skipping an untrusted copy operation.
Change-Id: I95d7aa90f6da325aaae6a340caf49a6e17fe9f64
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 6 Nov 2021 13:31:20 +0000 (14:31 +0100)]
Use ImmutableSortedSet for small ImmutableUnsignedLongSets
This adds a bit of indirection, but for a few entries this ends up
using arrays instead of an RB tree, offering better density.
JIRA: CONTROLLER-2012
Change-Id: I09714c6bf3272946f6cee4360f80a106453d0e61
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 6 Nov 2021 10:18:54 +0000 (11:18 +0100)]
Use UnsignedLongSet instead of RangeSet in metadata
Split UnsignedLongSet into two implementations, mutable and immutable.
Use the mutable implementation in runtime tracking of identifiers and
use the immutable implementation for tracking identifiers in metadata.
The serialization format is kept compatible with RangeSets, although
that implies a minor penalty in serdes.
This switch ends up potentially using more objects for small sets, but
that is offset by not having Cut indirections and most notably being
resistent to allocation of huge arrays.
JIRA: CONTROLLER-2011
Change-Id: I0c84ffaaa4ce39299cef9006784b8aff78dd0f83
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 6 Nov 2021 01:15:46 +0000 (02:15 +0100)]
Reimplement UnsignedLongRangeSet
We are tracking simple discrete values, for which a RangeSet is an
overkill due to it being generalized utility working with all possible
ranges.
Reimplement UnsignedLongRangeSet as UnsignedLongSet, tracking discrete
closed ranges of longs, which improves both memory footprint and speed
of contains()/add() operations.
This also spots a failure to disconnect purged histories during
FrontendHistoryMetadataBuilder.toLeaderState().
JIRA: CONTROLLER-1720
Change-Id: I24fae4174201fd133a282f27589d6c274c06c8dc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 6 Nov 2021 09:20:00 +0000 (10:20 +0100)]
Improve Frontend{Client,History}Metadata
We are using Guava's immutable implementations, make sure we annotate
fields with @NonNull and use concrete types.
Change-Id: I4fc2a0ff39b2b8166deca41425771ea9ed04e469
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 6 Nov 2021 09:18:02 +0000 (10:18 +0100)]
Sprinkle @NonNull on FrontendClientMetadataBuilder fields
We have two fields which are guaranteed to be @NonNull, mark them as
such, making it clear we comply to getIdentifier() contract.
Change-Id: I9159823fb6c8a4a3c064796cb6752f57d98846c2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 6 Nov 2021 09:08:05 +0000 (10:08 +0100)]
Correct Frontend{Client,History}Metadata deserialization
We are turning Range.closedOpen() into Range.closed() during
deserialization, which the resulting ends up also covering the upper
bound, which it should not.
JIRA: CONTROLLER-1942
Change-Id: Ib8f9016e2eddcf014ff5e451ac82cd77b66d7019
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 5 Nov 2021 10:25:41 +0000 (11:25 +0100)]
Correct annotations
Correct @GuardedBy vs @Holding and add @NonNull annotations.
Change-Id: I2142b1c5910f2388e8f30a04f7ff8bc8237dde26
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tomas Cere [Wed, 3 Nov 2021 11:20:45 +0000 (12:20 +0100)]
Fix eos entity lookups with YangInstanceIdentifier
Caused by entity-name only being a string type which was inadvertently
trying to lookup all entities as General.
Fix this by changing entity-name to a union of instance-identifier and
string.
Also changed up the output of get-entities slightly:
- if the entity is string based it will only contain the name in the
output.
- if, however, it is Instance-identifier based it will contain the
entire identifier in the name field.
JIRA: CONTROLLER-2009
Change-Id: I93e108bd54b14850b6bf276ec1eca4d7671d7d87
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 27 Oct 2021 08:25:57 +0000 (10:25 +0200)]
Bump version to 4.0.6-SNAPSHOT
This starts the next development iteration.
Change-Id: I48c884e1f35f9509b811bb654fdec22c3dc198b4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 26 Oct 2021 23:02:31 +0000 (01:02 +0200)]
Realign odlparent versions
We have a misalignment of versions, which may hurt downstreams. Also
bump mdsal, as it is fixing the same issue.
JIRA: CONTROLLER-2008
Change-Id: Iacf5921d4f960eaef554419cd6b2dac3494fd2a5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 21 Oct 2021 07:47:34 +0000 (09:47 +0200)]
Bump versions to 4.0.5-SNAPSHOT
This starts the next development iteration.
Change-Id: I8f8e85a7b2bb1a07f0d05948d372ae3f7d42345a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 21 Sep 2021 19:01:27 +0000 (21:01 +0200)]
Merge (Abstract)TransactionContext
We have an interface and an abstract base class. Merge the two into
an abstract class, reducing visibility of various methods. Also derive
from AbstractSimpleIdentifiable, to make it more explicit we require
a transaction identifier.
This allows all callers to bind to the same vtable, improving method
dispatch.
Change-Id: I51419c4ac832aa676c8707d9bd459936fd906760
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 21 Oct 2021 07:01:58 +0000 (09:01 +0200)]
Bump upstreams
Use odlparent-9.0.7, yangtools-7.0.9, mdsal-8.0.6.
Change-Id: I661a98b52b7b93b63a348e15deb4b548ca0f5075
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tomas Cere [Tue, 19 Oct 2021 08:54:47 +0000 (10:54 +0200)]
Tune eos gossip/notification intervals
Looks like eos gossips take much too long, so lets
lower these so we have faster response times all around.
JIRA: CONTROLLER-2004
Change-Id: I3daf8d207a6b51b16e6b8cb3f7dcefd55e6626cf
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sun, 17 Oct 2021 14:31:40 +0000 (16:31 +0200)]
Pull in atinject_spec-1.0
pax-exam is using version 1.0, make sure we can work nicely with it.
Should fix controller-sonar failures.
Change-Id: I0f185b02a5b63ddadfd72993160db350f9513164
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 15 Oct 2021 11:41:34 +0000 (13:41 +0200)]
Bump to akka-2.6.17
https://akka.io/blog/news/2021/10/15/akka-2.6.17-released
Change-Id: I4183b02b42fb3dcda599ba77c73d26832fabea7b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 15 Oct 2021 11:39:23 +0000 (13:39 +0200)]
Bump Scala to 2.13.6
https://github.com/scala/scala/releases/tag/v2.13.6
Change-Id: I6fba6c4d7856446d54cb016ec3a93f4976375a0a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Fri, 15 Oct 2021 10:52:02 +0000 (12:52 +0200)]
Cleanup LogGenerator
We are getting flagged in SonarCloud for this example, clean it up.
Change-Id: I9665e444857f6fb5b67a1bcb064d10b0ada8069b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 9 Oct 2021 09:42:04 +0000 (11:42 +0200)]
Move odl-controller-blueprint dependency
Nothing in odl-mdsal-distributed-datastore needs blueprint, move
the dependency to lower blueprint exposure a bit.
JIRA: CONTROLLER-1999
Change-Id: Idea6146c9cdb9d0db363f6d0443e0294af42f72b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sat, 9 Oct 2021 08:26:54 +0000 (10:26 +0200)]
Do not use odl blueprint in odl-controller-exp-netty-config
Components packaged here do not need ODL blueprint extensions, do
not pull in the corresponding plugin.
JIRA: CONTROLLER-2005
Change-Id: Ibd45c6e9aee39eba83ab7c266cababfde2d7ff5c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Mon, 4 Oct 2021 08:12:30 +0000 (10:12 +0200)]
Migrate rpcbenchmark to OSGi DS
Ditch blueprint and use turn NtfBenchmarkProvider into a simple
component. Requires some amount of refactoring.
JIRA: CONTROLLER-2001
Change-Id: Ib8db52d91013fe1ae13c55b5537b743f8ccbf320
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sun, 3 Oct 2021 14:33:33 +0000 (16:33 +0200)]
Migrate ntfbenchmark to OSGi DS
Ditch blueprint and use turn NtfBenchmarkProvider into a simple
component.
JIRA: CONTROLLER-2001
Change-Id: I68dd5559f61c28bbdcbff54815af7d287e948a50
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Thu, 30 Sep 2021 12:09:35 +0000 (14:09 +0200)]
Migrate dsbenchmark to OSGi DS
Ditch blueprint and use turn DsbenchmarkProvider into a simple
component.
JIRA: CONTROLLER-2001
Change-Id: I5378359af1ae12d2f7cc03c281599f71ded5a06a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 21 Sep 2021 20:10:37 +0000 (22:10 +0200)]
Use URLEncoder.encode(String, Charset)
We are running with Java 11 and as Modernizer correctly points out, we
can use direct charset variant which was introduced with Java 10. This
cuts down a tiny bit of dead code.
Change-Id: I7c42984bc1e05e94f5266f26e13aaab650ae4f70
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Dominik Vrbovsky [Fri, 10 Sep 2021 09:09:41 +0000 (11:09 +0200)]
Introduce cli commands for cluster-admin
Rework the rpcs needed by csit in cluster-admin to karaf cli commands
JIRA: CONTROLLER-1996
Change-Id: I148c7c9140701ff8ffe81c612999898115f4661d
Signed-off-by: Dominik Vrbovsky <dominik.vrbovsky@pantheon.tech>
tadei.bilan [Thu, 2 Jul 2020 10:48:54 +0000 (13:48 +0300)]
Specialize TransactionContextWrapper
Most of the time we are talking to local leader, in which case
we do not need to queue messages and bounce them through the queue.
JIRA: CONTROLLER-1952
Change-Id: I07d85c82c2ab6e4251c70b2e6d1dafa2dc455d39
Signed-off-by: tadei.bilan <tadei.bilan@pantheon.tech>
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Tue, 21 Sep 2021 09:49:06 +0000 (11:49 +0200)]
Be mindful of non-existent actors
We have observed the following splat in SFT:
java.lang.NullPointerException: null
at org.opendaylight.controller.eos.akka.registry.listener.type.EntityTypeListenerRegistry.onUnregisterListener(EntityTypeListenerRegistry.java:69) ~[bundleFile:?]
at akka.actor.typed.javadsl.BuiltReceive.receive(ReceiveBuilder.scala:213) ~[bundleFile:?]
This this by checking whether we actually removed a listener.
Change-Id: Ifc80ae650db05fd1031af074c694588034f6903a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Wed, 15 Sep 2021 10:52:50 +0000 (12:52 +0200)]
Bump versions to 4.0.4-SNAPSHOT
This starts the next development iteration.
Change-Id: I06cec6aa2381d9aa96edb2555352458bdc60d0a9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Dominik Vrbovsky [Tue, 14 Sep 2021 14:07:12 +0000 (16:07 +0200)]
Add a private modifiers to command arguments in clustering-test-app
Change-Id: I29e188d39a7dc507c0f9f61f086e699522757dc5
Signed-off-by: Dominik Vrbovsky <dominik.vrbovsky@pantheon.tech>
Tomas Cere [Tue, 14 Sep 2021 12:26:58 +0000 (14:26 +0200)]
Increase eos-dom-akka teardown timeouts
Looks like the default 10 seconds is not quite enough on releng.
Increase the default shutdown timeouts to 20 seconds.
Change-Id: I6a5b3bc6822835dd2515cef86de7376162d070bf
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
Dominik Vrbovsky [Tue, 7 Sep 2021 16:10:31 +0000 (18:10 +0200)]
Introduce cli commands for clustering-test-app
Rework the rpcs needed by csit in clustering-test-app to Karaf CLI commands.
This is essentially a custom-coded invocation of MD-SAL services.
JIRA: CONTROLLER-1995
Change-Id: If406a4dff6d441e9d0932de05f844d66f1e5bc83
Signed-off-by: Dominik Vrbovsky <dominik.vrbovsky@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Robert Varga [Sun, 12 Sep 2021 13:30:56 +0000 (15:30 +0200)]
Bump upstreams
Use odlparent-9.0.6, yangtools-7.0.8, mdsal-8.0.5.
Change-Id: Ib14c3b138a88e58104650bd2026618d53fec1011
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Tomas Cere [Tue, 7 Sep 2021 09:49:19 +0000 (11:49 +0200)]
Use terminate message in eos listener actors
getContext().stop() can cause NPE during actor system
shutdown so lets use a terminate message here instead.
Its still possible to get dead letters with this approach
when the child actor was stopped first during the shutdown,
but at least we prevent the NPEs.
JIRA: CONTROLLER-1989
Change-Id: Id38b56c12141164d45ed19613885a4d9f650e4dd
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>
Robert Varga [Wed, 24 Feb 2021 09:05:26 +0000 (10:05 +0100)]
Bump akka to 2.6.16
https://akka.io/blog/news/2021/02/23/akka-2.6.13-released
https://akka.io/blog/news/2021/04/08/akka-2.6.14-released
https://akka.io/blog/news/2021/06/10/akka-2.6.15-released
https://akka.io/blog/news/2021/08/19/akka-2.6.16-released
Change-Id: I6d255bd6d2b4b1284bb6c7d8ccae4ec44a691556
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Signed-off-by: Tomas Cere <tomas.cere@pantheon.tech>