[R] Warning message about closing a connection XXXX

Martin Morgan mtmorgan at fhcrc.org
Wed Jan 4 22:08:32 CET 2012


On 01/04/2012 09:25 AM, Prof Brian Ripley wrote:
> On 04/01/2012 17:12, William Dunlap wrote:
>> Re
>> > How can I avoid the warning message altogether?
>>
>> ?closeAllConnections
>>
>> I think of calls to closeAllConnections() in the same
>> way that I think of calls to rm(list=objects()):
>> they both can remove things that are not theirs to remove.
>>
>> Calling gc() will close all unused connections, so
>> no damage can be done. (I thought that the warning
>> about closing unused text connections was dropped in
>> a recent release of R so neither is really needed.)
>
> Yes, it was. The warning is there because the user may need to do
> something about the 'other end' of the now-closed connection, which R
> manages for textConnections.
>
> There is however one circumstance where gc() does not close all unused
> connections, and that is when gzcon() is used (because that involves two
> connections and it is not clear when the inner one is 'in use': and we
> used to guess wrong).
>
> Rather than using a sledgehammer, use showConnections(all=TRUE) to see
> all connections, and close the ones you want to (and its help page shows
> you how).

Since connections are using R's finalizers, and order of evaluation of 
finalizers are not reliable, it is not always possible to get in front 
of the automatic close, e.g., when a reference class relies on a 
finalize method to tidy up after itself (perhaps this was also the case 
with gzcon?).

setOldClass(c("file", "connection"))

setRefClass("A", fields=list(x="file"),
             methods=list(initialize=function(fname, ...) {
                 callSuper(x=file(fname, "r"))
             }, finalize=function() {
                 ## This sometimes provokes an error
                 close(.self$x)
             }))

getRefClass("A")$new("/tmp")

A desirable feature would allow the message or automatic close to be 
silenced, or the potentially closed connection to be queried for its 
validity.

Martin

>
>> Bill Dunlap
>> Spotfire, TIBCO Software
>> wdunlap tibco.com
>>
>>> -----Original Message-----
>>> From: r-help-bounces at r-project.org
>>> [mailto:r-help-bounces at r-project.org] On Behalf Of David Winsemius
>>> Sent: Wednesday, January 04, 2012 7:10 AM
>>> To: Dan Abner
>>> Cc: r-help at r-project.org
>>> Subject: Re: [R] Warning message about closing a connection XXXX
>>>
>>>
>>> On Jan 4, 2012, at 9:53 AM, Dan Abner wrote:
>>>
>>>> Hello everyone,
>>>>
>>>> After running the following code, I obtain this error message.
>>>>
>>>>
>>>>> mydata<- read.table(textConnection(mystring),
>>>> + header=TRUE, sep=",",
>>>> + row.names="id", na.strings=" ")
>>>>> mydata
>>>> Warning message:
>>>> closing unused connection 3 (mystring)
>>>>
>>>> =====
>>>>
>>>> However, when I attempt to run read.table() again and immediately
>>>> submit
>>>> the close() function (below), I obtain this message:
>>>>
>>>>> close(mystring)
>>>> Error in UseMethod("close") :
>>>> no applicable method for 'close' applied to an object of class
>>>> "character"
>>>> =====
>>>>
>>>> How can I avoid the warning message altogether?
>>>
>>> ?closeAllConnections
>>>
>>> The error message occurs because "mystring was never the connection
>>> name.
>>>
>>> --
>>>
>>> David Winsemius, MD
>>> West Hartford, CT
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
>


-- 
Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109

Location: M1-B861
Telephone: 206 667-2793



More information about the R-help mailing list