commit | 4f8720e9ded65236bd8b324eecb0b8bf29e5bac3 | [log] [tgz] |
---|---|---|
author | Deepa Vaddireddy <dvaddire@partner.ciena.com> | Wed Jan 04 09:34:23 2017 +0530 |
committer | Ray Milkey <ray@onlab.us> | Tue Jan 10 21:52:02 2017 +0000 |
tree | 031216fec33e993ebd35ae5ef8ec0f38c601eb34 | |
parent | 968de9ea343f0a901462f22e32a590e739129d00 [diff] |
Fix for ONOS-5783.java.lang.IllegalStateException: session is expired Change-Id: I540b3adb1a098b51bb8231ef724d5f4e19a24cc9 (cherry picked from commit 289ff7f5a3815704491e9509fe87d3e4f1614312)
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorState.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorState.java index 33414e7..cb7d63a 100644 --- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorState.java +++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/resources/impl/AtomixLeaderElectorState.java
@@ -125,9 +125,21 @@ * @param commit listen commit */ public void listen(Commit<? extends Listen> commit) { + Long sessionId = commit.session().id(); if (listeners.putIfAbsent(commit.session().id(), commit) != null) { commit.close(); } + commit.session() + .onStateChange( + state -> { + if (state == ServerSession.State.CLOSED + || state == ServerSession.State.EXPIRED) { + Commit<? extends Listen> listener = listeners.remove(sessionId); + if (listener != null) { + listener.close(); + } + } + }); } /**