[
https://issues.apache.org/jira/browse/VFS-487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sam Haldane updated VFS-487:
----------------------------
Description:
To reproduce:
* create a file monitor and add a directory with at least one child file
* set delay to 5 seconds
* delete a child file, wait for monitor to detect deletion
* re-create the child file within 5 seconds
* creation event is not detected
This is mainly due to this block being at the start of the main loop instead of
the end:
{code:java}
while (!this.deleteStack.empty())
{
this.removeFile(this.deleteStack.pop());
}
{code}
When this is executed, the file has already been re-created. {{removeFile}}
calls {{FileMonitorAgent#resetChildrenList}} which updates the children list
for that agent (which will contain the newly created file), but doesn't update
the monitor map. The subsequent call to {{FileMonitorAgent#check}} in the main
loop then doesn't detect the new file.
Moving the above block to the end of the main loop would prevent most
occurrences of this issue, but the implementation is still racy.
was:
To reproduce:
* create a file monitor and add a directory with at least one child file
* set delay to 5 seconds
* delete a child file, wait for monitor to detect deletion
* re-create the child file within 5 seconds
* creation event is not detected
This is mainly due to this block being at the start of the main loop:
{code:java}
while (!this.deleteStack.empty())
{
this.removeFile(this.deleteStack.pop());
}
{code}
When this is executed, the file has already been re-created. {{removeFile}}
calls {{FileMonitorAgent#resetChildrenList}} which updates the children list
for that agent (which will contain the newly created file), but doesn't update
the monitor map. The subsequent call to {{FileMonitorAgent#check}} in the main
loop then doesn't detect the new file.
> File creation events missed when deleted then re-created within poll delay
> --------------------------------------------------------------------------
>
> Key: VFS-487
> URL: https://issues.apache.org/jira/browse/VFS-487
> Project: Commons VFS
> Issue Type: Bug
> Affects Versions: 2.0
> Reporter: Sam Haldane
>
> To reproduce:
> * create a file monitor and add a directory with at least one child file
> * set delay to 5 seconds
> * delete a child file, wait for monitor to detect deletion
> * re-create the child file within 5 seconds
> * creation event is not detected
> This is mainly due to this block being at the start of the main loop instead
> of the end:
> {code:java}
> while (!this.deleteStack.empty())
> {
> this.removeFile(this.deleteStack.pop());
> }
> {code}
> When this is executed, the file has already been re-created. {{removeFile}}
> calls {{FileMonitorAgent#resetChildrenList}} which updates the children list
> for that agent (which will contain the newly created file), but doesn't
> update the monitor map. The subsequent call to {{FileMonitorAgent#check}} in
> the main loop then doesn't detect the new file.
> Moving the above block to the end of the main loop would prevent most
> occurrences of this issue, but the implementation is still racy.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira