[ 
https://issues.apache.org/jira/browse/ARROW-16421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17581418#comment-17581418
 ] 

Weston Pace commented on ARROW-16421:
-------------------------------------

{quote}
So in general in C++ we rely on objects going out of scope to ensure files are 
closed (in contrast to explicitly calling Close() on the InputStream) ?
{quote}

Yes.  In C++ there is no "with" or "using" statement like there is in other 
languages so relying on scope is the safe alternative.  Explicitly calling 
close usually leaves open the risk of missing a close on a failure path or 
especially if an exception is thrown.

{quote}
But given the reported issues on Windows, that might not work sufficiently in 
all cases?
{quote}

I'm not convinced this is the case.  I'm pretty sure we are calling close on 
Windows too.  How are we confirming the file is open?

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

Reply via email to