Giter Club home page Giter Club logo

connector-r's Introduction

Connector-r

Build Status

ProActive connector for R

Install R packages

sudo ./gradlew pa-rconnector:installrpackages

Build R connector

./gradlew clean build

connector-r's People

Contributors

fviale avatar lpellegr avatar maelaudren avatar marcocast avatar mbenguig avatar mboussaa avatar mebubo avatar nebilbenmabrouk avatar paraita avatar tobwiens avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

connector-r's Issues

PAM() function does not correctly expand patterns in input/output files arguments

Original issue created by Vladimir Bodnartchouk on 28, Feb 2014 at 19:23 PM - PRC-6


For example in the following code the output.files='file%1%' argument of the PAM() function should be expanded to 'file1' and 'file2'

Code to reproduce the issue:

library("PARConnector")
PAConnect(url='http://localhost:8080/rest/rest', login='demo', pwd='demo')
tasks <- PA("identity", 1:2);
fullWorkflow <- PAM( function(...){}, tasks, output.files="file%1%")
\1. Print the full workflow
fullWorkflow

\1. The awaited result should be:
...
output files : C:/PARConnector/file1 <- $USER/file1, C:/PARConnector/file2 <- $USER/file2
...

in order to build parscript on Windows 64 bits, jvm.dll must be in the path

Original issue created by Fabien Viale on 06, May 2015 at 18:09 PM - PRC-49


The issue is somehow complex.

Some info can be found here :

http://stackoverflow.com/questions/7019912/using-the-rjava-package-on-win7-64-bit-with-r

On Windows 8 64 bits, with R 64 bits, I had the following error message during the build. Adding jvm.dll to windows path fixed the issue :

 installing *source* package 'PARConnector' ...
** R
** inst
** preparing package for lazy loading
Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: inDL(x, as.logical(local), as.logical(now), ...)
  error: impossible de charger l'objet partage 'C:/Users/fviale/Documents/R/win-library/3.1/rJava/libs/x64/rJava.dll':
  LoadLibrary failure:  Le module specifie est introuvable.

Error : package 'rJava' could not be loaded
ERROR: lazy loading failed for package 'PARConnector'
* removing 'C:/Users/fviale/IdeaProjects/r_connector/par-connector/build/r-pkg-src.Rcheck/PARConnector'

R errors occuring on workers are not forwarded properly to the client

Original issue created by Fabien Viale on 08, Oct 2014 at 16:59 PM - PRC-14


It looks like the REST server does not forward the error propperly, instead, I receive the following error :

PAWaitFor(res)
java.lang.RuntimeException: java.lang.RuntimeException: javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type interface java.io.Serializable
at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwNCE(ExceptionUtility.java:65)
at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwNCEOrPE(ExceptionUtility.java:74)
at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwUJEOrNCEOrPE(ExceptionUtility.java:84)
at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwUJEOrNCEOrPEOrUTE(ExceptionUtility.java:93)
at org.ow2.proactive.scheduler.rest.SchedulerClient.getTaskResult(SchedulerClient.java:345)
at org.ow2.proactive.scheduler.rest.SchedulerClient.waitForTask(SchedulerClient.java:760)
at org.ow2.proactive.scheduler.rest.SchedulerClient.waitForAllTasks(SchedulerClient.java:833)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.ow2.proactive.scheduler.rest.SessionHandler.invoke(SessionHandler.java:58)
at $Proxy0.waitForAllTasks(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at RJavaTools.invokeMethod(RJavaTools.java:386)
Caused by: java.lang.RuntimeException: javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type interface java.io.Serializable
at org.ow2.proactive_grid_cloud_portal.scheduler.client.SchedulerRestClient$RestClientExceptionHandler.invoke(SchedulerRestClient.java:507)
at $Proxy30.valueOftaskresult(Unknown Source)
at org.ow2.proactive.scheduler.rest.SchedulerClient.getTaskResult(SchedulerClient.java:331)
... 13 more
Caused by: javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type interface java.io.Serializable
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:140)
at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:58)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:104)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:62)
at $Proxy30.valueOftaskresult(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.ow2.proactive_grid_cloud_portal.scheduler.client.SchedulerRestClient$RestClientExceptionHandler.invoke(SchedulerRestClient.java:488)
... 15 more
Caused by: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type interface java.io.Serializable
at org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:39)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:73)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:50)
at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:47)
at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53)
at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:244)
at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:178)
at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:211)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:104)
... 24 more
Erreur dans value(link: [3L])(cond) :

PAConnect does not support https url if the server certificate is invalid

Original issue created by Vladimir Bodnartchouk on 25, Sep 2014 at 12:01 PM - PRC-1


 PAConnect(url='https://try.activeeon.com/rest', login='login', pwd='pwd');
[1] "Error in PAConnect(https://try.activeeon.com/rest) :"
[1] "Java Error in :"
7: tryCatchOne(expr, names, parentenv, handlers[[1L]])
6: tryCatchList(expr, classes, parentenv, handlers)
5: tryCatch({
       return({
           SchedulerClient <- J("org.ow2.proactive.scheduler.rest.SchedulerClient")
           client <- SchedulerClient$createInstance()
           client$init(url, login, pwd)
       })
   }, Exception = function(e) {
       if (is.null(function(e, .print.stack) {
           print(str_c("Error in PAConnect(", url, ") :"))
           PAHandler(e, .print.stack)
       })) {
           PAHandler(e, .print.stack = .print.stack)
       }
       else {
           (function(e, .print.stack) {
               print(str_c("Error in PAConnect(", url, ") :"))
               PAHandler(e, .print.stack)
           })(e, .print.stack = .print.stack)
       }
   })
4: eval(expr, envir, enclos)
3: eval(tmp, parent.frame())
2: j_try_catch({
       SchedulerClient <- J("org.ow2.proactive.scheduler.rest.SchedulerClient")
       client <- SchedulerClient$createInstance()
       client$init(url, login, pwd)
   }, .handler = function(e, .print.stack) {
       print(str_c("Error in PAConnect(", url, ") :"))
       PAHandler(e, .print.stack)
   }, .print.stack = .print.stack) at PAConnect.r#39
