diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/DataSetRegistrationCleanUpTask.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/DataSetRegistrationCleanUpTask.java index 480ce203c80d0067f10474d77fc1f6e4a25de9b0..a71e7e2d41665a7be8a90f71fb74c4ee5cadddbf 100644 --- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/DataSetRegistrationCleanUpTask.java +++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/DataSetRegistrationCleanUpTask.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.LinkOption; import java.nio.file.Path; +import java.nio.file.attribute.FileTime; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collection; @@ -199,17 +200,7 @@ public class DataSetRegistrationCleanUpTask implements IMaintenanceTask { if (knownDataSets.contains(path.getFileName().toString()) == false) { - String postfix = ""; - try - { - postfix = " (last modified: " - + dateFormat.format(new Date(Files.getLastModifiedTime(path).toMillis())) + ")"; - } catch (IOException e) - { - // can not show last modified date - } - FileUtilities.deleteRecursively(path.toFile(), simpleLogger); - operationLog.info("Stale data set folder deleted: " + path.toAbsolutePath() + postfix); + deleteFolder(path, "Stale data set folder"); } } } @@ -221,6 +212,28 @@ public class DataSetRegistrationCleanUpTask implements IMaintenanceTask return; } operationLog.info(emptyFolders.size() + " empty sharding folders found in share " + shareId + ": " + emptyFolders); + for (Path path : emptyFolders) + { + deleteFolder(path, "Empty sharding folder"); + } + } + + private void deleteFolder(Path path, String folderType) + { + String info = createLastModifiedInfo(path); + FileUtilities.deleteRecursively(path.toFile(), simpleLogger); + operationLog.info(folderType + " deleted: " + path.toAbsolutePath() + info); + } + + private String createLastModifiedInfo(Path path) + { + try + { + return " (last modified: " + Files.getLastModifiedTime(path) + ")"; + } catch (IOException e) + { + return ""; + } } private ThreadParameters[] getThreadParameters() diff --git a/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/server/dss/plugins/DataSetRegistrationCleanUpTaskTest.java b/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/server/dss/plugins/DataSetRegistrationCleanUpTaskTest.java index 4ecb23e29c2569434c000ec654c2dc4e8bdaf8ea..241ec3ed0a41ba86fd5e6c1c3769256ecf6aa95a 100644 --- a/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/server/dss/plugins/DataSetRegistrationCleanUpTaskTest.java +++ b/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/server/dss/plugins/DataSetRegistrationCleanUpTaskTest.java @@ -254,13 +254,22 @@ public class DataSetRegistrationCleanUpTaskTest extends AbstractFileSystemTestCa assertEquals("2 old empty data set folders found in share 3: [" + dir5 + ", " + dir7 + "]\n" + "Deleting directory '" + dir5 + "'\n" + "Stale data set folder deleted: " + dir5.getAbsolutePath() - + " (last modified: 1970-01-01 01:00:00)\n" - + "3 empty sharding folders found in share 3: [" + dir1 + ", " + dir4 + ", " + dir3 + "]", + + " (last modified: 1970-01-01T00:00:00Z)\n" + + "3 empty sharding folders found in share 3: [" + dir1 + ", " + dir4 + ", " + dir3 + "]\n" + + "Deleting directory '" + dir1 + "'\n" + + "Empty sharding folder deleted: " + dir1.getAbsolutePath() + + " (last modified: 1970-01-01T00:00:00Z)\n" + + "Deleting directory '" + dir4 + "'\n" + + "Empty sharding folder deleted: " + dir4.getAbsolutePath() + + " (last modified: 1970-01-01T00:00:00Z)\n" + + "Deleting directory '" + dir3 + "'\n" + + "Empty sharding folder deleted: " + dir3.getAbsolutePath() + + " (last modified: 1970-01-01T00:00:00Z)", logRecorder.getLogContent()); -// assertEquals(false, dir1.exists()); -// assertEquals(true, dir2.exists()); -// assertEquals(false, dir3.exists()); -// assertEquals(false, dir4.exists()); + assertEquals(false, dir1.exists()); + assertEquals(true, dir2.exists()); + assertEquals(false, dir3.exists()); + assertEquals(false, dir4.exists()); assertEquals(false, dir5.exists()); assertEquals(true, dir6.exists()); assertEquals(true, dir7.exists());