diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTask.java index 0ddf4623772e6d049a50812fcaaccc90e3051a6b..37082eeb2507293cc92074beac71b770201721e2 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTask.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTask.java @@ -158,6 +158,12 @@ public class ExperimentBasedArchivingTask implements IDataStoreLockingMaintenanc public void execute() { long freeSpace = getFreeSpace(); + if (operationLog.isDebugEnabled()) + { + operationLog.debug(String.format( + "Free space: %d MB, minimal free space required: %d MB", freeSpace, + minimumFreeSpace)); + } if (freeSpace >= minimumFreeSpace) { return; @@ -182,27 +188,32 @@ public class ExperimentBasedArchivingTask implements IDataStoreLockingMaintenanc } Collections.sort(infos, new ExperimentDataSetsInfoComparator()); StringBuilder archivingMessages = new StringBuilder(); - if (monitorDataStoreShare()) + try { - for (int i = 0; i < infos.size() && freeSpace < minimumFreeSpace; i++) + if (monitorDataStoreShare()) { - ExperimentDataSetsInfo info = infos.get(i); - freeSpace += info.calculateSize(); - archive(info, archivingMessages); - } - } else - { - for (int i = 0; i < infos.size() && freeSpace < minimumFreeSpace; i++) + for (int i = 0; i < infos.size() && freeSpace < minimumFreeSpace; i++) + { + ExperimentDataSetsInfo info = infos.get(i); + freeSpace += info.calculateSize(); + archive(info, archivingMessages); + } + } else { - if (archive(infos.get(i), archivingMessages)) + for (int i = 0; i < infos.size() && freeSpace < minimumFreeSpace; i++) { - freeSpace = getFreeSpace(); + if (archive(infos.get(i), archivingMessages)) + { + freeSpace = getFreeSpace(); + } } } - } - if (archivingMessages.length() > 0) + } finally { - notificationLog.info("Archiving summary:" + archivingMessages); + if (archivingMessages.length() > 0) + { + notificationLog.info("Archiving summary:" + archivingMessages); + } } } @@ -235,11 +246,11 @@ public class ExperimentBasedArchivingTask implements IDataStoreLockingMaintenanc dataSetCodes.add(dataSet.getCode()); } final String message = - "Starting archiving " + dataSetCodes.size() + " data sets of experiment " + "#" + dataSetCodes.size() + " data sets of experiment " + info.getExperimentIdentifier() + ": " + dataSetCodes; - operationLog.info(message); - archivingMessages.append('\n').append(message); + operationLog.info("Starting archiving " + message); service.archiveDataSets(dataSetCodes, true); + archivingMessages.append('\n').append("Archived " + message); return true; } diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTaskTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTaskTest.java index 0b2736f7f82e48f15de9263e36d04794759856cb..ce2017a5ab51a2aee30aa6052d82b00af37a3002 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTaskTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/plugins/ExperimentBasedArchivingTaskTest.java @@ -404,7 +404,8 @@ public class ExperimentBasedArchivingTaskTest extends AbstractFileSystemTestCase if (archivingEntries.length > 0) { operationLogBuilder.append("\n").append(NOTIFY_LOG_ENTRY_PREFIX); - operationLogBuilder.append("Archiving summary:").append(notifyMessageBuilder); + operationLogBuilder.append("Archiving summary:").append( + notifyMessageBuilder.toString().replaceAll("Starting archiving ", "Archived ")); } assertEquals(operationLogBuilder.toString(), logRecorder.getLogContent()); } @@ -412,8 +413,7 @@ public class ExperimentBasedArchivingTaskTest extends AbstractFileSystemTestCase private String logEntry(Experiment experiment, DataSet... dataSets) { List<String> dataSetCodes = getDataSetCodes(dataSets); - return "Starting archiving " + dataSetCodes.size() - + " data sets of experiment " + return "Starting archiving #" + dataSetCodes.size() + " data sets of experiment " + experiment.getIdentifier() + ": " + dataSetCodes; }