You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/06/23 19:47:31 UTC

[05/20] incubator-ignite git commit: #ignite-965: codestyle IgniteComputeTaskCommandHandler.

#ignite-965: codestyle IgniteComputeTaskCommandHandler.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/57e9845a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/57e9845a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/57e9845a

Branch: refs/heads/ignite-965
Commit: 57e9845a56ebba443b83f42c2348f6998e511ba3
Parents: 30ec9f7
Author: ivasilinets <iv...@gridgain.com>
Authored: Tue Jun 23 19:40:14 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Tue Jun 23 19:40:14 2015 +0300

----------------------------------------------------------------------
 .../IgniteComputeTaskCommandHandler.java        | 100 ++++++++++---------
 .../scripting/IgniteScriptProcessor.java        |   2 +-
 modules/nodejs/src/main/js/compute.js           |  10 --
 3 files changed, 52 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/57e9845a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
index 33f4893..33cd45b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeTaskCommandHandler.java
@@ -56,29 +56,39 @@ public class IgniteComputeTaskCommandHandler extends GridRestCommandHandlerAdapt
     @Override public IgniteInternalFuture<GridRestResponse> handleAsync(GridRestRequest req) {
         assert req != null;
 
-        assert req instanceof RestComputeTaskRequest : "Invalid type of compute request.";
+        assert req instanceof RestComputeTaskRequest : "Invalid type of compute task request.";
 
         assert SUPPORTED_COMMANDS.contains(req.command());
 
         final RestComputeTaskRequest req0 = (RestComputeTaskRequest) req;
 
-        Object res = ctx.grid().compute().execute(new JsTask(req0.mapFunc(), req0.argument(), req0.reduceFunc(), ctx), null);
+        Object execRes = ctx.grid().compute().execute(
+            new JsTask(req0.mapFunc(), req0.argument(), req0.reduceFunc(), ctx), null);
 
-        return new GridFinishedFuture<>(new GridRestResponse(res));
+        return new GridFinishedFuture<>(new GridRestResponse(execRes));
     }
 
