controller.git
7 weeks agoImprove disk entry access 10/110810/5
Robert Varga [Sun, 17 Mar 2024 11:22:10 +0000 (12:22 +0100)]
Improve disk entry access

Eliminate superfluous compactions while a complete entry is available.
This is done by carefully looking at the buffer and figuring out how
many bytes we actually need progress.

JIRA: CONTROLLER-2109
Change-Id: If091b5c6f74da6a989629dae49137ed492725e2d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoSegmentJournal.log is static 97/110897/2
Robert Varga [Wed, 20 Mar 2024 01:16:42 +0000 (02:16 +0100)]
SegmentJournal.log is static

This is derived from getClass() on a final class -- hence we can
amortize the logger into a static field, from whence it will be
constant-propagated.

Change-Id: Idcc6cf2d86c5ae687694fa5c16089687ac4a949a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoDelete test directories after test 42/110842/1
Robert Varga [Mon, 18 Mar 2024 11:47:18 +0000 (12:47 +0100)]
Delete test directories after test

We have files in target being archived. Remove them after the test
finishes.

Change-Id: I68ea84a78e82bffcc3d8e0868b2f492759f64f90
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoBump versions to 9.0.2-SNAPSHOT 76/110776/1
Robert Varga [Fri, 15 Mar 2024 16:07:51 +0000 (17:07 +0100)]
Bump versions to 9.0.2-SNAPSHOT

This starts the next deveopment iteration.

Change-Id: I5940bc14b5261316778f547b0111b62b3a983bdb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoRelease controller v9.0.1
jenkins-releng [Fri, 15 Mar 2024 14:14:17 +0000 (14:14 +0000)]
Release controller

7 weeks agoChange FileChannel prefix to Disk 51/110751/1
Robert Varga [Fri, 15 Mar 2024 12:26:10 +0000 (13:26 +0100)]
Change FileChannel prefix to Disk

We use FileChannelJournalSegment{Reader,Writer} for StorageLevel.DISK,
and Mapped* for StorageLevel.MAPPED.

Fix this by a quick rename to DiskJournaSegment{Reader,Writer},
improving internal consistency and shortening class names.

Change-Id: Ia6d7311ed93527ff77cde3f7b57bb34689f962cd
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoAdd PANTHEON.tech copyright headers 50/110750/2
Robert Varga [Fri, 15 Mar 2024 12:20:47 +0000 (13:20 +0100)]
Add PANTHEON.tech copyright headers

These files have been significantly altered and hence deserve a
contributor copyright with a fresh year.

JIRA: CONTROLLER-2105
Change-Id: Ieceb00a54d204db5ba8bb92971a719f2b0815c59
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoNormalized copyright header 49/110749/2
Robert Varga [Fri, 15 Mar 2024 12:10:18 +0000 (13:10 +0100)]
Normalized copyright header

Use a closed range and our standard 'and others' moniker.

JIRA: CONTROLLER-2105
Change-Id: I868b02415666da378f395ff711d5092a334d0196
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoFuther improvements to ByteBuffer invocations 48/110748/1
Robert Varga [Fri, 15 Mar 2024 11:13:18 +0000 (12:13 +0100)]
Futher improvements to ByteBuffer invocations

MappedJournalSegmentWriter should take advantage of fluent APIs of
ByteBuffer.

JIRA: CONTROLLER-2097
Change-Id: If12fe247bd08db450e00ea9878ecfafb7f75596b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoCentralize entry header size 47/110747/1
Robert Varga [Fri, 15 Mar 2024 11:09:13 +0000 (12:09 +0100)]
Centralize entry header size

We jave 'Integer.BYTES + Integer.BYTES' strewn all across the code,
centralize this constant into a single place.

JIRA: CONTROLLER-2098
Change-Id: If15f944db20b01767ca387f652ddf11fed64e2fa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoMake JournalSegmentWriter.getNextIndex() final 46/110746/1
Robert Varga [Fri, 15 Mar 2024 10:11:11 +0000 (11:11 +0100)]
Make JournalSegmentWriter.getNextIndex() final

We have duplicated code between the two implementations. Centralize it
to the common superclass.

JIRA: CONTROLLER-2098
Change-Id: I84b1a1d716c2ccbaaf2f75e3728bcbad0aa05ec6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoMake JournalSegmentWriter.getLastIndex() final 45/110745/1
Robert Varga [Fri, 15 Mar 2024 10:05:21 +0000 (11:05 +0100)]
Make JournalSegmentWriter.getLastIndex() final

We have duplicated code between the two implementations. Centralize it
to the common superclass.

JIRA: CONTROLLER-2098
Change-Id: I805e882566d8f891c23a1f25143d453c94284cd1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoImprove ByteBuffer invocations 44/110744/1
Robert Varga [Fri, 15 Mar 2024 09:58:55 +0000 (10:58 +0100)]
Improve ByteBuffer invocations

ByteBuffer has a fluent API, returning the same buffer from methods
which do not return something else.

Take advantage of this a chain invocations, resulting in denser byte
code.

JIRA: CONTROLLER-2097
Change-Id: Ic744e5e4f4d8c3fec5026f9d7edc58b7a5387c0e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
7 weeks agoImprove FileChannelJournalSegmentWriter's buffer management 35/110735/3
Oleksandr Zharov [Thu, 14 Mar 2024 13:46:11 +0000 (14:46 +0100)]
Improve FileChannelJournalSegmentWriter's buffer management

Minor refactor of logic in FileChannelJournalSegmentWriter class.
Removed unnecessary buffer clearing after each entry. New logic
remove already proccesed entry from the buffer and if needed reads
new data from FileChannel to it's capacity.

JIRA: CONTROLLER-2097
Change-Id: I571d531437b068cd468bdc92b3ab6a4223450a45
Signed-off-by: Oleksandr Zharov <oleksandr.zharov@pantheon.tech>
7 weeks agoUse correct JournalSegmentWriter for initial indexing 40/110740/1
Robert Varga [Fri, 15 Mar 2024 08:11:41 +0000 (09:11 +0100)]
Use correct JournalSegmentWriter for initial indexing

JournalSegment should look at StorageLevel and pick the appropriate
writer instead of always using FileChannelJournalSegment.

JIRA: CONTROLLER-2099
Change-Id: I060618a2808a837214b5ae61f4860f329c1799f0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRemove LeaderLocationListenerRegistration 33/110733/2
Robert Varga [Thu, 14 Mar 2024 10:34:27 +0000 (11:34 +0100)]
Remove LeaderLocationListenerRegistration

This specialization is not used anywhere, remove it and adjust
LeaderLocationListener.

Change-Id: Ic6a738b2b34ecaca980fb222fb363ef391f24b1a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoMigrate users of deprecated methods 32/110732/2
Robert Varga [Thu, 14 Mar 2024 10:24:05 +0000 (11:24 +0100)]
Migrate users of deprecated methods

Updated yangtools/mdsal are providing a few more convenient methods, use
those instead of their deprecated equivalents.

Change-Id: I6a971e349dc7d5aed00697c179dfa0c37afa8209
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoBump upstreams 31/110731/1
Robert Varga [Thu, 14 Mar 2024 08:48:54 +0000 (09:48 +0100)]
Bump upstreams

Adopt:
- odlparent-13.0.11
- yangtools-13.0.1
- mdsal-13.0.0

Change-Id: I33bbfb6a9016ae13cfaba8d95bf461f8167621eb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoJournalReader is not an Iterator 94/110694/2
Robert Varga [Wed, 13 Mar 2024 12:32:07 +0000 (13:32 +0100)]
JournalReader is not an Iterator

Iterator dictating a two method API, which is not quite appropriate, as
the writer could be manipulated between hasNext() and next() methods --
and next() has to perform validation again.

Introduce JournalReader.tryNext(), which returns a @Nullable Indexed --
either the next entry (as next()), or null (indicating !hasNext() case).

JIRA: CONTROLLER-2106
Change-Id: Ie0338a9869ece8e6381ae719a29e97fd569b442f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoCatch JournalReader.next() violations in Mode.COMMITS 90/110690/1
Robert Varga [Wed, 13 Mar 2024 09:39:30 +0000 (10:39 +0100)]
Catch JournalReader.next() violations in Mode.COMMITS

JournalReader.next() is specified as an Iterator and should be throwing
NSEs. This is not the case when we ask for only commits, as the
corresponding check is done only in hasNext() and thus we would give out
uncommitted entries.

Fix this by adding an override to check for this condition.

JIRA: CONTROLLER-2106
Change-Id: I1f391cc19b9674646786c93656b83519e0f1f47b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoUse try-with-resources in testCompactAndRecover 89/110689/1
Robert Varga [Wed, 13 Mar 2024 09:24:36 +0000 (10:24 +0100)]
Use try-with-resources in testCompactAndRecover

Eclipse is flagging a warning here, make sure we silence it.

Change-Id: I7bfa9d490e8b9b71bf04511bc42d6d101345b179
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoCache reader's nextIndex during reset() 88/110688/1
Robert Varga [Wed, 13 Mar 2024 08:50:03 +0000 (09:50 +0100)]
Cache reader's nextIndex during reset()

JournalSegmentReader.getNextIndex() involves some computation, so do not
call it twice when deciding how to reset SegmentedJournalReader.

JIRA: CONTROLLER-2106
Change-Id: I7527d8f0c47d35b7a59c30558715204a85b24eae
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRemove JournalSegmentReader.getCurrentIndex() 87/110687/1
Robert Varga [Wed, 13 Mar 2024 07:45:42 +0000 (08:45 +0100)]
Remove JournalSegmentReader.getCurrentIndex()

This method is only ever called by SegmentedJournalReader, inline it
there. This removes one source of the magic 0 index.

JIRA: CONTROLLER-2106
Change-Id: I0fcb16e806d027d22f8e6370788aab21884c9e71
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoModernize Indexed 83/110683/3
Robert Varga [Tue, 12 Mar 2024 21:17:44 +0000 (22:17 +0100)]
Modernize Indexed

Indexed.getType() is not used anywhere, hence remove it. While we are
here, also turn the class into a record, as it is a pure DTO.

Also add a FIXME to require the actual entry to be non-null.

JIRA: CONTROLLER-2101
Change-Id: I8bd42a815096a3d0993eb41c59cf39655a7ed0fd
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoOptimize SegmentedJournalReader.getCurrentEntry() 82/110682/2
Robert Varga [Tue, 12 Mar 2024 20:49:59 +0000 (21:49 +0100)]
Optimize SegmentedJournalReader.getCurrentEntry()

This method has very simple logic, the reasoning for which is left
unexplained.

Add a comment about what is going on and use assign-and-check construct
to trim a bit of byte code.

JIRA: CONTROLLER-2106
Change-Id: I5d4e5551ae089489636da38600109f7821fa306b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoOptimize SegmentedJournalReader.hasNext() 81/110681/2
Robert Varga [Tue, 12 Mar 2024 19:47:54 +0000 (20:47 +0100)]
Optimize SegmentedJournalReader.hasNext()

hasNext() is an extremely hot method and its behaviour depends on
JournalReader.Mode, which is invariant for a particular instance.

Expose the invariant to the JVM by splitting the class into the base,
which services Mode.ALL and a subclass, which performs the commit index
check.

Also move segment acquisition and reader positioning to
SegmentedJournal, as otherwise we would be calling hasNext() from
constructor, which is getting flagged by SpotBugs.

JIRA: CONTROLLER-2106
Change-Id: I29fca69a211fc8f21619a54fe59a8ff4012b01d0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoFix JournalSegment{Reader,Writer} license 86/110686/3
Robert Varga [Wed, 13 Mar 2024 07:23:25 +0000 (08:23 +0100)]
Fix JournalSegment{Reader,Writer} license

atomix-storage is licensed under APL, not EPL. Fix that.

Change-Id: I2a88fb978d0e1e9e22a5aecffcc4a7ca7fc2ae96
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRefactor JournalSegmentReader.readNext() 80/110680/1
Robert Varga [Tue, 12 Mar 2024 19:37:02 +0000 (20:37 +0100)]
Refactor JournalSegmentReader.readNext()

The two implementations share the callout to getNextIndex(), pull it
down to the base class to better define the API we are after.

JIRA: CONTROLLER-2099
Change-Id: Id82a039dbb02156bef43ff9f9398d0e1883cc38f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoSpecialize tests to ClientBackedDataStore 72/110672/4
Robert Varga [Tue, 12 Mar 2024 16:03:59 +0000 (17:03 +0100)]
Specialize tests to ClientBackedDataStore

We have only one subclass of AbstractDataStore, use that instead of
AbstractDataStore.

Change-Id: Ia6552b1c050fb99e3084c2d8f5c36ea052e991be
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoLock down AbstractDataStore 71/110671/2
Robert Varga [Tue, 12 Mar 2024 15:30:37 +0000 (16:30 +0100)]
Lock down AbstractDataStore

We have really only one specialization -- ClientBackedDataStore. We
therefore can further lock down the methods we expose.

Change-Id: I321c920fff6027e21c5ff78f489b192eb6675bbc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRemove StorageLevel.MEMORY 64/110664/1
Robert Varga [Tue, 12 Mar 2024 09:25:16 +0000 (10:25 +0100)]
Remove StorageLevel.MEMORY

This enum is defunct and results in DISK being used. Remove it.

JIRA: CONTROLLER-2101
Change-Id: Ibc6f6916f20e5b0fc0f3c8fe6651e65f24074d53
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRemove JournalWriter.append(Indexed) 63/110663/1
Robert Varga [Tue, 12 Mar 2024 09:24:04 +0000 (10:24 +0100)]
Remove JournalWriter.append(Indexed)

This method is only used in a single test and can be realized via the
usual append(E) method. Remove it.

JIRA: CONTROLLER-2101
Change-Id: Ie1ec3507c18d9970be4968c9239b08ad8323f3a9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoClean up JournalSegment 95/110595/2
Robert Varga [Mon, 11 Mar 2024 12:23:08 +0000 (13:23 +0100)]
Clean up JournalSegment

We have plenty of unused and needlessly-public methods. Clean that up.

Change-Id: Ie93dd9eff7f847be23bf4d7fea9acefcac0beb60
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoHide SegmentedJournal{Reader,Writer} 94/110594/3
Robert Varga [Mon, 11 Mar 2024 11:49:40 +0000 (12:49 +0100)]
Hide SegmentedJournal{Reader,Writer}

These classes are define by Journal{Reader,Writer} interfaces, hide them
as they are pure implementation details.

JIRA: CONTROLLER-2098
Change-Id: I1149b970001cb64ffe503f128cce3864e396280a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoDisconnect JournalSegmentWriter from JournalWriter 93/110593/3
Robert Varga [Mon, 11 Mar 2024 11:08:05 +0000 (12:08 +0100)]
Disconnect JournalSegmentWriter from JournalWriter

JournalSegmentWriter is really the internal API, so it should not have a
public API straightjacket. Disconnect the implementation, making method
properly package-private.

This also makes it very clear that JournalWriter is not something users
should close() -- because doing so would wreck internal machinery rather
thoroughly, rendering the segment writer inoperable -- and that should
only be possible via JournalSegment's lifecycle.

JIRA: CONTROLLER-2098
Change-Id: Ia18b0dc640cba11689bb36cf338c8cef3ae4e6f8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRemove MappableJournalSegmentWriter 91/110591/4
Robert Varga [Mon, 11 Mar 2024 10:56:22 +0000 (11:56 +0100)]
Remove MappableJournalSegmentWriter

MappableJournalSegmentWriter is now just mediating implementation access
-- which is always is now guarded by a reference.

This means we can ditch this indirection and give out
SegmentedJournalWriter directly.

JIRA: CONTROLLER-2098
Change-Id: If15bdb10f9a317960aaf41aa80c57e929923ed21
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRework JournalSegment writer access 90/110590/4
Robert Varga [Mon, 11 Mar 2024 10:45:51 +0000 (11:45 +0100)]
Rework JournalSegment writer access

The only user of JournalSegment.writer() is SegmentedJournalWriter,
which is using acquire/release to guard access to the writer.

Rework these methods so that acquire/release are internal and exposed
functionality is acquireWriter() and releaseWriter().

JIRA: CONTROLLER-2098
Change-Id: I345cec145fd82ee59c525d183584d69a9e599bf9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoDisconnect JournalSegmentReader from JournalReader 89/110589/4
Robert Varga [Mon, 11 Mar 2024 10:28:37 +0000 (11:28 +0100)]
Disconnect JournalSegmentReader from JournalReader

JournalSegmentReader is the only used by SegmentedJournalReader, which
is the actual implementation of JournalReader.

There is really no point in JournalSegmentReader to conform to the
public API, as not all elements are needed.

This disconnects JournalSegmentReader, eliminating getFirstIndex(), as
that is simply not called -- and was not conforming to the API anyway.

JIRA: CONTROLLER-2098
Change-Id: Icd802ee07207d4f6787e3bdb71e36e553f2010c3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoEliminate MappableJournalSegmentReader 88/110588/4
Robert Varga [Mon, 11 Mar 2024 10:13:05 +0000 (11:13 +0100)]
Eliminate MappableJournalSegmentReader

MappableJournalSegmentReader is an indirection used by
JournalSegmentReader to get a stable reader and the backend is
manipulated via map()/unmap() operations.

This is sort of a band-aid to lifecycle, as JournalSegment.close()
eagerly closes the writer, which in turn invalidates buffer and all that
jazz.

This dance is quite unnecessary, as JournalSegmentReader always acquires
the Segment, hence as long as it has a reader, the segment is guaranteed
to be mapped -- except for the case of close().

This patch reworks the logic in couple of ways:
- references are now guarding the writer itself, so as long as there are
  some, the writer is not closed.
- createReader() now increments the reference count, which means we can
  directly allocate the appopriate JournalSegmentReader implementation
- JournalSegmentReader.close() now routes to
  JournalSegment.closeReader(), which in turn releases the reference

JIRA: CONTROLLER-2098
Change-Id: I29b926dec5dc1a77e7e5e51ee3e2deb4f0ca6e33
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoHide JournalSegment 87/110587/3
Robert Varga [Mon, 11 Mar 2024 10:02:19 +0000 (11:02 +0100)]
Hide JournalSegment

JournalSegment is an implementation detail, which we do not want to leak
to the outside world. Hide it an make it final.

JIRA: CONTROLLER-2098
Change-Id: Ife71005f481c7ffb3c2eb6b89d3c5afa5e7f1609
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoClean up SegmentedJournalWriter 84/110584/2
Robert Varga [Mon, 11 Mar 2024 08:08:57 +0000 (09:08 +0100)]
Clean up SegmentedJournalWriter

We have duplicated code in append() methods and their recovery is not
obvious. Move common code into a private method and reduce the size of
catch blocks.

JIRA: CONTROLLER-2098
Change-Id: I58e6ff19cf2eaa2e97c56499d70171cb93da6174
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoClean up SegmentedJournalReader 83/110583/2
Robert Varga [Mon, 11 Mar 2024 07:44:57 +0000 (08:44 +0100)]
Clean up SegmentedJournalReader

We have bit of duplicated code dealing with moving to next segment.
Concentrate it to a single method.

This shows the code actually has a bug, where it fails to close the
reader -- hence potentially leaking.

JIRA: CONTROLLER-2098
Change-Id: Ib58116d21cedde58c8f84d5fffd245e8e8408935
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoDo not store JournalSegment in JournalSegmentWriter 82/110582/3
Robert Varga [Sun, 10 Mar 2024 22:01:42 +0000 (23:01 +0100)]
Do not store JournalSegment in JournalSegmentWriter

We are only accessing index() and maxSegmentSize. We already copy
index() to firstIndex, so let's do the same maxSegmentSize and use
firstIndex instead of accessing segment.index().

JIRA: CONTROLLER-2098
Change-Id: Ia8a24c7f73187a5803d279309775f361a39c91b0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoInline SegmentedJournalReader.initialize() 81/110581/2
Robert Varga [Sun, 10 Mar 2024 18:25:50 +0000 (19:25 +0100)]
Inline SegmentedJournalReader.initialize()

This method is only invoked from the constructor, inline it there to
similify lifecycle.

JIRA: CONTROLLER-2098
Change-Id: I2c2790f785e13dd411a23eff299221b129a99630
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRemove MappableJournalSegmentWriter.firstIndex() 80/110580/2
Robert Varga [Sun, 10 Mar 2024 18:20:31 +0000 (19:20 +0100)]
Remove MappableJournalSegmentWriter.firstIndex()

This method is not used anywhere, remove it. This makes
MappableJournalSegmentWriter a pure delegator with map/unmap changing
the delegate object.

JIRA: CONTROLLER-2098
Change-Id: Ifcbc22edb0046ae890837415e9751a4a8274d4d3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoShare FileChannel across all JournalSegmentReaders 79/110579/2
Robert Varga [Sun, 10 Mar 2024 18:00:39 +0000 (19:00 +0100)]
Share FileChannel across all JournalSegmentReaders

Now that neither the writer not reader manipulates FileChannel state, we
can share a single channel. This has the nice effect of lifting its
lifecycle management completely to JournalSegment.

JIRA: CONTROLLER-2096
Change-Id: Ib7653d1494fdb53d1a1c73ad20ab103b29fedaa0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoExpand JournalSegmentReader 78/110578/3
Robert Varga [Sun, 10 Mar 2024 17:21:00 +0000 (18:21 +0100)]
Expand JournalSegmentReader

The two subclasses contain a lot of duplicated code. This patch
centralizes most code to reside in JournalSegmentReader.

JIRA: CONTROLLER-2098
Change-Id: I09a968ff8a283fc86f8591ab3d302cc2af0eb86a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoIntroduce JournalSegmentReader 77/110577/2
Robert Varga [Sun, 10 Mar 2024 16:33:55 +0000 (17:33 +0100)]
Introduce JournalSegmentReader

The two implementations for accessing the file have a common API and
potentially share a lot of code. Introduce JournalSegmentReader to act
as a common superclass.

JIRA: CONTROLLER-2098
Change-Id: Ie8b524812f6193206e1df100ac55ed4f11ad9f5c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoPerform proper handoff between JournalSegmentWriters 76/110576/3
Robert Varga [Sun, 10 Mar 2024 13:27:28 +0000 (14:27 +0100)]
Perform proper handoff between JournalSegmentWriters