1: PAConnect(url = "https://try.activeeon.com/rest", login = "login", 
       pwd = "pwd")
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.lang.RuntimeException: java.lang.RuntimeException: javax.ws.rs.ProcessingException: Unable to invoke request

Better error message when an error occurs during script execution

Original issue created by Vladimir Bodnartchouk on 05, Nov 2014 at 12:39 PM - PRC-31


The message of the ScriptException() is verbose and cryptic ...

{code:xml}











<script>



</script>





{code}
{noformat}
[[email protected];12:19:50] [1]
[[email protected];12:19:50] Error in print(fillle) : object 'fillle' not found
[[email protected];12:19:50] In addition:
[[email protected];12:19:50] Warning message:
[[email protected];12:19:50] In .jinit() : Cannot set VM parameters, because VM is running already.
[[email protected];12:19:50] "---------------"
[[email protected];12:19:50] java.lang.Exception: Error in print(fillle) : object 'fillle' not found
[[email protected];12:19:50] In addition:
[[email protected];12:19:50] Warning message:
[[email protected];12:19:50] In .jinit() : Cannot set VM parameters, because VM is running already.
[[email protected];12:19:50] javax.script.ScriptException: Error in print(fillle) : object 'fillle' not found
[[email protected];12:19:50] In addition:
[[email protected];12:19:50] Warning message:
[[email protected];12:19:50] In .jinit() : Cannot set VM parameters, because VM is running already.
[[email protected];12:19:50] at org.ow2.parscript.PARScriptEngine.eval(PARScriptEngine.java:154)
[[email protected];12:19:50] at org.ow2.parscript.PARScriptEngine.eval(PARScriptEngine.java:168)
[[email protected];12:19:50] at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
[[email protected];12:19:50] at org.ow2.proactive.scripting.Script.execute(Script.java:322)
[[email protected];12:19:50] at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:73)
[[email protected];12:19:50] at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:113)
[[email protected];12:19:50] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1925)
[[email protected];12:19:50] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1920)
[[email protected];12:19:50] at org.ow2.proactive.scheduler.task.utils.ActiveObjectExecutor.call(ActiveObjectExecutor.java:102)
[[email protected];12:19:50] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[[email protected];12:19:50] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[[email protected];12:19:50] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[[email protected];12:19:50] at java.lang.reflect.Method.invoke(Method.java:606)
[[email protected];12:19:50] at org.objectweb.proactive.core.mop.MethodCall.execute(MethodCall.java:353)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.request.RequestImpl.serveInternal(RequestImpl.java:214)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.request.RequestImpl.serve(RequestImpl.java:160)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serveInternal(BodyImpl.java:549)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serve(BodyImpl.java:482)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.AbstractBody.serve(AbstractBody.java:426)
[[email protected];12:19:50] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:206)
[[email protected];12:19:50] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:181)
[[email protected];12:19:50] at org.objectweb.proactive.Service.fifoServing(Service.java:146)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.ActiveBody$FIFORunActive.runActivity(ActiveBody.java:269)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.ActiveBody.run(ActiveBody.java:164)
[[email protected];12:19:50] at java.lang.Thread.run(Thread.java:745)
[[email protected];12:19:50] at org.ow2.proactive.scripting.Script.execute(Script.java:339)
[[email protected];12:19:50] at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:73)
[[email protected];12:19:50] at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:113)
[[email protected];12:19:50] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1925)
[[email protected];12:19:50] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1920)
[[email protected];12:19:50] at org.ow2.proactive.scheduler.task.utils.ActiveObjectExecutor.call(ActiveObjectExecutor.java:102)
[[email protected];12:19:50] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[[email protected];12:19:50] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[[email protected];12:19:50] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[[email protected];12:19:50] at java.lang.reflect.Method.invoke(Method.java:606)
[[email protected];12:19:50] at org.objectweb.proactive.core.mop.MethodCall.execute(MethodCall.java:353)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.request.RequestImpl.serveInternal(RequestImpl.java:214)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.request.RequestImpl.serve(RequestImpl.java:160)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serveInternal(BodyImpl.java:549)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serve(BodyImpl.java:482)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.AbstractBody.serve(AbstractBody.java:426)
[[email protected];12:19:50] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:206)
[[email protected];12:19:50] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:181)
[[email protected];12:19:50] at org.objectweb.proactive.Service.fifoServing(Service.java:146)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.ActiveBody$FIFORunActive.runActivity(ActiveBody.java:269)
[[email protected];12:19:50] at org.objectweb.proactive.core.body.ActiveBody.run(ActiveBody.java:164)
[[email protected];12:19:50] at java.lang.Thread.run(Thread.java:745)
{noformat}

Handle package-defined result objects classes

Original issue created by Fabien Viale on 17, Oct 2014 at 12:17 PM - PRC-17


Right now the object is transformed to java, but apparently there is some issue when the object is reconstructed from java to R.

Maybe we could work around the problem by serializing the result first, and then deseriazing it at reception.

Not all dependencies are auto-detected

Original issue created by Sergei Dolgov on 28, Oct 2014 at 17:27 PM - PRC-24


library(quantmod)

F <- getSymbols('F', from='2010-01-01', to='2010-12-31', auto.assign=FALSE)[,6]
GSPC <- getSymbols('^GSPC', from='2010-01-01', to='2010-12-31', auto.assign=FALSE)[,6]

FF <- diff(log(F))
GSPC <- diff(log(GSPC))

n <- length(FF)

f <- function(x) {
    ind <- sample(n, n, replace=TRUE)
    coef(lm(FF[ind] ~ GSPC[ind]))[2]
}

library(PARConnector)
PAConnect("https://try.activeeon.com/rest", "admin", "pwd")
PAWaitFor(PASolve(f, range))

In the above scenario, the proactive task fails with

Erreur dans eval(expr, envir, enclos) : objet 'FF' introuvable 

a workaround is to reference the variables like this:

f <- function(x) {
    FF
    GSPC
    ind <- sample(n, n, replace=TRUE)
    coef(lm(FF[ind] ~ GSPC[ind]))[2]
}

IMO we should provide an explicit way to state which variables to export, and which to ignore (e.g. like "foreach" library does this)

Failure to send dependencies coming from a librariy

Original issue created by Sergei Dolgov on 15, Oct 2014 at 18:12 PM - PRC-15