+    /**
+     * JS Compute Task.
+     */
     private static class JsTask extends ComputeTaskAdapter<String, Object> {
         /** Mapping function. */
         private String mapFunc;
 
+        /** Reduce function. */
         private String reduceFunc;
 
-        /** Grid kernal context. */
+        /** Kernal context. */
         private GridKernalContext ctx;
 
+        /** Map function argument. */
         private String arg;
 
         /**
+         * @param mapFunc Map function.
+         * @param arg Map function argument.
+         * @param reduceFunc Reduce function.
+         * @param ctx Kernal context.
          */
         public JsTask(String mapFunc, String arg, String reduceFunc, GridKernalContext ctx) {
             this.mapFunc = mapFunc;
@@ -91,61 +101,30 @@ public class IgniteComputeTaskCommandHandler extends GridRestCommandHandlerAdapt
         @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> nodes, String arg) {
             Map<ComputeJob, ClusterNode> map = new HashMap<>();
 
-            String nodesIds = "[";
-
-            for (ClusterNode node : nodes)
-                nodesIds += "\""  + node.id().toString() + "\"" + ",";
-
-            nodesIds = nodesIds.substring(0, nodesIds.length() - 1) + "]";
-
-            String newMap = new String("function () {\n" +
-                "   var res = [];\n" +
-                "   var resCont = function(f, args, nodeId) {\n" +
-                "       res.push([f.toString(), args, nodeId])\n" +
-                "   }\n" +
-                "   var locF = " + mapFunc + "; \n locF(" +
-                    nodesIds + ", " +
-                "\"" + this.arg + "\"" +
-                ", resCont.bind(null)" + ");\n" +
-                "   return res;\n" +
-                "}");
-
-            List mapRes = (List)ctx.scripting().runJSFunction(newMap);
-
-            for (Object arr : mapRes) {
-                Object[] nodeTask = ((List)arr).toArray();
-
-                final String func = (String)nodeTask[0];
-
-                final List argv = (List) nodeTask[1];
+            List jsMapResult = (List)ctx.scripting().runJSFunction(wrapMapperFunction(nodes));
 
-                String nodeIdStr = (String) nodeTask[2];
+            for (Object jobMapping : jsMapResult) {
+                List task = (List)jobMapping;
 
-                UUID nodeId = UUID.fromString(nodeIdStr);
+                final String func = (String)task.get(0);
+                final List argv = (List)task.get(1);
+                String nodeId = (String)task.get(2);
 
-                ClusterNode node = ctx.grid().cluster().node(nodeId);
+                ClusterNode node = ctx.grid().cluster().node(UUID.fromString(nodeId));
 
                 map.put(new ComputeJobAdapter() {
-                    /** Ignite. */
                     @IgniteInstanceResource
                     private Ignite ignite;
 
                     @Override public Object execute() throws IgniteException {
-                        System.out.println("Compute job on node " + ignite.cluster().localNode().id());
-                        try {
-                            String[] argv1 = new String[argv.size()];
-
-                            for (int i = 0; i < argv1.length; ++i)
-                                argv1[i] = "\"" + argv.get(i).toString() + "\"";
-
-                            return ctx.scripting().runJSFunction(func, argv1);
-                        }
-                        catch (Exception e) {
-                            throw new IgniteException(e);
-                        }
+                        String[] argv1 = new String[argv.size()];
+
+                        for (int i = 0; i < argv1.length; ++i)
+                            argv1[i] = "\"" + argv.get(i).toString() + "\"";
+
+                        return ctx.scripting().runJSFunction(func, argv1);
                     }
                 }, node);
-
             }
 
             return map;
@@ -158,7 +137,30 @@ public class IgniteComputeTaskCommandHandler extends GridRestCommandHandlerAdapt
             for (ComputeJobResult res : results)
                 data.add(res.getData());
 
-            return ctx.scripting().runJSFunction(reduceFunc, new String[]{data.toString()});
+            return ctx.scripting().runJSFunction(reduceFunc, data.toString());
+        }
+
+        /**
+         * @param nodes Cluster nodes.
+         * @return Script running map function.
+         */
+        private String wrapMapperFunction(List<ClusterNode> nodes) {
+            List<String> ids = new ArrayList<>();
+
+            for (ClusterNode node : nodes)
+                ids.add("\"" + node.id().toString() + "\"");
+
+            String sep = System.getProperty("line.separator");
+
+            return "function () {" + sep +
+                "       var res = [];" + sep +
+                "       var emitFunc = function(f, args, nodeId) {" + sep +
+                "           res.push([f.toString(), args, nodeId])" + sep +
+                "       }" + sep +
+                "       var f = " + mapFunc + ";" + sep +
+                "       f(" + ids + ", " + "\"" + this.arg + "\"" + ", emitFunc.bind(null)" + ");" + sep +
+                "       return res;" + sep +
+                "   }";
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/57e9845a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java
index 094373c..1a72920 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/scripting/IgniteScriptProcessor.java
@@ -61,7 +61,7 @@ public class IgniteScriptProcessor extends GridProcessorAdapter {
      * @return Script result.
      * @throws ScriptException If script failed.
      */
-    public Object runJSFunction(String script, String[] args) throws IgniteException {
+    public Object runJSFunction(String script, String... args) throws IgniteException {
         try {
             return jsEngine.eval(callJsFunction(script, args));
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/57e9845a/modules/nodejs/src/main/js/compute.js
----------------------------------------------------------------------
diff --git a/modules/nodejs/src/main/js/compute.js b/modules/nodejs/src/main/js/compute.js
index 7f45f5b..e452847 100644
--- a/modules/nodejs/src/main/js/compute.js
+++ b/modules/nodejs/src/main/js/compute.js
@@ -104,14 +104,4 @@ Compute.prototype.execute = function(map, reduce, arg, callback) {
  * @returns {string} Result
  */
 
-/**
- * @this{Compute}
- * @param {MapFunction} map Map function
- * @param {ReduceFunction} reduce Reduce function
- * @param {string} arg Argument
- * @param {onGet} callback Callback
- */
-Compute.prototype._mapWrapper = function(map) {
-
-}
 exports.Compute = Compute