#ignite-965: IgniteCompute.affinityRun nodejs run script on node with key.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/4a1db957 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/4a1db957 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/4a1db957 Branch: refs/heads/ignite-965 Commit: 4a1db957c59a8cf25dd443b3f77016db7e1519e7 Parents: eb5cc43 Author: ivasilinets <ivasilin...@gridgain.com> Authored: Sun Jun 21 19:45:43 2015 +0300 Committer: ivasilinets <ivasilin...@gridgain.com> Committed: Sun Jun 21 19:45:43 2015 +0300 ---------------------------------------------------------------------- .../compute/IgniteComputeCommandHandler.java | 23 +++++++++---- .../rest/request/RestComputeRequest.java | 34 ++++++++++++++++++++ modules/nodejs/src/main/js/compute.js | 8 +++-- .../ignite/internal/NodeJsComputeSelfTest.java | 7 +--- modules/nodejs/src/test/js/test-compute.js | 14 +++++++- .../http/jetty/GridJettyRestHandler.java | 2 ++ 6 files changed, 73 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4a1db957/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeCommandHandler.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeCommandHandler.java index b48e2d4..f3da040 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeCommandHandler.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/compute/IgniteComputeCommandHandler.java @@ -24,6 +24,8 @@ import org.apache.ignite.internal.processors.rest.handlers.*; import org.apache.ignite.internal.processors.rest.request.*; import org.apache.ignite.internal.util.future.*; import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; +import org.apache.ignite.resources.*; import javax.script.*; import java.util.*; @@ -57,12 +59,21 @@ public class IgniteComputeCommandHandler extends GridRestCommandHandlerAdapter { assert SUPPORTED_COMMANDS.contains(req.command()); - try { - ctx.scripting().runJS(((RestComputeRequest) req).function()); - } - catch (ScriptException e) { - throw new IgniteException(e); - } + final RestComputeRequest req0 = (RestComputeRequest) req; + + ctx.grid().compute().affinityRun(req0.cacheName(), req0.key(), new IgniteRunnable() { + @IgniteInstanceResource + private Ignite ignite; + + @Override public void run() { + try { + ((IgniteKernal)ignite).context().scripting().runJS(req0.function()); + } + catch (ScriptException e) { + throw new IgniteException(e); + } + } + }); return new GridFinishedFuture<>(new GridRestResponse("AFFINITY RUN " + req)); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4a1db957/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeRequest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeRequest.java index b046d78..809947e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeRequest.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/RestComputeRequest.java @@ -24,6 +24,12 @@ public class RestComputeRequest extends GridRestRequest { /** Java script function. */ private String func; + /** Cache name. */ + private String cacheName; + + /** Key. */ + private Object key; + /** * @return Java script function. */ @@ -37,4 +43,32 @@ public class RestComputeRequest extends GridRestRequest { public void function(String func) { this.func = func; } + + /** + * @return Cache name. + */ + public String cacheName() { + return cacheName; + } + + /** + * @param cacheName Cache name. + */ + public void cacheName(String cacheName) { + this.cacheName = cacheName; + } + + /** + * @param key Key. + */ + public void key(Object key) { + this.key = key; + } + + /** + * @return Key. + */ + public Object key() { + return key; + } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4a1db957/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 d68b6ef..2ab68eb 100644 --- a/modules/nodejs/src/main/js/compute.js +++ b/modules/nodejs/src/main/js/compute.js @@ -33,13 +33,17 @@ function Compute(server) { /** * @this {Compute} + * @param {String} cacheName Cache name. + * @param {String} key Key. * @param {Compute~runnable} runnable Function without parameters + * @param {Cache~noValue} callback Callback */ -Compute.prototype.affinityRun = function(runnable, callback) { +Compute.prototype.affinityRun = function(cacheName, key, runnable, callback) { var f = runnable.toString(); var qs = require('querystring'); f = qs.escape(f); - this._server.runCommand("affrun", [Server.pair("func", f)], callback); + this._server.runCommand("affrun", [Server.pair("cacheName", cacheName), + Server.pair("key", key), Server.pair("func", f)], callback); } exports.Compute = Compute; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4a1db957/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java index 500e6a2..bd66b1b 100644 --- a/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java +++ b/modules/nodejs/src/test/java/org/apache/ignite/internal/NodeJsComputeSelfTest.java @@ -28,7 +28,7 @@ public class NodeJsComputeSelfTest extends NodeJsAbstractTest { /** {@inheritDoc} */ @Override protected void beforeTestsStarted() throws Exception { - startGrid(0); + startGrids(2); } /** {@inheritDoc} */ @@ -36,11 +36,6 @@ public class NodeJsComputeSelfTest extends NodeJsAbstractTest { stopAllGrids(); } - /** {@inheritDoc} */ - @Override protected void beforeTest() throws Exception { - grid(0).cache(NodeJsAbstractTest.CACHE_NAME).removeAll(); - } - /** * @throws Exception If failed. */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4a1db957/modules/nodejs/src/test/js/test-compute.js ---------------------------------------------------------------------- diff --git a/modules/nodejs/src/test/js/test-compute.js b/modules/nodejs/src/test/js/test-compute.js index 30ff686..f7eb9b2 100644 --- a/modules/nodejs/src/test/js/test-compute.js +++ b/modules/nodejs/src/test/js/test-compute.js @@ -28,13 +28,25 @@ testCompute = function() { } function onStart(error, ignite) { + var cache = ignite.cache("mycache"); + + var params = {"key0" : "val0"} + + for (var i = 0; i < 1000; ++i) + params["key" + i] = "val" + i; + + cache.putAll(params, onPut.bind(null, ignite)) + +} + +function onPut(ignite, error) { var comp = ignite.compute(); var f = function () { print("Hello world!"); } - comp.affinityRun(f, onError.bind(null)); + comp.affinityRun("mycache", "key999", f, onError.bind(null)); } function onError(error, res) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4a1db957/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java ---------------------------------------------------------------------- diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java index a9a5b9d..8d3f018 100644 --- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java +++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java @@ -452,6 +452,8 @@ public class GridJettyRestHandler extends AbstractHandler { RestComputeRequest restReq0 = new RestComputeRequest(); restReq0.function((String)params.get("func")); + restReq0.cacheName((String)params.get("cacheName")); + restReq0.key(params.get("key")); restReq = restReq0; break;