Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cannot delete file after read with vroom #280

Closed
martindut opened this issue Nov 26, 2020 · 3 comments
Closed

cannot delete file after read with vroom #280

martindut opened this issue Nov 26, 2020 · 3 comments

Comments

@martindut
Copy link

Hi. I know this issue was raised previously, but I still cannot delete a file after I have read it with vroom.
I just installed the latest dev version. I'm running on Windows 10, R version 4.0.3 (2020-10-10).
Anything that I'm doing wrong?

@jimhester
Copy link
Collaborator

jimhester commented Jan 7, 2021

The way vroom works is the parsing is done lazily, this means when you initially call vroom() not all the data has been read. vroom holds an open file handle to the file until all data has been read from the file completely. Only after that will the file handle be released and the file unlocked, so you can delete it.

You can check what file handles are open for the current process with

p <- ps::ps_handle()
ps::ps_open_files(p)

You will see that initially after reading a file there is an extra file handle. Once you have read all of the file (through data manipulation, or explicitly by calling vroom:::vroom_materialize() then the handle will be closed. (in this example there is another temporary file created by the reprex package.) But you will see the file handle corresponding to mtcars.csv is closed after the data has been read.

library(vroom)

x <- vroom(vroom_example("mtcars.csv"), col_types = list())

p <- ps::ps_handle()
ps::ps_open_files(p)
#> # A tibble: 3 x 2
#>      fd path                                                                    
#>   <int> <chr>                                                                   
#> 1     0 /dev/null                                                               
#> 2     3 /private/var/folders/9x/_8jnmxwj3rq1t90mlr6_0k1w0000gn/T/RtmpPqLZVh/cal…
#> 3     4 /Users/jhester/Library/R/4.0/library/vroom/extdata/mtcars.csv

vroom:::vroom_materialize(x, FALSE)
#> # A tibble: 32 x 12
#>    model         mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
#>    <chr>       <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#>  1 Mazda RX4    21       6  160    110  3.9   2.62  16.5     0     1     4     4
#>  2 Mazda RX4 …  21       6  160    110  3.9   2.88  17.0     0     1     4     4
#>  3 Datsun 710   22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
#>  4 Hornet 4 D…  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
#>  5 Hornet Spo…  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
#>  6 Valiant      18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
#>  7 Duster 360   14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
#>  8 Merc 240D    24.4     4  147.    62  3.69  3.19  20       1     0     4     2
#>  9 Merc 230     22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
#> 10 Merc 280     19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
#> # … with 22 more rows

ps::ps_open_files(p)
#> # A tibble: 2 x 2
#>      fd path                                                                    
#>   <int> <chr>                                                                   
#> 1     0 /dev/null                                                               
#> 2     3 /private/var/folders/9x/_8jnmxwj3rq1t90mlr6_0k1w0000gn/T/RtmpPqLZVh/cal…

Created on 2021-01-07 by the reprex package (v0.3.0)

@jimhester
Copy link
Collaborator

I am pretty sure this is the expected behavior, however if the above doesn't seem to address your issue please comment here and we can re-open this.

@martindut
Copy link
Author

Thanks @jimhester, I will be able to work with this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants