[ 
https://issues.apache.org/jira/browse/LUCY-254?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Wellnhofer updated LUCY-254:
---------------------------------

    Description: 
On Windows, a file won't be deleted until every open handle on it is closed. So 
if a file is deleted and immediately recreated with the same filename, the 
creation fails if another process (typically a virus scanner) still has an open 
handle on it. The solution is to create temporary files with unique names. I 
propose to add the following function to {{OperatingSystem.c}} and use it for 
every temp file:

{noformat}
char*
chaz_OS_temp_filename(const char *prefix, const char *ext);
{noformat}

It should simply add a number to the filename which is incremented on every 
call to that function.

(Currently, the effect is that Charmonizer occasionally fails in 
{{chaz_Util_remove_and_verify}}. This kind of verification isn't reliable on 
Windows.)

  was:
On Windows, a file won't be deleted until every open handle on it is closed. So 
if a file is deleted and immediately recreated with the same filename, the 
creation fails if another process (typically a virus scanner) still has an open 
handle on it. The solution is to create temporary files with unique names. I 
propose to add the following function to {{OperatingSystem.c}}:

{noformat}
char*
chaz_OS_temp_filename(const char *prefix, const char *ext);
{noformat}

It should simply add a number to the filename which is incremented on every 
call to that function.

    
> Creation of Charmonizer temp files sometimes fails on Windows
> -------------------------------------------------------------
>
>                 Key: LUCY-254
>                 URL: https://issues.apache.org/jira/browse/LUCY-254
>             Project: Lucy
>          Issue Type: Bug
>          Components: Charmonizer
>            Reporter: Nick Wellnhofer
>
> On Windows, a file won't be deleted until every open handle on it is closed. 
> So if a file is deleted and immediately recreated with the same filename, the 
> creation fails if another process (typically a virus scanner) still has an 
> open handle on it. The solution is to create temporary files with unique 
> names. I propose to add the following function to {{OperatingSystem.c}} and 
> use it for every temp file:
> {noformat}
> char*
> chaz_OS_temp_filename(const char *prefix, const char *ext);
> {noformat}
> It should simply add a number to the filename which is incremented on every 
> call to that function.
> (Currently, the effect is that Charmonizer occasionally fails in 
> {{chaz_Util_remove_and_verify}}. This kind of verification isn't reliable on 
> Windows.)

--
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

Reply via email to