Repository: openmeetings Updated Branches: refs/heads/master e5518cdc9 -> 41fd6f541
[OPENMEETINGS-1714] more issues are fixed Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/41fd6f54 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/41fd6f54 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/41fd6f54 Branch: refs/heads/master Commit: 41fd6f5416aef890e6bc5f81610570ba4f976127 Parents: e5518cd Author: Maxim Solodovnik <[email protected]> Authored: Wed Oct 11 23:39:09 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Wed Oct 11 23:39:09 2017 +0700 ---------------------------------------------------------------------- .../service/quartz/scheduler/CleanupJob.java | 77 ++++++++++---------- .../openmeetings/service/quartz/TestJob.java | 45 ++++++++++++ 2 files changed, 84 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/41fd6f54/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java ---------------------------------------------------------------------- diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java index d6d6cfa..aa76db1 100644 --- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java +++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java @@ -73,25 +73,26 @@ public class CleanupJob extends AbstractJob { public void cleanTestSetup() { log.debug("CleanupJob.cleanTestSetup"); + final long now = System.currentTimeMillis(); if (!isInitComplete()) { return; } try { //TODO need to move all these staff to helper - File[] folders = getStreamsDir().listFiles(); - if (folders != null) { - for (File folder : folders) { - if (folder.isDirectory()) { - File[] files = folder.listFiles(fi -> fi.getName().startsWith(TEST_SETUP_PREFIX)); - if (files != null) { - for (File file : files) { - if (file.isFile() && file.lastModified() + testSetupTimeout < System.currentTimeMillis()) { - log.debug("expired TEST SETUP found: " + file.getCanonicalPath()); - file.delete(); - } - } - } - } + File[] folders = getStreamsDir().listFiles(fi -> fi.isDirectory()); + if (folders == null) { + return; + } + for (File folder : folders) { + File[] files = folder.listFiles( + fi -> fi.getName().startsWith(TEST_SETUP_PREFIX) && fi.isFile() && fi.lastModified() + testSetupTimeout < now + ); + if (files == null) { + continue; + } + for (File file : files) { + log.debug("expired TEST SETUP found: " + file.getCanonicalPath()); + file.delete(); } } } catch (Exception e) { @@ -101,37 +102,37 @@ public class CleanupJob extends AbstractJob { public void cleanRoomFiles() { log.debug("CleanupJob.cleanRoomFiles"); + final long now = System.currentTimeMillis(); if (!isInitComplete()) { return; } try { //TODO need to move all these staff to helper - File[] folders = getStreamsDir().listFiles(); - if (folders != null) { - for (File folder : folders) { - Long roomId = null; - if (NumberUtils.isCreatable(folder.getName())) { - roomId = Long.valueOf(folder.getName()); - Whiteboards wbList = WhiteboardCache.get(roomId); - for (Map.Entry<Long, Whiteboard> e : wbList.getWhiteboards().entrySet()) { - if (!e.getValue().isEmpty()) { - roomId = null; - break; - } + File[] folders = getStreamsDir().listFiles(fi -> fi.isDirectory()); + if (folders == null) { + return; + } + for (File folder : folders) { + Long roomId = null; + if (NumberUtils.isCreatable(folder.getName())) { + roomId = Long.valueOf(folder.getName()); + Whiteboards wbList = WhiteboardCache.get(roomId); + for (Map.Entry<Long, Whiteboard> e : wbList.getWhiteboards().entrySet()) { + if (!e.getValue().isEmpty()) { + roomId = null; + break; } } - if (folder.isDirectory() && roomId != null && sessionManager.listByRoom(roomId).isEmpty()) { - File[] files = folder.listFiles(); - //TODO need to rework this and remove hardcodings - if (files != null) { - for (File file : files) { - if (file.isFile() && file.lastModified() + roomFilesTtl < System.currentTimeMillis()) { - log.debug("Room files are too old and no users in the room: " + roomId); - FileUtils.deleteDirectory(folder); - break; - } - } - } + } + if (roomId != null && sessionManager.listByRoom(roomId).isEmpty()) { + File[] files = folder.listFiles(fi -> fi.isFile() && fi.lastModified() + roomFilesTtl < now); + //TODO need to rework this and remove hardcodings + if (files == null || files.length == 0) { + continue; + } else { + log.debug("Room files are too old and no users in the room: " + roomId); + FileUtils.deleteDirectory(folder); + break; } } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/41fd6f54/openmeetings-web/src/test/java/org/apache/openmeetings/service/quartz/TestJob.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/service/quartz/TestJob.java b/openmeetings-web/src/test/java/org/apache/openmeetings/service/quartz/TestJob.java new file mode 100644 index 0000000..a4832dc --- /dev/null +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/service/quartz/TestJob.java @@ -0,0 +1,45 @@ +/* + * 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.service.quartz; + +import static org.apache.openmeetings.util.OpenmeetingsVariables.setInitComplete; + +import org.apache.openmeetings.AbstractWicketTester; +import org.apache.openmeetings.service.quartz.scheduler.CleanupJob; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +public class TestJob extends AbstractWicketTester { + @Autowired + private CleanupJob cleanJob; + + @Test + public void testNotInited() { + try { + setInitComplete(false); + cleanJob.cleanExpiredRecordings(); + cleanJob.cleanExpiredResetHash(); + cleanJob.cleanRoomFiles(); + cleanJob.cleanSessions(); + cleanJob.cleanTestSetup(); + } finally { + setInitComplete(true); + } + } +}
