[
https://issues.apache.org/jira/browse/ARROW-16421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17581423#comment-17581423
]
Weston Pace commented on ARROW-16421:
-------------------------------------
My belief is that, on Windows, closing a file handle does not guarantee that
file can immediately be deleted. For example, consider this page:
https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/irp-mj-cleanup
{quote}It is important to note that when all handles to a file object have been
closed, this does not necessarily mean that the file object is no longer being
used. System components, such as the Cache Manager and the Memory Manager,
might hold outstanding references to the file object. These components can
still read to or write from a file, even after an IRP_MJ_CLEANUP request is
received.{quote}
> [R] Permission error on Windows when deleting file previously accessed with
> open_dataset
> ----------------------------------------------------------------------------------------
>
> Key: ARROW-16421
> URL: https://issues.apache.org/jira/browse/ARROW-16421
> Project: Apache Arrow
> Issue Type: Improvement
> Components: R
> Affects Versions: 7.0.0
> Reporter: Will Jones
> Assignee: Will Jones
> Priority: Major
>
> On Windows this fails:
> {code:R}
> library(arrow)
> write_dataset(iris, "test_dataset")
> # Original example was with DuckDB, but that's not necessarily the issue
> # con <- open_dataset("test_dataset") |> to_duckdb()
> con <- open_dataset("test_dataset")$NewScan()$Finish()$ToRecordBatchReader()
> file.remove("test_dataset/part-0.parquet")
> #> Warning in file.remove("test_dataset/part-0.parquet"): cannot remove file
> #> 'test_dataset/part-0.parquet', reason 'Permission denied'
> #> [1] FALSE
> {code}
> But on MacOS it does not:
> {code:r}
> library(arrow)
> write_dataset(iris, "test_dataset")
> # Original example was with DuckDB, but that's not necessarily the issue
> # con <- open_dataset("test_dataset") |> to_duckdb()
> con <- open_dataset("test_dataset")$NewScan()$Finish()$ToRecordBatchReader()
> file.remove("test_dataset/part-0.parquet")
> #> [1] TRUE
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)