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 2023/12/21 05:05:58 UTC
(openmeetings) 22/29: [OPENMEETINGS-2756] audio/video is fixed; version is bumped
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch jakarta-spring-6
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
commit 4f282e02cfbd7973e07daefe76cc83b2abb18ccb
Author: Maxim Solodovnik <so...@apache.org>
AuthorDate: Wed Sep 27 18:54:43 2023 +0700
[OPENMEETINGS-2756] audio/video is fixed; version is bumped
---
openmeetings-core/pom.xml | 2 +-
openmeetings-db/pom.xml | 2 +-
openmeetings-install/pom.xml | 2 +-
openmeetings-mediaserver/pom.xml | 2 +-
.../src/main/java/module-info.java | 1 +
.../openmeetings/mediaserver/IStreamProcessor.java | 24 ------------
.../org/apache/openmeetings/mediaserver/KRoom.java | 2 +-
.../openmeetings/mediaserver/KurentoHandler.java | 44 ++++++++++++++++------
.../openmeetings/mediaserver/StreamProcessor.java | 18 +++++----
.../mediaserver/StreamProcessorActions.java | 7 ++--
.../mediaserver/TestStreamProcessor.java | 11 +++---
.../src/test/java/module-info.test | 1 +
openmeetings-screenshare/pom.xml | 2 +-
openmeetings-server/pom.xml | 2 +-
openmeetings-service/pom.xml | 2 +-
openmeetings-util/pom.xml | 2 +-
openmeetings-web/pom.xml | 2 +-
openmeetings-webservice/pom.xml | 2 +-
pom.xml | 4 +-
19 files changed, 67 insertions(+), 65 deletions(-)
diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 7b3e47fa1..54a96621f 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-core</artifactId>
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 416b02239..3ba12399c 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-db</artifactId>
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index f01dd5faa..3e37d0ed7 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-install</artifactId>
diff --git a/openmeetings-mediaserver/pom.xml b/openmeetings-mediaserver/pom.xml
index 017679e2f..a38173417 100644
--- a/openmeetings-mediaserver/pom.xml
+++ b/openmeetings-mediaserver/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-mediaserver</artifactId>
diff --git a/openmeetings-mediaserver/src/main/java/module-info.java b/openmeetings-mediaserver/src/main/java/module-info.java
index 42f766fac..45dee43fb 100644
--- a/openmeetings-mediaserver/src/main/java/module-info.java
+++ b/openmeetings-mediaserver/src/main/java/module-info.java
@@ -36,6 +36,7 @@ module org.apache.openmeetings.mediaserver {
requires spring.beans;
requires spring.context;
+ requires spring.core;
requires kurento.client;
requires kurento.jsonrpc.client;
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java
deleted file mode 100644
index 6d6e65f96..000000000
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/IStreamProcessor.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") + you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.mediaserver;
-
-public interface IStreamProcessor {
- void release(AbstractStream stream, boolean releaseStream);
- void destroy();
-}
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
index abffc893a..e7edc4771 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KRoom.java
@@ -76,7 +76,7 @@ public class KRoom {
private JSONObject recordingUser = new JSONObject();
private JSONObject sharingUser = new JSONObject();
- public KRoom(Room r) {
+ KRoom(Room r) {
this.room = r;
Injector.get().inject(this);
log.info("ROOM {} has been created", room.getId());
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
index 957d33abe..d3989f7fe 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/KurentoHandler.java
@@ -57,6 +57,7 @@ import org.kurento.client.Continuation;
import org.kurento.client.Endpoint;
import org.kurento.client.EventListener;
import org.kurento.client.KurentoClient;
+import org.kurento.client.ListenerSubscription;
import org.kurento.client.MediaObject;
import org.kurento.client.MediaPipeline;
import org.kurento.client.ObjectCreatedEvent;
@@ -69,16 +70,17 @@ import org.kurento.client.WebRtcEndpoint;
import org.kurento.jsonrpc.client.JsonRpcClientNettyWebSocket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
import com.github.openjson.JSONArray;
import com.github.openjson.JSONObject;
import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
-@Component
+@Singleton
+@Named
public class KurentoHandler {
private static final Logger log = LoggerFactory.getLogger(KurentoHandler.class);
public static final String PARAM_ICE = "iceServers";
@@ -115,6 +117,8 @@ public class KurentoHandler {
private String kuid;
private CertificateKeyType certificateType;
private KurentoClient client;
+ private ListenerSubscription objectCreatedListener;
+ private ListenerSubscription objectDestroyedListener;
private final AtomicBoolean connected = new AtomicBoolean(false);
private final Map<Long, KRoom> rooms = new ConcurrentHashMap<>();
private final Set<String> ignoredKuids = new HashSet<>();
@@ -138,6 +142,7 @@ public class KurentoHandler {
@PostConstruct
public void init() {
+ log.trace("KurentoHandler::PostConstruct");
Runnable check = () -> {
try {
if (client != null) {
@@ -178,8 +183,8 @@ public class KurentoHandler {
notifyRooms(true);
}
});
- client.getServerManager().addObjectCreatedListener(new KWatchDogCreate());
- client.getServerManager().addObjectDestroyedListener(event ->
+ objectCreatedListener = client.getServerManager().addObjectCreatedListener(new KWatchDogCreate());
+ objectDestroyedListener = client.getServerManager().addObjectDestroyedListener(event ->
log.debug("Kurento::ObjectDestroyedEvent objectId {}, tags {}, source {}", event.getObjectId(), event.getTags(), event.getSource())
);
} catch (Exception e) {
@@ -204,6 +209,14 @@ public class KurentoHandler {
client = null;
if (!copy.isClosed()) {
log.debug("Client will be destroyed ...");
+ if (objectCreatedListener != null) {
+ copy.getServerManager().removeObjectCreatedListener(objectCreatedListener);
+ objectCreatedListener = null;
+ }
+ if (objectDestroyedListener != null) {
+ copy.getServerManager().removeObjectDestroyedListener(objectDestroyedListener);
+ objectDestroyedListener = null;
+ }
copy.destroy();
log.debug(".... Client is destroyed");
}
@@ -304,7 +317,8 @@ public class KurentoHandler {
return rooms.computeIfAbsent(roomId, k -> {
log.debug("Room {} does not exist. Will create now!", roomId);
Room r = roomDao.get(roomId);
- return new KRoom(r);
+ KRoom kRoom = new KRoom(r);
+ return kRoom;
});
}
@@ -382,7 +396,7 @@ public class KurentoHandler {
this.certificateType = CertificateKeyType.valueOf(certificateType);
}
- public CertificateKeyType getCertificateType() {
+ CertificateKeyType getCertificateType() {
return certificateType;
}
@@ -412,6 +426,7 @@ public class KurentoHandler {
private void checkPipeline(String roomOid) {
scheduler.schedule(() -> {
if (client == null) {
+ log.trace("KWatchDog::checkPipeline Client is NULL");
return;
}
// still alive
@@ -420,17 +435,24 @@ public class KurentoHandler {
try {
final String inKuid = tags.get(TAG_KUID);
if (inKuid != null && ignoredKuids.contains(inKuid)) {
+ log.trace("KWatchDog::checkPipeline KUID in ignore list");
return;
}
if (validTestPipeline(tags)) {
+ log.trace("KWatchDog::checkPipeline test pipeline detected");
return;
}
if (kuid.equals(inKuid)) {
- KStream stream = streamProcessor.getByUid(tags.get(TAG_STREAM_UID));
+ String streamUId = tags.get(TAG_STREAM_UID);
+ log.trace("KWatchDog::checkPipeline kuid matched, streamId: {}", streamUId);
+ KStream stream = streamProcessor.getByUid(streamUId);
if (stream != null) {
- if (stream.getRoomId().equals(Long.valueOf(tags.get(TAG_ROOM)))
- && stream.getPipeline().getId().equals(pipe.getId()))
- {
+ Long sRoomId = stream.getRoomId();
+ Long tRoomId = Long.valueOf(tags.get(TAG_ROOM));
+ String pipeId = stream.getPipeline().getId();
+ log.trace("KWatchDog::checkPipeline stream found! Room match ? {}, Pipe match ? {}"
+ , sRoomId.equals(tRoomId), pipeId.equals(pipe.getId()));
+ if (sRoomId.equals(tRoomId) && pipeId.equals(pipe.getId())) {
return;
} else {
stream.release();
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
index e5116d70c..ee09c7545 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessor.java
@@ -35,11 +35,11 @@ import org.apache.openmeetings.core.converter.RecordingConverter;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.basic.ScreenStreamDesc;
import org.apache.openmeetings.db.entity.basic.Client.Activity;
+import org.apache.openmeetings.db.entity.basic.Client.StreamType;
+import org.apache.openmeetings.db.entity.basic.ScreenStreamDesc;
import org.apache.openmeetings.db.entity.basic.StreamDesc;
import org.apache.openmeetings.db.entity.basic.WebcamStreamDesc;
-import org.apache.openmeetings.db.entity.basic.Client.StreamType;
import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.room.Room.Right;
@@ -52,17 +52,19 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.task.TaskExecutor;
-import org.springframework.stereotype.Component;
import com.github.openjson.JSONObject;
import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
-@Component
-public class StreamProcessor implements IStreamProcessor {
+@Singleton
+@Named
+public class StreamProcessor {
private static final Logger log = LoggerFactory.getLogger(StreamProcessor.class);
/**
- * Holds a reference to the current streams available on the server instance
+ * Holds references to the current streams available on the server instance
*/
private final Map<String, KStream> streamByUid = new ConcurrentHashMap<>();
@@ -465,7 +467,6 @@ public class StreamProcessor implements IStreamProcessor {
return recDao;
}
- @Override
public void release(AbstractStream stream, boolean releaseStream) {
final String uid = stream.getUid();
if (releaseStream) {
@@ -480,11 +481,12 @@ public class StreamProcessor implements IStreamProcessor {
WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.RIGHT_UPDATED, c.getUid()));
}
}
+ log.trace("StreamProcessor::release uid: {}", uid);
streamByUid.remove(uid);
}
- @Override
public void destroy() {
+ log.trace("StreamProcessor::destroy !!!!");
for (Map.Entry<String, KStream> e : streamByUid.entrySet()) {
release(e.getValue(), true);
}
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
index ea8f7d63e..d74da8d40 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/StreamProcessorActions.java
@@ -35,13 +35,14 @@ import org.kurento.client.internal.server.KurentoServerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
import com.github.openjson.JSONObject;
import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
-@Component
+@Singleton
+@Named
public class StreamProcessorActions {
private static final Logger log = LoggerFactory.getLogger(StreamProcessorActions.class);
diff --git a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
index a7309d122..42ce6fd1e 100644
--- a/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
+++ b/openmeetings-mediaserver/src/main/java/org/apache/openmeetings/mediaserver/TestStreamProcessor.java
@@ -32,14 +32,15 @@ import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.entity.basic.IWsClient;
import org.kurento.client.IceCandidate;
-import org.springframework.stereotype.Component;
-
import com.github.openjson.JSONObject;
import jakarta.inject.Inject;
+import jakarta.inject.Named;
+import jakarta.inject.Singleton;
-@Component
-class TestStreamProcessor implements IStreamProcessor {
+@Singleton
+@Named
+class TestStreamProcessor {
private final Map<String, KTestStream> streamByUid = new ConcurrentHashMap<>();
@Inject
@@ -101,12 +102,10 @@ class TestStreamProcessor implements IStreamProcessor {
}
}
- @Override
public void release(AbstractStream stream, boolean releaseStream) {
streamByUid.remove(stream.getUid());
}
- @Override
public void destroy() {
for (Entry<String, KTestStream> e : streamByUid.entrySet()) {
e.getValue().release();
diff --git a/openmeetings-mediaserver/src/test/java/module-info.test b/openmeetings-mediaserver/src/test/java/module-info.test
index deaf32995..5f839623c 100644
--- a/openmeetings-mediaserver/src/test/java/module-info.test
+++ b/openmeetings-mediaserver/src/test/java/module-info.test
@@ -37,6 +37,7 @@ module org.apache.openmeetings.mediaserver {
requires spring.beans;
requires spring.context;
+ requires spring.core;
requires kurento.client;
requires kurento.jsonrpc.client;
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index c7c819935..05b9e9035 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-screenshare</artifactId>
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index e51a40415..696978a04 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-server</artifactId>
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 9d7bece7a..d3524fab7 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-service</artifactId>
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 9989d3894..b4388d9a5 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-util</artifactId>
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index ee8ad5190..dda3a619f 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-web</artifactId>
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index d1758e1e7..acb255775 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
<artifactId>openmeetings-webservice</artifactId>
diff --git a/pom.xml b/pom.xml
index db407e748..79623a2c3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,13 +26,13 @@
</parent>
<groupId>org.apache.openmeetings</groupId>
<artifactId>openmeetings-parent</artifactId>
- <version>7.2.0-SNAPSHOT</version>
+ <version>8.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Openmeetings</name>
<description>Parent project for all OpenMeetings Maven modules. Required to hold general settings</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.build.outputTimestamp>2023-05-10T02:44:22Z</project.build.outputTimestamp>
+ <project.build.outputTimestamp>2023-09-27T11:15:33Z</project.build.outputTimestamp>
<wicket.configuration>DEPLOYMENT</wicket.configuration>
<om.quick.build>false</om.quick.build>
<om.notquick.build>true</om.notquick.build>