I'm trying to run the following simple kmeans example:

library(PARConnector)
library(MASS)

PAConnect("https://try.activeeon.com/rest", "admin", "pouet123")

result <- PAWaitFor(PASolve(function(n) kmeans(Boston, 4, nstart=n), rep(25, 4)))

At submission, it prints warnings:

In addition: Warning messages:
1: In value[[3L]](cond) :
  [Resolve Dependencies] When running get(Boston,envir) : Error in as.environment(pos): using 'as.environment(NULL)' is defunct

2: In value[[3L]](cond) :
  [Resolve Dependencies] When running get(C_kmeans_Lloyd,envir) : Error in as.environment(pos): using 'as.environment(NULL)' is defunct

3: In value[[3L]](cond) :
  [Resolve Dependencies] When running get(C_kmeans_MacQueen,envir) : Error in as.environment(pos): using 'as.environment(NULL)' is defunct

4: In value[[3L]](cond) :
  [Resolve Dependencies] When running get(C_kmns,envir) : Error in as.environment(pos): using 'as.environment(NULL)' is defunct

The corresponding job fails with

[[email protected];18:02:50] java.lang.Exception: Erreur dans array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x), : 
[[email protected];18:02:50] 'data' doit etre de type vecteur, il etait 'NULL' 
[[email protected];18:02:50] javax.script.ScriptException: Erreur dans array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x), : 
[[email protected];18:02:50] 'data' doit etre de type vecteur, il etait 'NULL' 
[[email protected];18:02:50] at org.ow2.parscript.PARScriptEngine.eval(PARScriptEngine.java:120) 
[[email protected];18:02:50] at org.rosuda.jrs.BaseScriptEngine.eval(BaseScriptEngine.java:45) 
[[email protected];18:02:50] at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249) 
[[email protected];18:02:50] at org.ow2.proactive.scripting.Script.execute(Script.java:324) 
[[email protected];18:02:50] at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:75) 
[[email protected];18:02:50] at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:106) 
[[email protected];18:02:50] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1910) 
[[email protected];18:02:50] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1905) 
[[email protected];18:02:50] at org.ow2.proactive.scheduler.task.utils.ActiveObjectExecutor.call(ActiveObjectExecutor.java:102) 
[[email protected];18:02:50] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[[email protected];18:02:50] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
[[email protected];18:02:50] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
[[email protected];18:02:50] at java.lang.reflect.Method.invoke(Method.java:606) 

Input files should be pushed into the userspace only at job submission (ie call to PASolve) and not at task creation (ie call to PA(), PAS(), PAM())

Original issue created by Vladimir Bodnartchouk on 03, Mar 2014 at 12:11 PM - PRC-4


Git rev. 1819d15351a2239d32c07ccdb34d4bcb898da7fd

All input files should not be pushed at task creation time, currently the user needs to be connected to the Scheduler with PAConnect() to be able to build a workflow with PA()/PAS()/PAM() and the input files are trasferred. The user top level can be blocked by trasfer of a large input file, this behavior can be improved. The file trasfer should occur only during the PASolve().

When there is a problem loading the script engine, the server exception is not properly routed to PARConnector

Original issue created by Fabien Viale on 06, May 2015 at 19:02 PM - PRC-50


The issue is more related to the rest-java client.

Here is the task error :






[[email protected];18:58:44] java.lang.Exception: No Script Engine Found for name or extension R 
[[email protected];18:58:44] at org.ow2.proactive.scripting.Script.execute(Script.java:304) 
[[email protected];18:58:44] at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:75) 
[[email protected];18:58:44] at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:106) 
[[email protected];18:58:44] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1910) 
[[email protected];18:58:44] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1905) 
[[email protected];18:58:44] at org.ow2.proactive.scheduler.task.utils.ActiveObjectExecutor.call(ActiveObjectExecutor.java:102) 
[[email protected];18:58:44] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[[email protected];18:58:44] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
[[email protected];18:58:44] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
[[email protected];18:58:44] at java.lang.reflect.Method.invoke(Unknown Source) 
[[email protected];18:58:44] at org.objectweb.proactive.core.mop.MethodCall.execute(MethodCall.java:355) 
[[email protected];18:58:44] at org.objectweb.proactive.core.body.request.RequestImpl.serveInternal(RequestImpl.java:216) 
[[email protected];18:58:44] at org.objectweb.proactive.core.body.request.RequestImpl.serve(RequestImpl.java:162) 
[[email protected];18:58:44] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serveInternal(BodyImpl.java:553) 
[[email protected];18:58:44] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serve(BodyImpl.java:486) 
[[email protected];18:58:44] at org.objectweb.proactive.core.body.AbstractBody.serve(AbstractBody.java:428) 
[[email protected];18:58:44] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:206) 
[[email protected];18:58:44] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:181) 
[[email protected];18:58:44] at org.objectweb.proactive.Service.fifoServing(Service.java:146) 
[[email protected];18:58:44] at org.objectweb.proactive.core.body.ActiveBody$FIFORunActive.runActivity(ActiveBody.java:273) 
[[email protected];18:58:44] at org.objectweb.proactive.core.body.ActiveBody.run(ActiveBody.java:166) 
[[email protected];18:58:44] at java.lang.Thread.run(Unknown Source) 

Here is what is received by PARConnector :

