From 5083c1ae36d46c569aef00ad78e3687a82c74307 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 12 Sep 2012 07:00:03 +0000 Subject: [PATCH] BIS-183 shuffling a data set which doesn't exist in the store will be logged but doesn't stops shuffling the next data set. SVN: 26603 --- .../etlserver/plugins/SimpleShuffling.java | 2 +- .../postregistration/EagerShufflingTask.java | 45 +++++++++++-------- .../shared/utils/SegmentedStoreUtils.java | 6 +++ 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/SimpleShuffling.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/SimpleShuffling.java index 0a9ae19b938..95f69b42dcc 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/SimpleShuffling.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/plugins/SimpleShuffling.java @@ -142,7 +142,7 @@ public class SimpleShuffling implements ISegmentedStoreShuffling taskExecutor.execute(shufflingTask, "shuffling", dataSet.getDataSetCode(), false); } catch (Throwable ex) { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); + // ignore because it has already been logged. Try the next data set. } } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTask.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTask.java index 64178116cd3..d7733489f58 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTask.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/postregistration/EagerShufflingTask.java @@ -232,26 +232,33 @@ public class EagerShufflingTask extends AbstractPostRegistrationTask { if (shareWithMostFreeOrNull != null) { - long freeSpaceBefore = shareWithMostFreeOrNull.calculateFreeSpace(); - File share = new File(storeRoot, shareIdManager.getShareId(dataSetCode)); - dataSetMover.moveDataSetToAnotherShare( - new File(share, dataSet.getDataSetLocation()), - shareWithMostFreeOrNull.getShare(), getChecksumProvider(), logger); - - String shareId = shareWithMostFreeOrNull.getShareId(); - logger.log(LogLevel.INFO, "Data set " + dataSetCode - + " successfully moved from share " + dataSet.getDataSetShareId() + " to " - + shareId + "."); - long freeSpaceAfter = shareWithMostFreeOrNull.calculateFreeSpace(); - if (freeSpaceBefore > freeSpaceLimitTriggeringNotification - && freeSpaceAfter < freeSpaceLimitTriggeringNotification) + try { - notifyer.log( - LogLevel.WARN, - "After moving data set " + dataSetCode + " to share " + shareId - + " that share has only " - + FileUtilities.byteCountToDisplaySize(freeSpaceAfter) - + " free space. It might be necessary to add a new share."); + long freeSpaceBefore = shareWithMostFreeOrNull.calculateFreeSpace(); + File share = new File(storeRoot, shareIdManager.getShareId(dataSetCode)); + dataSetMover.moveDataSetToAnotherShare( + new File(share, dataSet.getDataSetLocation()), + shareWithMostFreeOrNull.getShare(), getChecksumProvider(), logger); + + String shareId = shareWithMostFreeOrNull.getShareId(); + logger.log(LogLevel.INFO, "Data set " + dataSetCode + + " successfully moved from share " + dataSet.getDataSetShareId() + + " to " + shareId + "."); + long freeSpaceAfter = shareWithMostFreeOrNull.calculateFreeSpace(); + if (freeSpaceBefore > freeSpaceLimitTriggeringNotification + && freeSpaceAfter < freeSpaceLimitTriggeringNotification) + { + notifyer.log( + LogLevel.WARN, + "After moving data set " + dataSetCode + " to share " + shareId + + " that share has only " + + FileUtilities.byteCountToDisplaySize(freeSpaceAfter) + + " free space. It might be necessary to add a new share."); + } + } catch (Throwable t) + { + logger.log(LogLevel.ERROR, "Couldn't move data set " + dataSetCode + + " to share " + shareWithMostFreeOrNull.getShareId() + ".", t); } } } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java index 76b810729c6..4039dd3ebc2 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/SegmentedStoreUtils.java @@ -250,6 +250,12 @@ public class SegmentedStoreUtils IEncapsulatedOpenBISService service, final IShareIdManager shareIdManager, IChecksumProvider checksumProvider, final ISimpleLogger logger) { + if (FileOperations.getMonitoredInstanceForCurrentThread().exists(dataSetDirInStore) == false) + { + logger.log(LogLevel.ERROR, "Data set '" + dataSetDirInStore + + "' no longer exist in the data store."); + return; + } final String dataSetCode = dataSetDirInStore.getName(); ExternalData dataSet = service.tryGetDataSet(dataSetCode); if (dataSet == null) -- GitLab