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 0a9ae19b938b867fdcef194c53a2c8218b8b5160..95f69b42dcccf24e286be78e640fa827eb30dd7d 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 64178116cd358bcfa57c52a4941278417b7e2ff5..d7733489f582f373071dc72c37c0f4cc3193b8c5 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 76b810729c6c478141a9778140999d54a5166ac7..4039dd3ebc2da78fef1e1f15186437a036970dc7 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)