> PAWaitFor(r)
java.lang.RuntimeException: java.lang.RuntimeException: javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type interface java.io.Serializable
    at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwNCE(ExceptionUtility.java:65)
    at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwNCEOrPE(ExceptionUtility.java:74)
    at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwUJEOrNCEOrPE(ExceptionUtility.java:84)
    at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwUJEOrNCEOrPEOrUTE(ExceptionUtility.java:93)
    at org.ow2.proactive.scheduler.rest.SchedulerClient.getTaskResult(SchedulerClient.java:345)
    at org.ow2.proactive.scheduler.rest.SchedulerClient.waitForTask(SchedulerClient.java:760)
    at org.ow2.proactive.scheduler.rest.SchedulerClient.waitForAllTasks(SchedulerClient.java:833)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.ow2.proactive.scheduler.rest.SessionHandler.invoke(SessionHandler.java:58)
    at com.sun.proxy.$Proxy0.waitForAllTasks(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at RJavaTools.invokeMethod(RJavaTools.java:386)
Caused by: java.lang.RuntimeException: javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type interface java.io.Serializable
    at org.ow2.proactive_grid_cloud_portal.scheduler.client.SchedulerRestClient$RestClientExceptionHandler.invoke(SchedulerRestClient.java:507)
    at com.sun.proxy.$Proxy30.valueOftaskresult(Unknown Source)
    at org.ow2.proactive.scheduler.rest.SchedulerClient.getTaskResult(SchedulerClient.java:331)
    ... 13 more
Caused by: javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type interface java.io.Serializable
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:140)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:58)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:104)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:62)
    at com.sun.proxy.$Proxy30.valueOftaskresult(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.ow2.proactive_grid_cloud_portal.scheduler.client.SchedulerRestClient$RestClientExceptionHandler.invoke(SchedulerRestClient.java:488)
    ... 15 more
Caused by: javax.ws.rs.ProcessingException: Unable to find a MessageBodyReader of content-type application/octet-stream and type interface java.io.Serializable
    at org.jboss.resteasy.core.interception.ClientReaderInterceptorContext.throwReaderNotFound(ClientReaderInterceptorContext.java:39)
    at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:73)
    at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:50)
    at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:47)
    at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53)
    at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readFrom(ClientResponse.java:244)
    at org.jboss.resteasy.client.jaxrs.internal.ClientResponse.readEntity(ClientResponse.java:178)
    at org.jboss.resteasy.specimpl.BuiltResponse.readEntity(BuiltResponse.java:211)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:104)
    ... 24 more
Erreur dans value[[3L]](cond) : 

Error in lapply when printing a task created by PA()

Original issue created by Vladimir Bodnartchouk on 20, Feb 2014 at 19:22 PM - PRC-3


In toString() method of PATask if the getInputFilesList()/getOutputFilesList() returns null do not append to output

Trunk version: 98910f8cba0beb047804512f4d120789f0736112

To reproduce the problem:

library(PARConnector)
tasks <- PA('sin', 1:2)
..
tasks(link: [1])
Error in lapply(x, f) : attempt to apply non-function
Error during wrapup: Error during test

R toolbox cannot be used with pa.scheduler.task.scripttasks.fork=false

Original issue created by Youri Bonnaffe on 28, Oct 2014 at 17:11 PM - PRC-23


When using the toolbox and a Scheduler configured with pa.scheduler.task.scripttasks.fork=false, the execution of a job created via PASolve will fail (the second job, the first submission will work).

The stacktrace below is produced. It is probably a static initialization that causes it and makes it non compatible with non forked script tasks.

It is maybe expected and known but I'm reporting for the sake of documentation. Please do not hesitate to mark it as won't fix if needed.

[[email protected];17:07:41] org.ow2.proactive.scripting.ScriptException: An exception occurred while executing the script TaskScript with parameters=[], and content:
[[email protected];17:07:41] at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:77) 
[[email protected];17:07:41] at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:106) 
[[email protected];17:07:41] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1910) 
[[email protected];17:07:41] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1905) 
[[email protected];17:07:41] at org.ow2.proactive.scheduler.task.utils.ActiveObjectExecutor.call(ActiveObjectExecutor.java:102) 
[[email protected];17:07:41] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[[email protected];17:07:41] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
[[email protected];17:07:41] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
[[email protected];17:07:41] at java.lang.reflect.Method.invoke(Unknown Source) 
[[email protected];17:07:41] at org.objectweb.proactive.core.mop.MethodCall.execute(MethodCall.java:355) 
[[email protected];17:07:41] at org.objectweb.proactive.core.body.request.RequestImpl.serveInternal(RequestImpl.java:216) 
[[email protected];17:07:41] at org.objectweb.proactive.core.body.request.RequestImpl.serve(RequestImpl.java:162) 
[[email protected];17:07:41] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serveInternal(BodyImpl.java:553) 
[[email protected];17:07:41] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serve(BodyImpl.java:486) 
[[email protected];17:07:41] at org.objectweb.proactive.core.body.AbstractBody.serve(AbstractBody.java:428) 
[[email protected];17:07:41] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:206) 
[[email protected];17:07:41] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:181) 
[[email protected];17:07:41] at org.objectweb.proactive.Service.fifoServing(Service.java:146) 
[[email protected];17:07:41] at org.objectweb.proactive.core.body.ActiveBody$FIFORunActive.runActivity(ActiveBody.java:273) 
[[email protected];17:07:41] at org.objectweb.proactive.core.body.ActiveBody.run(ActiveBody.java:166) 
[[email protected];17:07:41] at java.lang.Thread.run(Unknown Source) 
[[email protected];17:07:41] Caused by: java.lang.IllegalStateException: Unable to instantiate the REngine by reflection 
[[email protected];17:07:41] at org.ow2.parscript.PARScriptEngine.create(PARScriptEngine.java:64) 
[[email protected];17:07:41] at org.ow2.parscript.PARScriptFactory.getScriptEngine(PARScriptFactory.java:61) 
[[email protected];17:07:41] at org.ow2.proactive.scripting.Script.createScriptEngine(Script.java:358) 
[[email protected];17:07:41] at org.ow2.proactive.scripting.Script.execute(Script.java:301) 
[[email protected];17:07:41] at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:75) 
[[email protected];17:07:41] ... 20 more 
[[email protected];17:07:41] Caused by: java.lang.reflect.InvocationTargetException 
[[email protected];17:07:41] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[[email protected];17:07:41] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
[[email protected];17:07:41] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
[[email protected];17:07:41] at java.lang.reflect.Method.invoke(Unknown Source) 
[[email protected];17:07:41] at org.rosuda.REngine.REngine.engineForClass(REngine.java:33) 
[[email protected];17:07:41] at org.ow2.parscript.PARScriptEngine.create(PARScriptEngine.java:61) 
[[email protected];17:07:41] ... 24 more 
[[email protected];17:07:41] Caused by: org.rosuda.REngine.REngineException: engine already running - cannot use extended constructor on a running instance 
[[email protected];17:07:41] at org.rosuda.REngine.JRI.JRIEngine.createEngine(JRIEngine.java:113) 
[[email protected];17:07:41] ... 30 more 

