Re: Regression/Error on commons-io FileUtils.copyFile ?

Luis Panadero Guardeño <[email protected]>
Newsgroups gmane.comp.jakarta.commons.user
Organization Digibís
Message-ID <[email protected]>
I try to debug it to see what is the problem.

Yes, looks that the timestamp isn't changed. destAttrView.setTimes(...) 
throws an java.nio.file.FileSystemException: 
/mnt/.../ficheros/00000001.tif: Operación no permitida (Not allowed 
operation). Then targetFile.setLastModified(...) returns false.

The mount folder has this options (taken frommount | grep MY_FOLDER) :

cifs (rw,relatime,vers=3.0,cache=strict,username=XXXXX,domain=XXXXX,uid=1000,noforceuid,gid=1000,noforcegid,addr=XXXXXXX,file_mode=0777,dir_mode=0777,iocharset=utf8,soft,nounix,mapposix,rsize=4194304,wsize=4194304,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)

Note that this happens on different versions of Ubuntu server (22.04LTS 
and 18.04LTS)

El 30/11/23 a las 12:32, Gary Gregory escribió:
> Hello Luis,
>
> Thank you for your detailed report.
>
> An interesting question is to check to see if the file attributes are 
> correctly updated using 2.11 or if the file timestamp is not changed 
> and that fact is not reported as an exception.
>
> For a new feature, free to create a PR on GitHub so we can see what 
> this would really look like.
>
> TY,
> Gary
>
> On Tue, Nov 28, 2023, 2:29 PM Luis Panadero Guardeño 
> <[email protected]> wrote:
>
>     Good afternoon,
>
>     I recently noticed a issue when we update our projects from
>     Commons-io 2.11.0 to 2.13.0 with FileUtils.copyFile
>
>     In our code base, we was using FileUtils.copyFile(src, dst) , that
>     as is said on the JavaDoc, must preserve the file's last modified
>     date/times. Sometimes, we do this over a SMB/CIFs share folder,
>     and we never had problems or errors with this.
>
>     But, since we update to 2.13.0 , we got IOExceptions because
>     copyFile fails to preserve the file's last modified date/times. I
>     see that the implementation changed a bit. on 2.11.0 copyFile uses
>     directly File.setLastModified(long) and now tries with
>     BasicFileAttributeView.setTimes(FileTime, FileTime, FileTime) and
>     if fails, tries with File.setLastModified(long) . So, it should
>     keep working exactly like before. But, obviously, for our use
>     case, isn't. We workaround , calling copyFile with
>     preserveFileDate set to false.
>
>     Also, I noticed an problem with the actual API of
>     FileUtils.copyFile methods. I think that an improvement should be
>     that when copyFile fails to set file's last modified date/times,
>     should throw a different exception from IOException (extend an
>     exception from it). Actually it's imposible to differentiated from
>     another bigger IO problems. In out case, we would like to try to
>     preserve the file's last modified date/times, but ignore the error
>     if it fails to do that. And I can't see any way of doing it.
>     Specially with the current implementation of FileUtils.copyFile .
>
>     -- 
>
>     /Luis Panadero Guardeño/
>     Departamento de Informática
>     [email protected]
>
>     DIGIBÍS S.L.
>     DIGIBÍS S.L.U.
>
>     C/ Alenza, 4, 5ª planta.
>     28003 Madrid
>     Tf. 91 432 08 88 . Fax 91 432 11 13
>
>     http://www.digibis.com
>
>     Certificado ISO 9001.
>     No imprimir si no es necesario. Protejamos el Medio Ambiente
>
>     En cumplimiento de la LOPD y la LSSI, le informamos de que sus
>     datos personales son incorporados a un fichero, titularidad de
>     DIGIBÍS, S.L.U., con el fin de ofrecerle información sobre
>     servicios que pueden ser de su interés. Podrá ejercitar sus
>     derechos ARCO (de acceso, rectificación, cancelación y oposición)
>     mediante un escrito dirigido a [email protected] , con copia del
>     DNI o documento identificativo sustitutorio.
>     En caso de querer darse de baja pinche aquí
>     <mailto:[email protected]?subject=DAR%20DE%20BAJA>.
>
>
-- 

/Luis Panadero Guardeño/
Departamento de Informática
[email protected]

DIGIBÍS S.L.
DIGIBÍS S.L.U.

C/ Alenza, 4, 5ª planta.
28003 Madrid
Tf. 91 432 08 88 . Fax 91 432 11 13

http://www.digibis.com

Certificado ISO 9001.
No imprimir si no es necesario. Protejamos el Medio Ambiente

En cumplimiento de la LOPD y la LSSI, le informamos de que sus datos 
personales son incorporados a un fichero, titularidad de DIGIBÍS, 
S.L.U., con el fin de ofrecerle información sobre servicios que pueden 
ser de su interés. Podrá ejercitar sus derechos ARCO (de acceso, 
rectificación, cancelación y oposición) mediante un escrito dirigido a 
[email protected] , con copia del DNI o documento identificativo 
sustitutorio.
En caso de querer darse de baja pinche aquí 
<mailto:[email protected]?subject=DAR%20DE%20BAJA>.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.