Dear all, I got an issue trying to parse excel files in parallel using XLConnect, the process hangs forever. Martin Studer, the maintainer of XLConnect kindly investigated the issue, identified rJava as a possible cause of the problem: This does not work (hangs): library(parallel) require(rJava) .jinit() res <- mclapply(1:2, function(i) { J("java.lang.Runtime")$getRuntime()$gc() 1 }, mc.cores = 2) but this works: library(parallel) res <- mclapply(1:2, function(i) { require(rJava) .jinit() J("java.lang.Runtime")$getRuntime()$gc() 1 }, mc.cores = 2) To cite Martin, it seems to work with mclapply when the JVM process is initialized after forking. Is this a bug or a limitation of rJava ? Or is there a good practice for rJava clients to avoid this problem ? Best, Karl P.S.> sessionInfo()R version 3.0.1 (2013-05-16) Platform: x86_64-unknown-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=C LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached): [1] tools_3.0.1 [[alternative HTML version deleted]]
Karl, I have the following notes to self that may be pertinent: options(java.parameters ## Must preceed `library(XLConnect)` in order to prevent "Java ## requested System.exit(130), closing R." which happens when ## rJava quits R upon trapping INT (control-c), as is done by ## XLConnect (and playwith?), below. (c.f.: ## https://www.rforge.net/bugzilla/show_bug.cgi?id=237) "-Xrs") ~Malcolm >-----Original Message----- >From: r-devel-bounces at r-project.org [mailto:r-devel-bounces at r-project.org] On Behalf Of Karl Forner >Sent: Monday, November 11, 2013 11:41 AM >To: r-devel at r-project.org >Cc: Martin Studer >Subject: [Rd] problem using rJava with parallel::mclapply > >Dear all, > >I got an issue trying to parse excel files in parallel using XLConnect, the >process hangs forever. >Martin Studer, the maintainer of XLConnect kindly investigated the issue, >identified rJava as a possible cause of the problem: > >This does not work (hangs): >library(parallel) >require(rJava) >.jinit() >res <- mclapply(1:2, function(i) { > J("java.lang.Runtime")$getRuntime()$gc() > 1 > }, mc.cores = 2) > >but this works: >library(parallel) >res <- mclapply(1:2, function(i) { > require(rJava) > .jinit() > J("java.lang.Runtime")$getRuntime()$gc() > 1 >}, mc.cores = 2) > >To cite Martin, it seems to work with mclapply when the JVM process is >initialized after forking. > >Is this a bug or a limitation of rJava ? >Or is there a good practice for rJava clients to avoid this problem ? > >Best, >Karl > >P.S. >> sessionInfo() >R version 3.0.1 (2013-05-16) >Platform: x86_64-unknown-linux-gnu (64-bit) > >locale: > [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C > [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 > [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 > [7] LC_PAPER=C LC_NAME=C > [9] LC_ADDRESS=C LC_TELEPHONE=C >[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C > >attached base packages: >[1] stats graphics grDevices utils datasets methods base > >loaded via a namespace (and not attached): >[1] tools_3.0.1 > > [[alternative HTML version deleted]] > >______________________________________________ >R-devel at r-project.org mailing list >https://stat.ethz.ch/mailman/listinfo/r-devel
On Nov 11, 2013, at 12:40 PM, Karl Forner <karl.forner at gmail.com> wrote:> Dear all, > > I got an issue trying to parse excel files in parallel using XLConnect, the > process hangs forever. > Martin Studer, the maintainer of XLConnect kindly investigated the issue, > identified rJava as a possible cause of the problem: > > This does not work (hangs): > library(parallel) > require(rJava) > .jinit() > res <- mclapply(1:2, function(i) { > J("java.lang.Runtime")$getRuntime()$gc() > 1 > }, mc.cores = 2) > > but this works: > library(parallel) > res <- mclapply(1:2, function(i) { > require(rJava) > .jinit() > J("java.lang.Runtime")$getRuntime()$gc() > 1 > }, mc.cores = 2) > > To cite Martin, it seems to work with mclapply when the JVM process is > initialized after forking. > > Is this a bug or a limitation of rJava ?It?s a limitation of the Java runtime - you cannot fork a JVM. This is true for most libraries that use long-lived threads or any kind if UI (see the warnings in mcfork). Cheers, Simon> Or is there a good practice for rJava clients to avoid this problem ? > > Best, > Karl > > P.S. >> sessionInfo() > R version 3.0.1 (2013-05-16) > Platform: x86_64-unknown-linux-gnu (64-bit) > > locale: > [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C > [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 > [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 > [7] LC_PAPER=C LC_NAME=C > [9] LC_ADDRESS=C LC_TELEPHONE=C > [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > loaded via a namespace (and not attached): > [1] tools_3.0.1 > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
Apparently Analagous Threads
- Cannot create Java virtual machine (-1)
- rJava Broken on Linux + R 3.4
- CreateThread failure since R 2.15.2 (32-bit)
- RJava question(class not found with rJava's vm, though found with alternate vm)
- rJava (installation?) problem: unable to find the basic String class