Switching between JournalSegmentWriter implementations is a matter of
just handing off state, which is limited to the last entry and position
in the file.

This patch introduces alternative constructors, which allow this state
to be moved to the new implementation without needing to re-read the
file.

JIRA: CONTROLLER-2043
Change-Id: I796cb4da4e09dfe6332ca82a7dfdb76740e30164
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoMove JournalSegmentWriter switchover logic 75/110575/5
Robert Varga [Sun, 10 Mar 2024 11:53:21 +0000 (12:53 +0100)]
Move JournalSegmentWriter switchover logic

This patch moves the logic to JournalSegmentWriter implementations,
which allows us to communicate internal state without the need to
re-establish it or leak it to the outside world.

JIRA: CONTROLLER-2043
Change-Id: Ifcb937fdaeaecd46b53a962c541ebfff689ecd40
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoIntroduce JournalSegmentWriter 74/110574/4
Robert Varga [Sun, 10 Mar 2024 11:22:56 +0000 (12:22 +0100)]
Introduce JournalSegmentWriter

MappableJournalSegmentWriter needs to flip between the two
implementations with seamless handoff.

Introduce JournalSegmentWriter as common superclass, exposing
currently-used interface.

JIRA: CONTROLLER-2043
JIRA: CONTROLLER-2098
Change-Id: I11f01ea027a757a32e25bf434d29abeca7d40f6e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoTrack channel position in explicit field 73/110573/4
Robert Varga [Sat, 9 Mar 2024 17:28:02 +0000 (18:28 +0100)]
Track channel position in explicit field

Rather than manipulating the channel, use an explicit field to keep
track of our current position.

JIRA: CONTROLLER-2095
Change-Id: I50adbef833251035f7c54ec624f9a03d59b5c7c9
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoSimplify FileChannelJournalSegmentWriter position tracking 72/110572/3
Robert Varga [Sat, 9 Mar 2024 17:13:01 +0000 (18:13 +0100)]
Simplify FileChannelJournalSegmentWriter position tracking

This patch makes the obvious switch in state tracking: memory buffer
does not hold anything of value w.r.t. overall state, so there is no
point in marking/resetting and maintaining memory.position() beyond
what we need for reading from it.

Local 'position' acts now as the authoritative source of where we want
to go and we propagate it to channel position when we validate an entry.

JIRA: CONTROLLER-2095
Change-Id: Iab150a3c7348c714170223b397167cd4bb87f087
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoImprove entry crc32 computation 71/110571/3
Robert Varga [Sat, 9 Mar 2024 15:03:10 +0000 (16:03 +0100)]
Improve entry crc32 computation

We have a codepath difference here, where we use either a ByteBuffer or
a raw array to compute CRC32.

MappedJournalSegmentWriter does not make it immediately clear we use
this buffer twice -- once for CRC32 and once for deserialization.

Move acquisition of slice just after we have read the expected CRC32, so
it is clear it is something we would be doing even if there were no
checksum involved.

Mirror the same in FileChannelJournalSegmentWriter, as this will allow
us to further consolidate the code and stop mucking with memory.limit(),
which is causing us to invalidate our previously-set mark.

JIRA: CONTROLLER-2095
Change-Id: I355bd97cd8acb4f5d9d91310de97ecb2cbd70282
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoInvert checksum check 70/110570/2
Robert Varga [Sat, 9 Mar 2024 14:49:37 +0000 (15:49 +0100)]
Invert checksum check

We have a hardly-visible else branch which terminates our loop. Increase
its visibility by making it a dedicated if.

JIRA: CONTROLLER-2095
Change-Id: Ia0f6901793b1847a13afc5a3da3fdd5382180606
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoDo not use java.util.zip.Checksum 69/110569/3
Robert Varga [Sat, 9 Mar 2024 14:32:01 +0000 (15:32 +0100)]
Do not use java.util.zip.Checksum

We are using this interface only for local variable type declaration,
use CRC32 directly, just as MappedJournalSegmentWriter does.

JIRA: CONTROLLER-2095
Change-Id: I054c639ae49b4fccef863a363c6e8665ea1322f6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoReduce position changes during read 68/110568/2
Robert Varga [Sat, 9 Mar 2024 14:29:56 +0000 (15:29 +0100)]
Reduce position changes during read

Rather than using a read() which updates the position, requiring us to
set the position again, set it only once and use read with offset --
eliminating one syscall.

JIRA: CONTROLLER-2095
Change-Id: I478ba1cbb1f5737a751b43cb6ed0d018e49e6485
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoClean up initial FileChannel writer reset's read 67/110567/2
Robert Varga [Sat, 9 Mar 2024 14:13:20 +0000 (15:13 +0100)]
Clean up initial FileChannel writer reset's read

The code here bears marks of 'copy, paste and cudgel to compliance'
programming and is strikingly similar to what MappedJournalSegmentWriter
does -- except it needs to deal with reading as well.

This patch takes the first step towards sanity by eliminating a useless
if() and uses FileChannel.read(ByteBuffer, long) to reduce position
adjustments.

JIRA: CONTROLLER-2095
Change-Id: I528cb14608402a406e20d168a7e8520c9eb66edf
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoOptimize MappedJournalSegmentWriter.truncate() 66/110566/2
Robert Varga [Sat, 9 Mar 2024 13:33:11 +0000 (14:33 +0100)]
Optimize MappedJournalSegmentWriter.truncate()

Reduce code duplication by separating current position manipulation and
entry zero-out.

Also use a single putLong() instead of two putInt()s, eliminating one
range check.

Overall this makes the two implementations much more similar, allowing
sharing code at some later point in the future.

