File Component - Rename operations fail sometimes on certain filesystems
(Windows)
----------------------------------------------------------------------------------
Key: CAMEL-2058
URL: https://issues.apache.org/activemq/browse/CAMEL-2058
Project: Apache Camel
Issue Type: Bug
Components: camel-core
Affects Versions: 2.0.0
Environment: Sun JDK 1.6_16, Eclipse Gallileo, Spring 2.5, Camel
2.0.0, Windows XP SP2, McAfee VirusScan
Reporter: Michael Mathers
On Windows (don't know if there are other platforms that suffer from this
problem), the file component fails to successfully rename files with the
File.renameTo operation. It fails when the rename is performed immediately
after closing a file. On Windows this usually indicates that some other
process has the file open. This occurs due to things like Virus scanners which
keep the file open for very short periods of time. Given a slight pause the
rename would succeed.
This is a serious problem which effectively makes useless options like
"tempPrefix" in the File Producer and "localWorkDirectory" with the FTP
Consumer. Workarounds like "disable your virus scanner" don't cut it for
everyone (me specifically) as I'm system privilege restricted from doing so,
and even then, there's no guarantee that other windows processes might not do
similar things (file indexers, etc).
The Java spec doesn't define the behavior of the rename operation and
specifically says that this can vary from implementation to implementation /
filesystem to filesystem. Second, rename doesn't say why it fails, it merely
returns false which is very unhelpful.
A couple ways to fix:
1). Provide an option to disable this optimization. ie, a
"alwaysCopyInsteadOfRename" or something (clean, simple, easy).
This would be a simple fix. More or less just a few clauses/tests in
GenericFileProducer around any "is local" checks....
2). Attempt a copy instead if the rename fails
- maybe after a brief pause
- maybe even after a number of rename attempts
- maybe watch to see the file is closed prior to a rename attempt.
Rename operation failures may affect other things as well like certain locking
schemes.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4167147
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.