From 8a1d5ba8a0e331eca846cfc723dd839ece9598f6 Mon Sep 17 00:00:00 2001 From: Gustavo Trott <gustavo@trott.com.br> Date: Wed, 31 Mar 2021 14:21:00 -0300 Subject: [PATCH] Handle and log timeout error during Office2Pdf conversion --- .../presentation/imp/Office2PdfPageConverter.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/bbb-common-web/src/main/java/org/bigbluebutton/presentation/imp/Office2PdfPageConverter.java b/bbb-common-web/src/main/java/org/bigbluebutton/presentation/imp/Office2PdfPageConverter.java index c8ca293cfa..0253b9af72 100755 --- a/bbb-common-web/src/main/java/org/bigbluebutton/presentation/imp/Office2PdfPageConverter.java +++ b/bbb-common-web/src/main/java/org/bigbluebutton/presentation/imp/Office2PdfPageConverter.java @@ -59,18 +59,22 @@ public abstract class Office2PdfPageConverter { log.info(String.format("Calling conversion script %s.", presOfficeConversionExec)); - NuProcessBuilder officeConverterExec = new NuProcessBuilder(Arrays.asList(presOfficeConversionExec, presentationFile.getAbsolutePath(), output.getAbsolutePath())); + NuProcessBuilder officeConverterExec = new NuProcessBuilder(Arrays.asList("timeout", conversionTimeout + "s", "/bin/sh", "-c", + "\""+presOfficeConversionExec + "\" \"" + presentationFile.getAbsolutePath() + "\" \"" + output.getAbsolutePath()+"\"")); Office2PdfConverterHandler office2PdfConverterHandler = new Office2PdfConverterHandler(); - officeConverterExec.setProcessListener(office2PdfConverterHandler); NuProcess process = officeConverterExec.start(); try { - process.waitFor(conversionTimeout, TimeUnit.SECONDS); + process.waitFor(conversionTimeout + 1, TimeUnit.SECONDS); } catch (InterruptedException e) { log.error("InterruptedException while counting PDF pages {}", presentationFile.getName(), e); } + if(office2PdfConverterHandler.isCommandTimeout()) { + log.error("Command execution ({}) exceeded the {} secs timeout for {}.",presOfficeConversionExec, conversionTimeout, presentationFile.getName()); + } + if(!office2PdfConverterHandler.isCommandSuccessful()) { throw new Exception(String.format("Error while executing conversion script %s.", presOfficeConversionExec)); } -- GitLab