JIRA: CONTROLLER-2095
Change-Id: I9791b5e27a779210b5500a7923ccada7156f26e5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoOptimize FileChannelJournalSegmentWriter.truncate() 65/110565/2
Robert Varga [Sat, 9 Mar 2024 13:09:45 +0000 (14:09 +0100)]
Optimize FileChannelJournalSegmentWriter.truncate()

FileChannelJournalSegmentWriter.truncate() is inefficient in that it
zeroes-out its memory buffer and then writes it completely out.

This patch aligns it with what MappedJournalSegmentWriter does, which is
just zeroing out the entry header -- reducing both IO and CPU overheads.

JIRA: CONTROLLER-2095
Change-Id: I487157e78524cc9b00c9efff2064dbe892638ae4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoImprove FileChannelJournalSegmentWriter.truncate() 63/110563/3
Robert Varga [Sat, 9 Mar 2024 12:30:12 +0000 (13:30 +0100)]
Improve FileChannelJournalSegmentWriter.truncate()

Reduce the dance around channel position by explicitly passing it down,
thus reducing the number of syscalls we incur.

Also inline FileChannelJournalSegmentWriter.zero() and add a FIXME to
improve our zero-out strategy.

JIRA: CONTROLLER-2095
Change-Id: I885947fef51132a294c900396d902cf5481e2bd8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoRemove unused {FileChannel,Mapped}JournalSegmentWriter methods 64/110564/3
Robert Varga [Sat, 9 Mar 2024 12:38:05 +0000 (13:38 +0100)]
Remove unused {FileChannel,Mapped}JournalSegmentWriter methods

We have a few methods which are not used anywhere, remove them to
simplify things.

JIRA: CONTROLLER-2095
Change-Id: I508d92cc2c761a6432e24e70db400636764753c8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoOptimize FileChannelJournalSegmentReader channel use 62/110562/2
Robert Varga [Sat, 9 Mar 2024 09:47:49 +0000 (10:47 +0100)]
Optimize FileChannelJournalSegmentReader channel use

We use FileChannel to maintain our position for a particular reader,
which is a naive implementation.

Since FileChannel's position is tied to the underlying file descriptor,
each such manipulation involves locking and system calls.

Switch to maintaining the position ourselves and using
FileChannel.read(buffer, position), improving performance.

JIRA: CONTROLLER-2094
Change-Id: I7f462f3fd8aa9bc47c16201dd32faeb2a7c18a32
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
8 weeks agoAdd a segmented-journal performance test case 57/110557/10
Robert Varga [Fri, 8 Mar 2024 14:44:49 +0000 (15:44 +0100)]
Add a segmented-journal performance test case

This introduces a PerformanceTest, which tests journal entry writeout
for various sizes and metrics of how well it did.

JIRA: CONTROLLER-2043
Change-Id: Idad7575326f632366417f60a850b6d63393bdc1e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 months agoMigrate SegmentedFileJournalTest to JUnit5 55/110555/2
Robert Varga [Fri, 8 Mar 2024 10:29:05 +0000 (11:29 +0100)]
Migrate SegmentedFileJournalTest to JUnit5

This is a simple test, migrate it.

Change-Id: I2a02266f6029e6424945e2b23d8060cefff9bf75
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 months agoMigrate some tests to new ImmutableNodes 35/110035/8
Robert Varga [Sat, 27 Jan 2024 15:15:53 +0000 (16:15 +0100)]
Migrate some tests to new ImmutableNodes

While the amount of users of deprecated methods is huge here, we byte
off a chunk of them.

Change-Id: I6722230638b12cd7eede81e532578148b133220e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 months agoAdd RTD configuration 32/110532/1
Robert Varga [Thu, 7 Mar 2024 13:31:29 +0000 (14:31 +0100)]
Add RTD configuration

RTD requires configuration, add it.

Change-Id: I620a33a647f667c7b534f6b1ac19c50fe7dc6866
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 months agoBump Scala to 2.13.13 64/110364/2
Robert Varga [Tue, 27 Feb 2024 09:39:19 +0000 (10:39 +0100)]
Bump Scala to 2.13.13

https://github.com/scala/scala/releases/tag/v2.13.13

Change-Id: I365019424a8969ee87837c81c4022d9853e67539
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 months agoMigrate cds-access-client 33/110033/6
Robert Varga [Sat, 27 Jan 2024 14:53:00 +0000 (15:53 +0100)]
Migrate cds-access-client

We have a single test using deprecated methods, migrate it.

Change-Id: Ibfbd89c45667e88f9a147ffc791485d87e9147be
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
2 months agoSimplify verify assertions 69/110269/2
Ivan Hrasko [Tue, 20 Feb 2024 08:21:35 +0000 (09:21 +0100)]
Simplify verify assertions

Simplify verify assertions in
ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest class.

JIRA: CONTROLLER-2074
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
Change-Id: I9bfd448bfef32d5a47e99e056496da5b60abd79d

2 months agoRefactor snapshot state verification 65/110265/4
Ivan Hrasko [Mon, 19 Feb 2024 11:47:12 +0000 (12:47 +0100)]
Refactor snapshot state verification

Use dedicated list of snapshot states for leader and followers in
ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest class.

JIRA: CONTROLLER-2074
Change-Id: I06b6303585c9002d5d36b043b96fa46f5eca60cf
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
3 months agoPartially migrate WriteTransactionsHandler 36/110036/3
Robert Varga [Sat, 27 Jan 2024 15:22:15 +0000 (16:22 +0100)]
Partially migrate WriteTransactionsHandler

We can easily migrate some of the use of deprecated methods. Make dent
in the related warnings.

