使用降雪时访问RStudio服务器中的文件夹时出错

时间:2014-11-23 11:49:22

标签: r rstudio rstudio-server snowfall

我正在使用RStudio服务器和降雪。我的并行代码总是给我这些消息:

> sfInit(cpus = 14, parallel = TRUE)
> sfLapply(seq(along = trials), nvtPar, file)
23 Nov 2014 11:31:36 [rsession-users] ERROR svn: E070008: Can't read directory 'my-current-working-directory': Partial results are valid but processing is incomplete
; LOGGED FROM: core::Error session::modules::svn::status(const core::FilePath&, std::vector<session::modules::source_control::FileWithStatus, std::allocator<session::modules::source_control::FileWithStatus> >*) /home/ubuntu/rstudio/src/cpp/session/modules/SessionSVN.cpp:809

在我的并行功能(nvtPar)中,我从硬盘驱动器中读取了一些文件并将文件写入硬盘驱动器。所有文件都在子文件夹中。

此服务器构建在具有16个核心的VMware虚拟服务器上。我的工作目录是nfs服务器并挂载为我的主目录。

我的RStudio服务器版本为0.98.994。

这是我的会话信息:

> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C         LC_TIME=C            LC_COLLATE=C         LC_MONETARY=C        LC_MESSAGES=C        LC_PAPER=C          
 [8] LC_NAME=C            LC_ADDRESS=C         LC_TELEPHONE=C       LC_MEASUREMENT=C     LC_IDENTIFICATION=C 

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] snowfall_1.84-6       snow_0.3-13           magrittr_1.0.1        XML_3.98-1.1          ncdf4_1.13 dplyr_0.3.0.9000

loaded via a namespace (and not attached):
[1] DBI_0.3.1           Rcpp_0.11.3         assertthat_0.1      lazyeval_0.1.9.9001 parallel_3.1.1      tools_3.1.1        

感谢您的任何建议。如果我的问题不明确,请告诉我。

编辑:作为@ roman-luštrik的建议,我添加了我的最小例子来重现我的问题(抱歉,我无法发布我的整个脚本,但这个例子会产生相同的错误信息)。

trials <- seq(1, 1593)
nvtPar <- function(i, file)
{

    # Generate the random string which will store in the disk
    MHmakeRandomString <- function(n=1, lenght=12)
    {
        randomString <- c(1:n)                  # initialize vector
        for (i in 1:n)
        {
            randomString[i] <- paste(sample(c(0:9, letters, LETTERS),
                                     lenght[i], replace=TRUE),
                                     collapse="")
        }
        return(randomString)
    }
    sim <- MHmakeRandomString(2553, round(runif(2553) * 344))
    write.table(sim, file = paste0(i, '.sim'), 
                                quote = FALSE,
                                row.names = FALSE,
                                col.names = FALSE)
    # Do some calculation
    Sys.sleep(0.213 * (1 + (runif(1) * 2 - 1)) * 0.4)
    # Remove the temp file
    file.remove(paste0(i, '.sim'))
    # Do other calculaation
    Sys.sleep(2.32 * (1 + (runif(1) * 2 - 1)) * 0.1)

}

library(snowfall)
sfInit(cpus = 14, parallel = TRUE)
a <- sfLapply(seq(along = trials), nvtPar, file)
sfStop()

挖掘后,似乎这个错误与并行计算中的file.remove有关。如果我评论这一行,所有错误都将消失:

file.remove(paste0(i, '.sim'))

BTW:我在工作目录中使用svn进行版本控制。

0 个答案:

没有答案