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"

Reply via email to