Change-Id: I8e368a4899ee2719c9f40b5f4d59a8c1f9cdc0ab
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoClean up sal-remoterpc-connector 34/110034/3
Robert Varga [Sat, 27 Jan 2024 14:53:25 +0000 (15:53 +0100)]
Clean up sal-remoterpc-connector

We are using a number of deprecated methods here, clean that up.

Change-Id: I19b37967cd7cac472efff3ae6018ea008111c49b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoMigrate sal-clusering-commons tests 32/110032/1
Robert Varga [Sat, 27 Jan 2024 14:42:41 +0000 (15:42 +0100)]
Migrate sal-clusering-commons tests

Migrate most users of deprecated Builders/ImmutableNodes.

Change-Id: I676f248cc524ebc51120352951e93e8539b1dd88
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoEnable requiremens in sal-distributed-datastore 46/109946/1
Robert Varga [Wed, 24 Jan 2024 09:39:23 +0000 (10:39 +0100)]
Enable requiremens in sal-distributed-datastore

The upstream issue has been fixed a few moons back, remove the
workaround we carry.

Change-Id: I5ed8030f98638f6202d4e9d67c309c704401840b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoModernize clustering-test-app 86/109886/2
Robert Varga [Mon, 22 Jan 2024 06:40:31 +0000 (07:40 +0100)]
Modernize clustering-test-app

Do not use deprecated constructs, for the most part at least.

Change-Id: I4ca96966407129d6cb60abf2d64d718065c298ed
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoBump versions to 9.0.1-SNAPSHOT 92/109892/1
Robert Varga [Mon, 22 Jan 2024 09:31:47 +0000 (10:31 +0100)]
Bump versions to 9.0.1-SNAPSHOT

This starts the next development iteration.

Change-Id: I27cfca0f285d9a4c6eb1d99401947c62a4fcfc8b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoRelease controller v9.0.0
jenkins-releng [Mon, 22 Jan 2024 08:19:14 +0000 (08:19 +0000)]
Release controller

3 months agoMigrate cds-access-api to ImmutableNodes 85/109885/1
Robert Varga [Mon, 22 Jan 2024 06:34:01 +0000 (07:34 +0100)]
Migrate cds-access-api to ImmutableNodes

Use yang-data-spi version of immutable nodes.

Change-Id: Ic4052e3877caf828586f2756e6b5e555fe9ac255
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoMigrate ShardDataTreeSnapshotTest 88/109788/11
Robert Varga [Tue, 16 Jan 2024 01:07:57 +0000 (02:07 +0100)]
Migrate ShardDataTreeSnapshotTest

This is a straightforward replace of Builders-only call sites.

Change-Id: Id38446025310579478ecd03203bd632f6c522af8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoMigrate users of deprecated methods 64/109864/3
Robert Varga [Fri, 19 Jan 2024 13:49:28 +0000 (14:49 +0100)]
Migrate users of deprecated methods

Change-Id: I8eac554e9e74d427e4f3dc3ef9ea62b1f8b4add3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoEliminate OSGiDOMDataBroker 11/109811/9
Robert Varga [Tue, 16 Jan 2024 19:16:42 +0000 (20:16 +0100)]
Eliminate OSGiDOMDataBroker

Fold instantiation wiring into ConcurrentDOMDataBroker, which ends up
being really simple integration.

Change-Id: I70fa7a6422de11f7cbdc8c8c71e95d2410b9d1ce
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoFactor out DataBrokerCommitExecutor 10/109810/9
Robert Varga [Tue, 16 Jan 2024 19:09:19 +0000 (20:09 +0100)]
Factor out DataBrokerCommitExecutor

DataBrokerCommitExecutor holds the executor service and manages its
statistics and lifecycle. This leaves OSGiDOMDataBroker absolutely bare
forwarder.

Change-Id: I55751c49c40aba9cfad289e0a1b913241df4f66f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoConvert OSGiDOMDataBroker to ForwardingDOMDataBroker 09/109809/9
Robert Varga [Tue, 16 Jan 2024 18:50:09 +0000 (19:50 +0100)]
Convert OSGiDOMDataBroker to ForwardingDOMDataBroker

mdsal.dom.spi provides us with the base substrate we need to forward
things efficiently. Use that and constructor injection to simplify
things a lot.

Change-Id: I77625c5f217f2b92a3bb460b60e3bbb549616da7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoBump upstreams 76/109676/33
Robert Varga [Mon, 8 Jan 2024 10:36:29 +0000 (11:36 +0100)]
Bump upstreams

Adopt:
- yangtools-13.0.1
- mdsal-13.0.0

Also adopts AbstractDOMDataBroker from mdsal-dom-spi, so that we have
less code duplication and maintenance.

UTs mocking NormalizedNode are updated to ContainerNode, as mocking
sealed classes does not work with Mockito (out of the box).

Change-Id: I6d3d3c8ced297b6850aea951040d16437df9e3f0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoRemove odl-controller-exp-netty-config 81/109881/1
Robert Varga [Sat, 20 Jan 2024 13:14:52 +0000 (14:14 +0100)]
Remove odl-controller-exp-netty-config

Remove all of configuration remnants, as there is just a single
downstream user.

JIRA: CONTROLLER-2092
Change-Id: I2d0bb01cfd061c2f0086fcc80b27e6b0a336e5dc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoRemove support for actions/rpc/notifications, take two 19/109819/2
Robert Varga [Wed, 17 Jan 2024 10:16:08 +0000 (11:16 +0100)]
Remove support for actions/rpc/notifications, take two

The concepts underlying what we are doing here are gone from MD-SAL.
Update the version of the XML namespace and remove support for
- action-implementation
- action-instance
- notification-listener
- rpc-implementation
- rpc-service
- specific-reference-list
- static-reference

