This is an automated email from the ASF dual-hosted git repository. solomax pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push: new 7407e68 [OPENMEETINGS-2331] KMS re-connection is refactored new 93d8cff Merge branch 'master' of github.com:apache/openmeetings 7407e68 is described below commit 7407e68a3fe16f0a3b7037f01fce24076e69ce27 Author: Maxim Solodovnik <solomax...@gmail.com> AuthorDate: Sat May 2 23:33:27 2020 +0700 [OPENMEETINGS-2331] KMS re-connection is refactored --- .../openmeetings/core/remote/KurentoHandler.java | 29 +++++++++++++--------- .../webapp/WEB-INF/classes/applicationContext.xml | 2 +- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java index 8c3e855..348f3e3 100644 --- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java +++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java @@ -33,6 +33,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; @@ -57,7 +59,6 @@ import org.kurento.client.KurentoConnectionListener; import org.kurento.client.MediaObject; import org.kurento.client.MediaPipeline; import org.kurento.client.ObjectCreatedEvent; -import org.kurento.client.ObjectDestroyedEvent; import org.kurento.client.PlayerEndpoint; import org.kurento.client.RecorderEndpoint; import org.kurento.client.Tag; @@ -117,27 +118,33 @@ public class KurentoHandler { return connctd; } + @PostConstruct public void init() { check = () -> { try { + if (isConnected()) { + return; + } kuid = randomUUID().toString(); client = KurentoClient.create(kurentoWsUrl, new KConnectionListener(kuid)); client.getServerManager().addObjectCreatedListener(new KWatchDogCreate()); - client.getServerManager().addObjectDestroyedListener(new EventListener<>() { - @Override - public void onEvent(ObjectDestroyedEvent event) { - log.debug("Kurento::ObjectDestroyedEvent objectId {}, tags {}, source {}", event.getObjectId(), event.getTags(), event.getSource()); - } - }); + client.getServerManager().addObjectDestroyedListener(event -> + log.debug("Kurento::ObjectDestroyedEvent objectId {}, tags {}, source {}", event.getObjectId(), event.getTags(), event.getSource()) + ); } catch (Exception e) { log.warn("Fail to create Kurento client, will re-try in {} ms", checkTimeout); - kmsRecheckScheduler.schedule(check, checkTimeout, MILLISECONDS); } }; - check.run(); + kmsRecheckScheduler.scheduleAtFixedRate(check, 0L, checkTimeout, MILLISECONDS); } + @PreDestroy public void destroy() { + clean(); + kmsRecheckScheduler.shutdownNow(); + } + + private void clean() { if (client != null) { kuid = randomUUID().toString(); // will be changed to prevent double events client.destroy(); @@ -377,11 +384,9 @@ public class KurentoHandler { public void disconnected() { log.info("Kurento disconnected"); if (lkuid.equals(kuid)) { - log.warn("Disconnected, will re-try in {} ms", checkTimeout); connected = false; notifyRooms(); - destroy(); - kmsRecheckScheduler.schedule(check, checkTimeout, MILLISECONDS); + clean(); } } diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml index 39fcbfb..e24aee8 100644 --- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml +++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml @@ -144,7 +144,7 @@ </bean> <!-- Kurento --> - <bean id="kurentoHandler" class="org.apache.openmeetings.core.remote.KurentoHandler" init-method="init" destroy-method="destroy" + <bean id="kurentoHandler" class="org.apache.openmeetings.core.remote.KurentoHandler" p:kurentoWsUrl="ws://127.0.0.1:8888/kurento" p:checkTimeout="10000" p:watchThreadCount="10"