Show user-friendly message in case of 'Connection refused'

Original issue created by Vladimir Bodnartchouk on 28, Feb 2014 at 18:03 PM - PRC-8


git rev. ae41b3c9c717d0a86066a56888d7aa0c96ab5d04

There should be a user-friendly message instead of the printed exception

PAConnect(url='http://localhost:8080/rest/rest', login='demo', pwd='demo');
log4j:WARN No appenders could be found for logger (org.jboss.resteasy.plugins.providers.DocumentProvider).
log4j:WARN Please initialize the log4j system properly.
(link: 1) "Error in PAConnect(http://localhost:8080/rest/rest) :"
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.ow2.proactive.scheduler.rest.SessionHandler.invoke(SessionHandler.java:58)
at com.sun.proxy.$Proxy0.init(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at RJavaTools.invokeMethod(RJavaTools.java:386)
Caused by: java.lang.RuntimeException: java.lang.reflect.UndeclaredThrowableException
at org.ow2.proactive.scheduler.rest.SchedulerClient.renewSession(SchedulerClient.java:811)
at org.ow2.proactive.scheduler.rest.SchedulerClient.init(SchedulerClient.java:163)
... 11 more
Caused by: java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy31.login(Unknown Source)
at org.ow2.proactive.scheduler.rest.SchedulerClient.renewSession(SchedulerClient.java:809)
... 12 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.ow2.proactive_grid_cloud_portal.scheduler.client.SchedulerRestClient$RestClientExceptionHandler.invoke(SchedulerRestClient.java:182)
... 14 more
Caused by: java.lang.RuntimeException: org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:8080 refused
at org.jboss.resteasy.client.core.ClientInvoker.invoke(ClientInvoker.java:114)
at org.jboss.resteasy.client.core.ClientProxy.invoke(ClientProxy.java:88)
at com.sun.proxy.$Proxy30.login(Unknown Source)
... 19 more
Caused by: org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:8080 refused
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.execute(ApacheHttpClient4Executor.java:109)
at org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:39)
at org.jboss.resteasy.plugins.interceptors.encoding.AcceptEncodingGZIPInterceptor.execute(AcceptEncodingGZIPInterceptor.java:40)
at org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:45)
at org.jboss.resteasy.client.ClientRequest.execute(ClientRequest.java:443)
at org.jboss.resteasy.client.ClientRequest.httpMethod(ClientRequest.java:677)
at org.jboss.resteasy.client.core.ClientInvoker.invoke(ClientInvoker.java:110)
... 21 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:127)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
... 33 more
Show Traceback

Rerun with Debug
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
java.lang.reflect.InvocationTargetException

NoScriptEngine for R extension

Original issue created by Fabien Viale on 09, Dec 2014 at 12:17 PM - PRC-37


It is not possible to execute directly R file scripts using parscript. Only inline scripts can be executed. With R file scripts, the following error occurs :

[email protected];12:08:03] java.lang.Exception: No Script Engine Found for name or extension r 
[[email protected];12:08:03] at org.ow2.proactive.scripting.Script.execute(Script.java:304) 
[[email protected];12:08:03] at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:75) 
[[email protected];12:08:03] at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:113) 
[[email protected];12:08:03] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1925) 
[[email protected];12:08:03] at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1920) 
[[email protected];12:08:03] at org.ow2.proactive.scheduler.task.utils.ActiveObjectExecutor.call(ActiveObjectExecutor.java:102) 
[[email protected];12:08:03] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[[email protected];12:08:03] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
[[email protected];12:08:03] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
[[email protected];12:08:03] at java.lang.reflect.Method.invoke(Unknown Source) 
[[email protected];12:08:03] at org.objectweb.proactive.core.mop.MethodCall.execute(MethodCall.java:355) 
[[email protected];12:08:03] at org.objectweb.proactive.core.body.request.RequestImpl.serveInternal(RequestImpl.java:216) 
[[email protected];12:08:03] at org.objectweb.proactive.core.body.request.RequestImpl.serve(RequestImpl.java:162) 
[[email protected];12:08:03] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serveInternal(BodyImpl.java:553) 
[[email protected];12:08:03] at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serve(BodyImpl.java:486) 
[[email protected];12:08:03] at org.objectweb.proactive.core.body.AbstractBody.serve(AbstractBody.java:428) 
[[email protected];12:08:03] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:206) 
[[email protected];12:08:03] at org.objectweb.proactive.Service.blockingServeOldest(Service.java:181) 
[[email protected];12:08:03] at org.objectweb.proactive.Service.fifoServing(Service.java:146) 
[[email protected];12:08:03] at org.objectweb.proactive.core.body.ActiveBody$FIFORunActive.runActivity(ActiveBody.java:273) 
[[email protected];12:08:03] at org.objectweb.proactive.core.body.ActiveBody.run(ActiveBody.java:166) 
[[email protected];12:08:03] at java.lang.Thread.run(Unknown Source)

Clean .rdata files

Original issue created by Vladimir Bodnartchouk on 03, Mar 2014 at 12:15 PM - PRC-5


Git rev. 1819d15351a2239d32c07ccdb34d4bcb898da7fd

There is an accumulation of previously created pasolve_XXXX.rdata files in the user tmp dir, these files should be cleaned.

callback parameter in PAWaitFor behaves strangely

Original issue created by Fabien Viale on 29, Apr 2015 at 11:11 AM - PRC-44


Suppose the following callback function :

foo <- function(x) {print(paste('Res:',as.character(x)));x}
which prints the result and return it :
foo(5)
(link: 1) "Res: 5"
(link: 1) 5

When executed on a simple cos job, it displays uncoherent results.

> job <- PASolve('cos',1:5)
Job submitted (id : 4959)
 with tasks : t1, t2, t3, t4, t5
> res <- PAWaitFor(job, callback=foo)
 [1] "Res: 58" "Res: 0a" "Res: 00" "Res: 00" "Res: 00" "Res: 02" "Res: 00" "Res: 03" "Res: 01"