JIRA: CONTROLLER-2090
Change-Id: Ic9777d1d6295da3f31da7b22d816c0fc9ba9565e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoWarn on deprecated blueprint elements 18/109818/1
Robert Varga [Wed, 17 Jan 2024 10:02:20 +0000 (11:02 +0100)]
Warn on deprecated blueprint elements

A number of elements are going away, issue a warning when each is
encountered.

JIRA: CONTROLLER-2090
Change-Id: I91cd29f4824e617572e3f17a593df431d0c72efe
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoRevert "Remove support for actions/rpc/notifications" 16/109816/1
Robert Varga [Wed, 17 Jan 2024 07:59:32 +0000 (08:59 +0100)]
Revert "Remove support for actions/rpc/notifications"

This reverts commit beaac808943b25f5627c70ddb5029408101204a7.

JIRA: CONTROLLER-2090
Change-Id: I3a624a4c5ef8159d2667794f734609f0a2be3e5b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoRevert "Fix namespace handling" 15/109815/1
Robert Varga [Wed, 17 Jan 2024 07:59:11 +0000 (08:59 +0100)]
Revert "Fix namespace handling"

This reverts commit 82284ce97ea00c26af1cad479211ce1fed68a533.

JIRA: CONTROLLER-2090
Change-Id: Idea6406166193fdebeedfc828aaef7173d1cd681
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoFix namespace handling 04/109804/2
Robert Varga [Tue, 16 Jan 2024 15:46:41 +0000 (16:46 +0100)]
Fix namespace handling

The previous patch missed an update to namespace versions, fix that up.

JIRA: CONTROLLER-2090
Change-Id: Id780a60ed629cdb862a56c616b78679a7d6f3d25
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoUse simple RPC registrations 95/109795/4
Robert Varga [Tue, 16 Jan 2024 03:53:19 +0000 (04:53 +0100)]
Use simple RPC registrations

We are registering a single implementation, use simpler API alternative
to achieve the same thing.

Change-Id: I8ada5656eebf355357e6b2ca651e967343645697
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoRemove shard-snapshot-chunk-size 70/101570/11
Robert Varga [Fri, 10 Jun 2022 11:35:31 +0000 (13:35 +0200)]
Remove shard-snapshot-chunk-size

Remove shard-snapshot-chunk-size and replace its occurrences
with maximum-message-slice-size.

JIRA: CONTROLLER-1980
Change-Id: Iab862d0789b75a89b6476b4ec048d7344362adf2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
Signed-off-by: Matej Sramcik <matej.sramcik@pantheon.tech>
3 months agoMigrate NotificationIT 91/109791/1
Robert Varga [Tue, 16 Jan 2024 01:40:54 +0000 (02:40 +0100)]
Migrate NotificationIT

We are just collecting notifications, which is easily catered to by a
simple API -- to the point of not needing a class and getting by with
method handles.

Change-Id: I140c734a1fe882196f174d00eb825ff635481385
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoConvert notification listeners 90/109790/1
Robert Varga [Tue, 16 Jan 2024 00:34:42 +0000 (01:34 +0100)]
Convert notification listeners

PeopleCarListener and YnlListener are listening to a single
notification. Trivially convert them, renaming PeopleCarLister to
CarBoughtListener (which is what it is).

Change-Id: Iaf04257d3b3682cd801e4dabeb5f9e7cb81f0d6b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoDo not use RpcService in provider 19/108019/15
Oleksandr Zharov [Thu, 28 Sep 2023 17:18:35 +0000 (19:18 +0200)]
Do not use RpcService in provider

Migrated usage of RpcService to Rpc<?,?> for provider.

JIRA: CONTROLLER-2085
Change-Id: I38d66761df26506c383402e32b5fe605d05dcda8
Signed-off-by: Oleksandr Zharov <oleksandr.zharov@pantheon.tech>
3 months agoRemove support for actions/rpc/notifications 77/109777/1
Robert Varga [Mon, 15 Jan 2024 12:55:23 +0000 (13:55 +0100)]
Remove support for actions/rpc/notifications

The concepts underlying what we are doing here are gone from MD-SAL.
Update the version of the XML namespace and remove support for
- action-implementation
- action-instance
- notification-listener
- rpc-implementation
- rpc-service
- specific-reference-list
- static-reference

JIRA: CONTROLLER-2090
Change-Id: I7d9c992108378283a83ce80d6612794ccac1730e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoSwitch KitchenServiceImpl to CompositeListener 75/109775/1
Robert Varga [Mon, 15 Jan 2024 11:59:02 +0000 (12:59 +0100)]
Switch KitchenServiceImpl to CompositeListener

Do not use generated ToasterListener, just internalize the dispatch
methods.

Change-Id: I3ab8948a07003d9d563dd9b8282c550406f6d1b7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoMigrate ntfbenchmark 67/109767/1
Robert Varga [Mon, 15 Jan 2024 07:13:08 +0000 (08:13 +0100)]
Migrate ntfbenchmark

The model is using only a single notification, do not use generated
Listener.

Change-Id: I3f9f4074994fd0ad133f21de1b44cdfd277f4858
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
3 months agoDo not use RpcService in sal-binding-it 23/108023/15
Oleksandr Zharov [Thu, 28 Sep 2023 17:35:03 +0000 (19:35 +0200)]
Do not use RpcService in sal-binding-it

Migrated usage of RpcService to Rpc<?,?> for sal-binding-it.

JIRA: CONTROLLER-2085
Change-Id: Ibe0b76a344e935a55ed5e975a212a43526c20af1
Signed-off-by: Oleksandr Zharov <oleksandr.zharov@pantheon.tech>