From e4e7ba6c2d024af98283e2e91b4926718ba85d51 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Mon, 25 Jun 2018 11:35:12 +0200 Subject: [PATCH] openvidu-server: COTURN log files garbage collector --- .../coturn/BashCoturnCredentialsService.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/openvidu-server/src/main/java/io/openvidu/server/coturn/BashCoturnCredentialsService.java b/openvidu-server/src/main/java/io/openvidu/server/coturn/BashCoturnCredentialsService.java index 49e7b10e..5da4b2c9 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/coturn/BashCoturnCredentialsService.java +++ b/openvidu-server/src/main/java/io/openvidu/server/coturn/BashCoturnCredentialsService.java @@ -1,6 +1,7 @@ package io.openvidu.server.coturn; import java.io.IOException; +import java.util.concurrent.atomic.AtomicLong; import org.apache.commons.lang3.RandomStringUtils; @@ -9,6 +10,10 @@ import io.openvidu.server.config.OpenviduConfig; public class BashCoturnCredentialsService extends CoturnCredentialsService { + private String logPath; + private AtomicLong logCounter = new AtomicLong(0); + private final long LOG_LIMIT = 30; + public BashCoturnCredentialsService(OpenviduConfig openviduConfig) { super(openviduConfig); try { @@ -26,6 +31,12 @@ public class BashCoturnCredentialsService extends CoturnCredentialsService { } else { log.info("COTURN Redis DB accessible with string " + this.coturnDatabaseString); log.info("Cleaning COTURN DB..."); + if (response.contains("log file opened")) { + String[] logArray = response.split("\\r?\\n")[0].split("\\s+"); + String logFile = logArray[logArray.length - 1]; + this.logPath = logFile.substring(0, logFile.lastIndexOf('/') + 1); + log.info("Path of COTURN log files: " + this.logPath); + } response = CommandExecutor.execCommand("/bin/sh", "-c", "redis-cli -n " + this.openviduConfig.getCoturnDatabaseDbname() + " flushdb"); String response2 = CommandExecutor.execCommand("/bin/sh", "-c", @@ -53,6 +64,7 @@ public class BashCoturnCredentialsService extends CoturnCredentialsService { String response = CommandExecutor.execCommand("/bin/sh", "-c", command); if (response.contains("connection success: " + this.trimmedCoturnDatabaseString)) { credentials = new TurnCredentials(user, pass); + this.cleanTurnLogFiles(); log.info("COTURN user created: true"); } else { log.info("COTURN user created: false"); @@ -72,6 +84,7 @@ public class BashCoturnCredentialsService extends CoturnCredentialsService { String response = ""; try { response = CommandExecutor.execCommand("/bin/sh", "-c", command); + this.cleanTurnLogFiles(); } catch (IOException | InterruptedException e) { e.printStackTrace(); } @@ -80,4 +93,12 @@ public class BashCoturnCredentialsService extends CoturnCredentialsService { return userRemoved; } + private void cleanTurnLogFiles() throws IOException, InterruptedException { + if (this.logCounter.incrementAndGet() > LOG_LIMIT) { + CommandExecutor.execCommand("/bin/sh", "-c", "rm " + this.logPath + "turn_*.log"); + log.info("Garbage collector cleaning turn log files at path " + this.logPath); + this.logCounter.set(0); + } + } + }