[10] "Res: 01" "Res: 00" "Res: 02" "Res: 03" "Res: 00" "Res: 00" "Res: 00" "Res: 00" "Res: 0e"
[19] "Res: 00" "Res: 00" "Res: 00" "Res: 01" "Res: 3f" "Res: e1" "Res: 4a" "Res: 28" "Res: 0f"
[28] "Res: b5" "Res: 06" "Res: 8c"
 [1] "Res: 58" "Res: 0a" "Res: 00" "Res: 00" "Res: 00" "Res: 02" "Res: 00" "Res: 03" "Res: 01"
[10] "Res: 01" "Res: 00" "Res: 02" "Res: 03" "Res: 00" "Res: 00" "Res: 00" "Res: 00" "Res: 0e"
[19] "Res: 00" "Res: 00" "Res: 00" "Res: 01" "Res: bf" "Res: da" "Res: a2" "Res: 26" "Res: 57"
[28] "Res: 53" "Res: 72" "Res: 05"
 [1] "Res: 58" "Res: 0a" "Res: 00" "Res: 00" "Res: 00" "Res: 02" "Res: 00" "Res: 03" "Res: 01"
[10] "Res: 01" "Res: 00" "Res: 02" "Res: 03" "Res: 00" "Res: 00" "Res: 00" "Res: 00" "Res: 0e"
[19] "Res: 00" "Res: 00" "Res: 00" "Res: 01" "Res: bf" "Res: ef" "Res: ae" "Res: 04" "Res: be"
[28] "Res: 85" "Res: e5" "Res: d2"
 [1] "Res: 58" "Res: 0a" "Res: 00" "Res: 00" "Res: 00" "Res: 02" "Res: 00" "Res: 03" "Res: 01"
[10] "Res: 01" "Res: 00" "Res: 02" "Res: 03" "Res: 00" "Res: 00" "Res: 00" "Res: 00" "Res: 0e"
[19] "Res: 00" "Res: 00" "Res: 00" "Res: 01" "Res: bf" "Res: e4" "Res: ea" "Res: a6" "Res: 06"
[28] "Res: db" "Res: 24" "Res: c1"
 [1] "Res: 58" "Res: 0a" "Res: 00" "Res: 00" "Res: 00" "Res: 02" "Res: 00" "Res: 03" "Res: 01"
[10] "Res: 01" "Res: 00" "Res: 02" "Res: 03" "Res: 00" "Res: 00" "Res: 00" "Res: 00" "Res: 0e"
[19] "Res: 00" "Res: 00" "Res: 00" "Res: 01" "Res: 3f" "Res: d2" "Res: 27" "Res: 85" "Res: 70"
[28] "Res: 6b" "Res: 4a" "Res: d9"
> 

I believe it is due to results serialization, the callback is executed on the serialized result received and not on the unserialized versuib.

PARScriptFactory produces error logs if R script engine cannot be instanciated

Original issue created by Youri Bonnaffe on 17, Dec 2014 at 10:55 AM - PRC-39


If R script engine cannot be created (R is not installed on the machine for instance), an error will be produced on stderr for every tasks saying:

_(link: 10000@5e477354ebd0;09:40:20) ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider org.ow2.parscript.PARScriptFactory could not be instantiated _
Because ScriptEngine is initialized even though it is not used...

This is probably because the R script engine is instanciated in the factory's constructor. So even if R is not used, it will be created.

improve error handling of parscript

Original issue created by Fabien Viale on 06, May 2015 at 15:47 PM - PRC-47


