Re: [Rd] warning upon automatic close of connection

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Fri, 21 Sep 2007 08:22:55 -0400

I would like to follow up on the annoying warnings which are generated when connections are automatically closed. This is affecting several of my packages and is quite a nuisance.

R does not give you a message every time it garbage collects, at least by default. Perhaps there could be a higher level of warnings that issue information on garbage collection, closed connections, etc. or perhaps the user could have control over it but having it as the default is really a nuisance
and I hope this warning can be removed.

On 9/12/07, Seth Falcon <sfalcon_at_fhcrc.org> wrote:

> "Gabor Grothendieck" <ggrothendieck_at_gmail.com> writes:

> > I noticed that under R 2.6.0 there is a warning about closing the connection
> > in the code from this post:
> > https://stat.ethz.ch/pipermail/r-help/2007-September/140601.html
> >
> > which is evidently related to the following from the NEWS file:
> >
> > o Connections will be closed if there is no R object referring to
> > them. A warning is issued if this is done, either at garbage
> > collection or if all the connection slots are in use.
> >
> > If we use read.table directly it still happens:
> >
> > # use Lines and Lines2 from cited post
> > library(zoo)
> > DF1 <- read.table(textConnection(Lines), header = TRUE)
> > DF2 <- read.table(textConnection(Lines2), header = TRUE)
> > z1 <- zoo(as.matrix(DF1[-1]), as.Date(DF1[,1], "%d/%m/%Y"))
> > z2 <- zoo(as.matrix(DF2[-1]), as.Date(DF2[,1], "%d/%m/%Y"))
> > both <- merge(z1, z2)
> > plot(na.approx(both))
> >
> >> R.version.string # Vista
> > [1] "R version 2.6.0 alpha (2007-09-06 r42791)"
> >
> > Is this annoying warning really necessary? I assume we can get rid of
> > it by explicitly naming and closing the connections but surely there should
> > be a way to avoid the warning without going to those lengths.
>
> Up until the change you mention above it really was necessary to name
> and close all connections.  Short scripts run in fresh R sessions may
> not have had problems with code like you have written above, but
> longer programs or shorter ones run in a long running R session would
> run out of connections.
>
> Now that connections have weak reference semantics, one can ask
> whether this behavior should be "standard" and no warning issued.
>

> > I would have thought that read.table opens the connection then it would
> > close it itself so no warning would need to be generated.
>
> In your example, read.table is _not_ opening the connection.  You are
> passing an open connection which has no symbol bound to it:
>
>   foo = ""
>   c = textConnection(foo)
>   c
>     description            class             mode             text
>           "foo" "textConnection"              "r"           "text"
>          opened         can read        can write
>        "opened"            "yes"             "no"
>
> But I think passing a closed connection would cause the same sort of
> issue.  It seems that there are two notions of "closing a connection":
> (i) close as the opposite of open, and (ii) clean up the entire
> connection object.  I haven't looked closely at the code here, so I
> could be wrong, but I'm basing this guess on the following:
>

> > file("foo")
> description class mode text opened can read > "foo" "file" "r" "text" "closed" "yes" > can write > "yes" > ## start new R session > for (i in 1:75) file("foo") > gc() > warnings()[1:3]
> > gc()
> used (Mb) gc trigger (Mb) max used (Mb) > Ncells 149603 4.0 350000 9.4 350000 9.4 > Vcells 101924 0.8 786432 6.0 486908 3.8 > There were 50 or more warnings (use warnings() to see the first 50)

> > warnings()[1:3]
> $`closing unused connection 76 (foo)`
> NULL
>
> $`closing unused connection 75 (foo)`
> NULL
>
> $`closing unused connection 74 (foo)`
> NULL
>
>
> --
> Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research Center
> BioC: http://bioconductor.org/
> Blog: http://userprimary.net/user/
>

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Fri 21 Sep 2007 - 12:56:41 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 21 Sep 2007 - 14:41:09 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.