You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/05/02 16:39:11 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2331] KMS re-connection is refactored

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 <so...@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"