tenemos un archivador NAS de NetApp que de vez en cuando parece fallar, no estoy seguro de si esto depende de problemas de red, cargas pesadas o el propio Filer; el problema es que el comando usual System.IO.File.Copy(...)
falla algunas veces inesperadamente mientras funcionó un minuto antes y vuelve a funcionar un minuto después ... Filer está trabajando con el sistema de archivos CIFS.Copiar archivos de forma segura en NAS Filer
en mis archivos de registro Log4net veo la excepción:
System.IO.IOException: El nombre de red especificado ya no está disponible . en System.IO .__ Error.WinIOError (Int32 errorCode, Cadena maybeFullPath) ...
equipo de red está seguro de lo que sucede y por qué, ahora he pensando si puedo implementar un sistema simple intento/reintento para copiar el archivo y vuelva a intentar la copia en caso de falla, es posible que System.IO.File.Copy no se haya diseñado para el almacenamiento CIFS, sino para unidades NTFS normales o almacenamiento de red estable.
¿Hay patrones comunes o clases .NET adecuadas para hacer esto copiar y reintentar o debería simplemente usar un enfoque como en el siguiente pseudo-código?
while(!copied && count <5)
{
count++;
try
{
//here copy the file
...
//if no exception copy was ok
copied = true;
}
catch
{
if(count >= 5)
{
// Log that retry limit has been reached...
}
else
{
// make thread to wait for some time,
// waiting time can be in function of count or fixed...
}
}
}
'System.IO.File.Copy()' se reduce a la función Win32 ['CopyFile'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363851.aspx) . Entonces codifico algo que usa eso repetidamente y veo si falla también. Creo que estás tratando de poner una banda de software en un problema mayor. –
Configura un 'ping -t nombre de host' y lo registra en un archivo. Déjalo funcionar durante unas horas y luego busque los tiempos de espera. Eso debería decirle si el problema está relacionado con la red. Todavía podría ser un problema con el dispositivo en sí, pero al menos se puede descartar un problema de .NET. –
Me gusta ese bucle. Posible poner una pequeña espera en la captura. – Paparazzi