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 2021/03/24 13:52:29 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2600] some
issues are addressed
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 03f67fa [OPENMEETINGS-2600] some issues are addressed
03f67fa is described below
commit 03f67fa349035d9714c4fc00fd607e554018cfec
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Mar 24 20:52:14 2021 +0700
[OPENMEETINGS-2600] some issues are addressed
---
.../openmeetings/core/converter/BaseConverter.java | 60 ++++++++++++----------
.../openmeetings/util/process/ProcessHelper.java | 16 ++++--
2 files changed, 44 insertions(+), 32 deletions(-)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
index e19df90..44ec49c 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
@@ -194,39 +194,43 @@ public abstract class BaseConverter {
}
}
- protected RecordingChunk waitForTheStream(long chunkId) throws InterruptedException {
+ protected RecordingChunk waitForTheStream(long chunkId) {
RecordingChunk chunk = chunkDao.get(chunkId);
- if (chunk.getStreamStatus() != Status.STOPPED) {
- log.debug("### Chunk Stream not yet written to disk {}", chunkId);
- long counter = 0;
- long maxTimestamp = 0;
- while(true) {
- log.trace("### Stream not yet written Thread Sleep - {}", chunkId);
-
- chunk = chunkDao.get(chunkId);
-
- if (chunk.getStreamStatus() == Status.STOPPED) {
- printChunkInfo(chunk, "Stream now written");
- log.debug("### Thread continue ... " );
- break;
- } else {
- File chunkFlv = getRecordingChunk(chunk.getRecording().getRoomId(), chunk.getStreamName());
- if (chunkFlv.exists() && maxTimestamp < chunkFlv.lastModified()) {
- maxTimestamp = chunkFlv.lastModified();
- }
- if (maxTimestamp + TIME_TO_WAIT_FOR_FRAME < System.currentTimeMillis()) {
- log.debug("### long time without any update, closing ... ");
- chunk.setStreamStatus(Status.STOPPED);
- chunkDao.update(chunk);
+ try {
+ if (chunk.getStreamStatus() != Status.STOPPED) {
+ log.debug("### Chunk Stream not yet written to disk {}", chunkId);
+ long counter = 0;
+ long maxTimestamp = 0;
+ while (true) {
+ log.trace("### Stream not yet written Thread Sleep - {}", chunkId);
+
+ chunk = chunkDao.get(chunkId);
+
+ if (chunk.getStreamStatus() == Status.STOPPED) {
+ printChunkInfo(chunk, "Stream now written");
+ log.debug("### Thread continue ... " );
break;
+ } else {
+ File chunkFlv = getRecordingChunk(chunk.getRecording().getRoomId(), chunk.getStreamName());
+ if (chunkFlv.exists() && maxTimestamp < chunkFlv.lastModified()) {
+ maxTimestamp = chunkFlv.lastModified();
+ }
+ if (maxTimestamp + TIME_TO_WAIT_FOR_FRAME < System.currentTimeMillis()) {
+ log.debug("### long time without any update, closing ... ");
+ chunk.setStreamStatus(Status.STOPPED);
+ chunkDao.update(chunk);
+ break;
+ }
+ }
+ if (++counter % 1000 == 0) {
+ printChunkInfo(chunk, "Still waiting");
}
- }
- if (++counter % 1000 == 0) {
- printChunkInfo(chunk, "Still waiting");
- }
- Thread.sleep(100L);
+ Thread.sleep(100L);
+ }
}
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
}
return chunk;
}
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
index 4c0f596..f9d8f50 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
@@ -130,11 +130,11 @@ public class ProcessHelper {
res.setExitCode(proc.exitValue())
.setOut(inputWatcher.toString())
.setError(errorWatcher.toString());
+ } catch (InterruptedException e) {
+ onException(e, start, res);
+ Thread.currentThread().interrupt();
} catch (Throwable t) {
- log.error("executeScript", t);
- res.setExitCode(-1)
- .setError(String.format("Exception after %s of work; %s", formatMillis(System.currentTimeMillis() - start), t.getMessage()))
- .setException(t.toString());
+ onException(t, start, res);
} finally {
if (proc != null) {
errorWatcher.finish();
@@ -146,4 +146,12 @@ public class ProcessHelper {
debugCommandEnd(process);
return res;
}
+
+ private static void onException(Throwable t, long start, ProcessResult res) {
+ log.error("executeScript", t);
+ res.setExitCode(-1)
+ .setError("Exception after " + formatMillis(System.currentTimeMillis() - start)
+ + " of work; " + t.getMessage())
+ .setException(t.toString());
+ }
}