Rework synchronization of SessionStateImpl 33/96033/2
authorOleksii Mozghovyi <oleksii.mozghovyi@pantheon.tech>
Mon, 26 Apr 2021 22:49:50 +0000 (01:49 +0300)
committerRobert Varga <nite@hq.sk>
Mon, 10 May 2021 11:50:49 +0000 (11:50 +0000)
commitcb762f5e04f79440883bc04fef92dfd671d12c67
tree6f4c0e0b77c2d5cc57b864d681f133ef6f12480d
parentf09d292b31573f25ec7dccf08ee97e6b4ccf68c8
Rework synchronization of SessionStateImpl

SessionStateImpl is a simple state tracker, but its lifecycle was
needlessly complex due to it not being inherently tied to its session.

Make sure SessionStateImpl is instantiated only when we have a session,
which makes a number of operations clearer: we no longer need to deal
with partial initialization and need to protect only internal state.

While we are at it, simplify all of that by keeping simple longs
instead of LongAdder -- and use saturatedOf(long) to convert these to
Uint objects, preventing possible runtime exceptions when overflows
occur.

JIRA: BGPCEP-920
Change-Id: I57b33c7dc33fe63500f5ad96a80d39889c6c5a67
Signed-off-by: Oleksii Mozghovyi <oleksii.mozghovyi@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit de6df3ea177d609faf693fe5c32479ba66998b7f)
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/AbstractTopologySessionListener.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPRequest.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTopologySessionListener.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/session/stats/SessionStateImpl.java