Currently error handling is done by capturing the text "Error:" which :

  • does not work when R is installed on a different language than english (due to automatic translation)
  • does not work in all cases (some errors don't have this semantic)

I propose to customize the stop behaviour in R to add a specific tag which will be recognized by parscript.

Executing any ruby script after having used parscirpt produces an awkard error

Original issue created by Fabien Viale on 25, Nov 2014 at 12:36 PM - PRC-38


Here is the error I receive when I try to execute a ruby task :

org.ow2.proactive.scheduler.common.exception.UserException: Script has failed on the current node
at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:118)
at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1925)
at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1920)
at org.ow2.proactive.scheduler.task.utils.ActiveObjectExecutor.call(ActiveObjectExecutor.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.objectweb.proactive.core.mop.MethodCall.execute(MethodCall.java:355)
at org.objectweb.proactive.core.body.request.RequestImpl.serveInternal(RequestImpl.java:216)
at org.objectweb.proactive.core.body.request.RequestImpl.serve(RequestImpl.java:162)
at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serveInternal(BodyImpl.java:553)
at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serve(BodyImpl.java:486)
at org.objectweb.proactive.core.body.AbstractBody.serve(AbstractBody.java:428)
at org.objectweb.proactive.Service.blockingServeOldest(Service.java:206)
at org.objectweb.proactive.Service.blockingServeOldest(Service.java:181)
at org.objectweb.proactive.Service.fifoServing(Service.java:146)
at org.objectweb.proactive.core.body.ActiveBody$FIFORunActive.runActivity(ActiveBody.java:273)
at org.objectweb.proactive.core.body.ActiveBody.run(ActiveBody.java:166)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.Exception: java.lang.ClassCastException: org.ow2.parscript.PARScriptEngine cannot be cast to java.lang.String
javax.script.ScriptException: java.lang.ClassCastException: org.ow2.parscript.PARScriptEngine cannot be cast to java.lang.String
at org.jruby.embed.jsr223.JRubyEngine.wrapException(JRubyEngine.java:104)
at org.jruby.embed.jsr223.JRubyEngine.eval(JRubyEngine.java:121)
at org.jruby.embed.jsr223.JRubyEngine.eval(JRubyEngine.java:146)
at org.ow2.proactive.scripting.Script.execute(Script.java:324)
at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:75)
at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:113)
at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1925)
at org.ow2.proactive.scheduler.task.TaskLauncher$ExecutableGuard$9.call(TaskLauncher.java:1920)
at org.ow2.proactive.scheduler.task.utils.ActiveObjectExecutor.call(ActiveObjectExecutor.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.objectweb.proactive.core.mop.MethodCall.execute(MethodCall.java:355)
at org.objectweb.proactive.core.body.request.RequestImpl.serveInternal(RequestImpl.java:216)
at org.objectweb.proactive.core.body.request.RequestImpl.serve(RequestImpl.java:162)
at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serveInternal(BodyImpl.java:553)
at org.objectweb.proactive.core.body.BodyImpl$ActiveLocalBodyStrategy.serve(BodyImpl.java:486)
at org.objectweb.proactive.core.body.AbstractBody.serve(AbstractBody.java:428)
at org.objectweb.proactive.Service.blockingServeOldest(Service.java:206)
at org.objectweb.proactive.Service.blockingServeOldest(Service.java:181)
at org.objectweb.proactive.Service.fifoServing(Service.java:146)
at org.objectweb.proactive.core.body.ActiveBody$FIFORunActive.runActivity(ActiveBody.java:273)
at org.objectweb.proactive.core.body.ActiveBody.run(ActiveBody.java:166)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassCastException: org.ow2.parscript.PARScriptEngine cannot be cast to java.lang.String
at org.jruby.util.OSEnvironment.getAsMapOfRubyStrings(OSEnvironment.java:93)
at org.jruby.util.OSEnvironment.getSystemPropertiesMap(OSEnvironment.java:75)
at org.jruby.RubyGlobal.defineGlobalEnvConstants(RubyGlobal.java:310)
at org.jruby.RubyGlobal.createGlobals(RubyGlobal.java:242)
at org.jruby.Ruby.init(Ruby.java:1152)
at org.jruby.Ruby.newInstance(Ruby.java:276)
at org.jruby.embed.internal.SingletonLocalContextProvider.getRuntime(SingletonLocalContextProvider.java:95)
at org.jruby.embed.internal.BiVariableMap.getReceiverObject(BiVariableMap.java:221)
at org.jruby.embed.internal.BiVariableMap.put(BiVariableMap.java:314)
at org.jruby.embed.ScriptingContainer.put(ScriptingContainer.java:1142)
at org.jruby.embed.jsr223.Utils.put(Utils.java:229)
at org.jruby.embed.jsr223.Utils.preEval(Utils.java:109)
at org.jruby.embed.jsr223.JRubyEngine.eval(JRubyEngine.java:116)
... 23 more

at org.ow2.proactive.scripting.Script.execute(Script.java:341)
at org.ow2.proactive.scripting.ScriptHandler.handle(ScriptHandler.java:75)
at org.ow2.proactive.scheduler.task.script.ScriptExecutable.execute(ScriptExecutable.java:113)
... 19 more

Unable to pull output file if the file already exists in the working dir

Original issue created by Vladimir Bodnartchouk on 25, Feb 2014 at 20:12 PM - PRC-2


On Windows, this errors occurs sometimes not always: Warning, error occurred when trying to pull file ...

Code to reproduce the issue:

write('ola', 'file1')
write('ola', 'file2')
library("PARConnector")
PAConnect(url='http://localhost:8080/rest/rest', login='demo', pwd='demo');
tasks <- PA( function(x) {},
1:2,
input.files="file%1%",
output.files="file%1%")
PADebug(TRUE)
jobResult = PASolve(tasks)
val = PAWaitFor(jobResult)

t1 :
(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "(link: DEBUG) Working directory is : C:/Users/vbodnart/AppData/Local/Temp/PA_JVM1265514695/f756528/25/-726375099"

(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "(link: DEBUG) Working directory content :"

(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "1342196410"

(link: [email protected].;19:42:19) "file1"

(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "(link: DEBUG) Environment :"

(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "args"

(link: [email protected].;19:42:19) "globalspace"

(link: [email protected].;19:42:19) "inputspace"

(link: [email protected].;19:42:19) "jTaskProgress"

(link: [email protected].;19:42:19) (link: 5)

(link: [email protected].;19:42:19) "localspace"

(link: [email protected].;19:42:19) "outputspace"

(link: [email protected].;19:42:19) "PASolveCall"

(link: [email protected].;19:42:19) "results"

(link: [email protected].;19:42:19) (link: 9)

(link: [email protected].;19:42:19) "set_progress"

(link: [email protected].;19:42:19) "userspace"

(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "(link: DEBUG) PASolveCall :"

(link: [email protected].;19:42:19) (function (x)

(link: [email protected].;19:42:19) {

(link: [email protected].;19:42:19) })(1L)

(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "(link: DEBUG) Result :"

(link: [email protected].;19:42:19) NULL

(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "(link: DEBUG) Working directory content after script execution:"

(link: [email protected].;19:42:19) (link: 1)

(link: [email protected].;19:42:19) "1342196410"

(link: [email protected].;19:42:19) "file1"

(link: 1) "Java Error in :"
23: tryCatchOne(expr, names, parentenv, handlers(link: [1L]))
22: tryCatchList(expr, classes, parentenv, handlers)
21: tryCatch({
return({
pulled <- J(client, "pullFile", .getSpaceName(space),
pathname, outputFile)
.nb.tries <- 0
})
}, Exception = function(e) {
if (is.null(function(e, .print.stack) {
.nb.tries <<- .nb.tries - 1
if (.nb.tries <= 0) {
if (.print.stack) {
print(str_c("Error in PAPullFile(", space, ",",
pathname, ",", outputFile, ") : ", e$jobj$getMessage()))
}
PAHandler(e, .print.stack)
}
})) {
PAHandler(e, .print.stack = .print.stack)
}
else {
(function(e, .print.stack) {
.nb.tries <<- .nb.tries - 1
if (.nb.tries <= 0) {
if (.print.stack) {
print(str_c("Error in PAPullFile(", space,
",", pathname, ",", outputFile, ") : ", e$jobj$getMessage()))
}
PAHandler(e, .print.stack)
}
})(e, .print.stack = .print.stack)
}
})
20: eval(expr, envir, enclos)
19: eval(tmp, parent.frame())
18: j_try_catch({
pulled <- J(client, "pullFile", .getSpaceName(space), pathname,
outputFile)
.nb.tries <- 0
}, .handler = function(e, .print.stack) {
.nb.tries <<- .nb.tries - 1
if (.nb.tries <= 0) {
if (.print.stack) {
print(str_c("Error in PAPullFile(", space, ",", pathname,
",", outputFile, ") : ", e$jobj$getMessage()))
}
PAHandler(e, .print.stack)
}
}, .print.stack = .print.stack) at PAPullFile.r#35
17: PAPullFile(toupper(object@space), pathname, filepath, .print.stack = FALSE)
16: doTryCatch(return(expr), name, parentenv, handler)
15: tryCatchOne(expr, names, parentenv, handlers(link: [1L]))
14: tryCatchList(expr, classes, parentenv, handlers)
13: tryCatch(return(PAPullFile(toupper(object@space), pathname, filepath,
.print.stack = FALSE)), Exception = function(e) {
print(str_c("Warning, error occurred when trying to pull file ",
toupper(object@space), ":", pathname, " -> ", filepath))
}) at PAFile.r#107
12: .local(object, ...)
11: pullFile(pafile, client = paresult@client) at pa_inline_functions.r#224
10: pullFile(pafile, client = paresult@client) at PAJobResult.r#72
9: .getRResultFromJavaResult(paresult, tresult, i, callback) at PAJobResult.r#118
8: .getAvailableResults(paresult, callback) at PAJobResult.r#160
7: .local(paresult, ...)
6: PAWaitFor(jobResult) at pa_inline_functions.r#184
5: PAWaitFor(jobResult) at testFileIndex.r#62
4: eval(expr, envir, enclos)
3: eval(ei, envir)
2: withVisible(eval(ei, envir))
1: source("functionalTests/testFileIndex.r")
java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy0.pullFile(Unknown Source)
at sun.reflect.GeneratedMethodAccessor101.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at RJavaTools.invokeMethod(RJavaTools.java:386)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor102.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.ow2.proactive.scheduler.rest.SessionHandler.invoke(SessionHandler.java:58)
... 5 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Cannot delete the already exisiting output file: C:/workdir/matlab_scilab_connector/r/PARConnector/file1
at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwNCE(ExceptionUtility.java:64)
at org.ow2.proactive.scheduler.rest.ExceptionUtility.throwNCEOrPE(ExceptionUtility.java:73)
at org.ow2.proactive.scheduler.rest.SchedulerClient.pullFile(SchedulerClient.java:782)
... 9 more
Caused by: java.lang.RuntimeException: Cannot delete the already exisiting output file: C:/workdir/matlab_scilab_connector/r/PARConnector/file1
at org.ow2.proactive.scheduler.rest.SchedulerClient.prepareToWrite(SchedulerClient.java:827)
at org.ow2.proactive.scheduler.rest.SchedulerClient.pullFile(SchedulerClient.java:777)
... 9 more
(link: 1) "Warning, error occurred when trying to pull file USER:/file1 -> C:/workdir/matlab_scilab_connector/r/PARConnector/file1"

After killing a job, the correct error message is not received by PARConnector

Original issue created by Fabien Viale on 05, May 2015 at 16:40 PM - PRC-45


After submitting a R function which sleeps for 1 minute and kill it from the scheduler interface, the error received when calling PAWaitFor is not correct, it should be an error displaying that the job has been killed.

{noformat}
Connected to Scheduler at https://frrdscpd.rd.loreal:9900/rest
[1] "Java-Object{org.ow2.proactive.scheduler.rest.SchedulerClient@4311771e}"

r <- PASolve(function(x){Sys.sleep(60)},1)
Job submitted (id : 5152)
with tasks : t1
PAWaitFor(r)
Erreur dans unserialize(result) : 'connection' must be a connection
{noformat}

unserialize Error message with R 3.1.2

Original issue created by Fabien Viale on 27, Mar 2015 at 16:06 PM - PRC-42


When using the PARConnector package in R version 3.1.2, the following message is displayed when trying to retrieve the result of a Task :

Error in unserialize(result) :
character vectors are no longer accepted by unserialize()

Example :

{noformat}
Connected to Scheduler at https://frrdscpd.rd.loreal:9900/rest
[1] "Java-Object{org.ow2.proactive.scheduler.rest.SchedulerClient@cf86a6f}"

r <- PASolve('cosh',1)
[1] "error occurred when trying to push file /tmp/RtmpIYEzy0/1136637329/pasolve_t1.rdata -> USER:/1136637329/./pasolve_t1.rdata"
Job submitted (id : 4698)
with tasks : t1
r
PARJob1 (id: 4698) (status: Finished)
t1 : Finished at Fri Mar 27 15:03:15 CET 2015
PAWaitFor(r)
t1 :
[[email protected];15:03:15] [DATASPACES-WARNING] No file is transferred from USER space at file:///opt/proactive/ProActiveWorkflowsScheduling-linux-x64-6.1.0/data/defaultuser/vialef for selector (transferFromUserSpace-INCLUDES{1136637329/pasolve_t1.rdata}-EXCLUDES{})

[[email protected];15:03:15] Error in ifelse(file.exists("1136637329/pasolve_t1.rdata"), load("1136637329/pasolve_t1.rdata"), :
Could not find PASolve environment file : 1136637329/pasolve_t1.rdata

Erreur dans unserialize(result) :
character vectors are no longer accepted by unserialize()

{noformat}

NullPointerException in PARScriptEngine.eval()

Original issue created by Vladimir Bodnartchouk on 12, Nov 2014 at 11:24 AM - PRC-35


tests.TestStopInScript > test STANDARD_ERROR
    log4j:WARN No appenders could be found for logger (org.ow2.proactive.scripting.Script).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

tests.TestResultDefault > testResult STANDARD_ERROR
    java.lang.NullPointerException
        at org.ow2.parscript.RexpConvert.asMap(RexpConvert.java:202)
        at org.ow2.parscript.PARScriptEngine.eval(PARScriptEngine.java:163)
        at org.ow2.parscript.PARScriptEngine.eval(PARScriptEngine.java:205)
        at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
        at org.ow2.proactive.scripting.Script.execute(Script.java:322)
        at org.ow2.proactive.scripting.Script.execute(Script.java:288)
        at tests.TestResultDefault.testResult(TestResultDefault.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
Gradle Test Executor 1 finished executing tests.
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69)
        at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
        at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
        at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355)
        at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

improve Dependency Analysis for functions defined in R Packages

Original issue created by Fabien Viale on 17, Oct 2014 at 12:14 PM - PRC-16


Currently, when the dependency analysis checked finds a variable defined inside a package, the definition of the function, variable etc is embedded in the source package and transfered to the worker node.

It would be cleaner not to transfer it and instead simply import the target package before executing the task in the worker

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.