Skip to content
Snippets Groups Projects
Commit 3f030671 authored by brinn's avatar brinn
Browse files

Make HardLinkMaker and FastHardLinkMaker fall back to regular copies if...

Make HardLinkMaker and FastHardLinkMaker fall back to regular copies if creating a hardlink is not supported.

SVN: 24112
parent 475f404f
No related branches found
No related tags found
No related merge requests found
...@@ -22,6 +22,7 @@ import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked; ...@@ -22,6 +22,7 @@ import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
import ch.systemsx.cisd.base.unix.Unix; import ch.systemsx.cisd.base.unix.Unix;
import ch.systemsx.cisd.common.TimingParameters; import ch.systemsx.cisd.common.TimingParameters;
import ch.systemsx.cisd.common.concurrent.MonitoringProxy; import ch.systemsx.cisd.common.concurrent.MonitoringProxy;
import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
import ch.systemsx.cisd.common.exceptions.Status; import ch.systemsx.cisd.common.exceptions.Status;
/** /**
...@@ -66,7 +67,19 @@ public class FastHardLinkMaker implements IFileImmutableCopier ...@@ -66,7 +67,19 @@ public class FastHardLinkMaker implements IFileImmutableCopier
return Status.OK; return Status.OK;
} catch (IOExceptionUnchecked ex) } catch (IOExceptionUnchecked ex)
{ {
return Status.createError(ex.getCause().getMessage()); final String errorMsg = ex.getCause().getMessage();
if (errorMsg.endsWith("Operation not supported"))
{
try
{
FileUtilities.copyFileTo(source, destination, true);
return Status.OK;
} catch (EnvironmentFailureException ex2)
{
return Status.createError(ex2.getMessage());
}
}
return Status.createError(errorMsg);
} }
} }
}; };
......
...@@ -28,6 +28,7 @@ import org.apache.log4j.Logger; ...@@ -28,6 +28,7 @@ import org.apache.log4j.Logger;
import ch.systemsx.cisd.base.exceptions.InterruptedExceptionUnchecked; import ch.systemsx.cisd.base.exceptions.InterruptedExceptionUnchecked;
import ch.systemsx.cisd.base.utilities.OSUtilities; import ch.systemsx.cisd.base.utilities.OSUtilities;
import ch.systemsx.cisd.common.TimingParameters; import ch.systemsx.cisd.common.TimingParameters;
import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
import ch.systemsx.cisd.common.exceptions.Status; import ch.systemsx.cisd.common.exceptions.Status;
import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogCategory;
import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.common.logging.LogFactory;
...@@ -179,6 +180,21 @@ public class HardLinkMaker implements IFileImmutableCopier ...@@ -179,6 +180,21 @@ public class HardLinkMaker implements IFileImmutableCopier
final Status ok = final Status ok =
runRepeatableProcess(processTask, timingParameters.getMaxRetriesOnFailure(), runRepeatableProcess(processTask, timingParameters.getMaxRetriesOnFailure(),
timingParameters.getIntervalToWaitAfterFailureMillis()); timingParameters.getIntervalToWaitAfterFailureMillis());
if (ok.isError())
{
final String errorMsg = ok.tryGetErrorMessage();
if (errorMsg != null && errorMsg.endsWith("Operation not supported"))
{
try
{
FileUtilities.copyFileTo(source, destFile, true);
return Status.OK;
} catch (EnvironmentFailureException ex)
{
return Status.createError(ex.getMessage());
}
}
}
return ok; return ok;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment