On Thu, 5 Nov 2009, mark.braving...@csiro.au wrote:
Great-- thanks for the info.
For now, hopefully I can get the behaviour I want by sticking a .Call(
'R_lazyLoadDBflush'...) [as per 'detach'] before calling 'lazyLoad'. Seems to
work on my examples, but please let me know if you don't think it'll work
generally-- if not, I could presumably create the files under different names
and then change them.
Is there merit in making 'makeLazyLoadDB' public, just as 'lazyLoad' already
is? It's useful.
The internals of the lazy load mechanism are intended to be private.
This is now emphasized in the lazyLoad help page. This is under
active development, and we need the freedom to be able to change these
internals as needed. They may change without notice, so using them
directly in user code or packages is not a good idea and is strongly
discouraged.
luke
Mark
--
Mark Bravington
CSIRO Mathematical & Information Sciences
Marine Laboratory
Castray Esplanade
Hobart 7001
TAS
ph (+61) 3 6232 5118
fax (+61) 3 6232 5012
mob (+61) 438 315 623
l...@stat.uiowa.edu wrote:
Here is a more stripped down variant generates and error on OS X for
me:
mkEg <- function(tm) list(scrunge = as.POSIXct(tm))
extract <- function(db) {
e<- new.env()
lazyLoad(db, e)
as.list( e)
}
eg <- mkEg("2009-11-04 12:49:53")
eg1 <- mkEg("2009-11-04 12:49:28")
tools:::makeLazyLoadDB( eg, '/tmp/ll')
extract('/tmp/ll') # force; OK
tools:::makeLazyLoadDB( eg1, '/tmp/ll')
extract('/tmp/ll')
Changing the second set of /tmp/ll makes the symptom go away.
I believe this comes down to unintended use of the lazyload mechanism
-- in particular it is not intended that a database be rewritten
after it has been loaded. There is a chaching mechanism for improved
performance on slow file systems, and I believe what is happening is
that the new indices are being used to look in the old chached data.
There might be some merit in having lazyLoad call R_lazyLoadDBflush.
luke
On Tue, 3 Nov 2009, Seth Falcon wrote:
Hi,
On 11/3/09 6:51 PM, mark.braving...@csiro.au wrote:
file.copy( 'd:/temp/Rdiff.Rd', 'd:/temp/scrunge.Rd') # Rdiff.Rd
from 'tools' package source
eglist<- list( scrunge=parse_Rd( 'd:/temp/scrunge.Rd'))
tools:::makeLazyLoadDB( eglist, 'd:/temp/ll')
e<- new.env()
lazyLoad( 'd:/temp/ll', e)
as.list( e) # force; OK
eglist1<- list( scrunge=parse_Rd( 'd:/temp/Rdiff.Rd'))
tools:::makeLazyLoadDB( eglist1, 'd:/temp/ll')
e<- new.env()
lazyLoad( 'd:/temp/ll', e)
as.list( e) # Splat
It doesn't make any difference which file I process first; the error
comes the second time round.
If I adjust this example in terms of paths and run on OS X, I get the
following error on the second run:
as.list(e) # Splat
Error in as.list.environment(e) : internal error -3 in R_decompress1
I haven't looked further yet.
+ seth
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Luke Tierney
Chair, Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: l...@stat.uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel