Minor fixes. (cherry picked from commit 684dc7b)
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d0c0042d Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d0c0042d Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d0c0042d Branch: refs/heads/master Commit: d0c0042d3fbdade16e719cfb91acebae3f10bf04 Parents: f1aa86f Author: Andrey Novikov <anovi...@gridgain.com> Authored: Thu Mar 2 16:36:43 2017 +0700 Committer: Alexey Kuznetsov <akuznet...@apache.org> Committed: Tue Mar 21 09:57:44 2017 +0700 ---------------------------------------------------------------------- modules/web-console/backend/app/agent.js | 36 ++++++++++++++++++++ modules/web-console/backend/app/browser.js | 28 +++++++++++++++ .../frontend/app/modules/sql/sql.controller.js | 1 - .../demo/service/DemoCachesLoadService.java | 26 ++++++++++++++ 4 files changed, 90 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/d0c0042d/modules/web-console/backend/app/agent.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/app/agent.js b/modules/web-console/backend/app/agent.js index b09e10a..f65eabb 100644 --- a/modules/web-console/backend/app/agent.js +++ b/modules/web-console/backend/app/agent.js @@ -339,6 +339,42 @@ module.exports.factory = function(_, fs, path, JSZip, socketio, settings, mongo, } /** + * Collect running queries + * @param {Boolean} demo Is need run command on demo node. + * @param {Number} duration minimum duration time of running queries. + * @returns {Promise} + */ + queryCollectRunning(demo, duration) { + const cmd = new Command(demo, 'exe') + .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask') + .addParam('p1', '') + .addParam('p2', 'org.apache.ignite.internal.visor.query.VisorCollectRunningQueriesTask') + .addParam('p3', 'java.lang.Long') + .addParam('p4', duration); + + return this.executeRest(cmd); + } + + /** + * Cancel running query. + * @param {Boolean} demo Is need run command on demo node. + * @param {String} nid Node id. + * @param {Number} queryId query id to cancel. + * @returns {Promise} + */ + queryCancel(demo, nid, queryId) { + const cmd = new Command(demo, 'exe') + .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask') + .addParam('p1', nid) + .addParam('p2', 'org.apache.ignite.internal.visor.query.VisorCancelQueriesTask') + .addParam('p3', 'java.util.Collection') + .addParam('p4', 'java.lang.Long') + .addParam('p5', queryId); + + return this.executeRest(cmd); + } + + /** * @param {Boolean} demo Is need run command on demo node. * @param {String} cacheName Cache name. * @returns {Promise} http://git-wip-us.apache.org/repos/asf/ignite/blob/d0c0042d/modules/web-console/backend/app/browser.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/app/browser.js b/modules/web-console/backend/app/browser.js index d272c70..00ae751 100644 --- a/modules/web-console/backend/app/browser.js +++ b/modules/web-console/backend/app/browser.js @@ -175,6 +175,34 @@ module.exports.factory = (_, socketio, agentMgr, configure) => { .catch((err) => cb(_errorToJson(err))); }); + // Collect running queries from all nodes in grid. + socket.on('node:query:running', (duration, cb) => { + agentMgr.findAgent(accountId()) + .then((agent) => agent.queryCollectRunning(demo, duration)) + .then((data) => { + + if (data.finished) + return cb(null, data.result); + + cb(_errorToJson(data.error)); + }) + .catch((err) => cb(_errorToJson(err))); + }); + + // Cancel running query by query id on node. + socket.on('node:query:cancel', (nid, queryId, cb) => { + agentMgr.findAgent(accountId()) + .then((agent) => agent.queryCancel(demo, nid, queryId)) + .then((data) => { + + if (data.finished) + return cb(null, data.result); + + cb(_errorToJson(data.error)); + }) + .catch((err) => cb(_errorToJson(err))); + }); + // Return cache metadata from all nodes in grid. socket.on('node:cache:metadata', (cacheName, cb) => { agentMgr.findAgent(accountId()) http://git-wip-us.apache.org/repos/asf/ignite/blob/d0c0042d/modules/web-console/frontend/app/modules/sql/sql.controller.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/sql/sql.controller.js b/modules/web-console/frontend/app/modules/sql/sql.controller.js index 2fd089d..7ded2d5 100644 --- a/modules/web-console/frontend/app/modules/sql/sql.controller.js +++ b/modules/web-console/frontend/app/modules/sql/sql.controller.js @@ -20,7 +20,6 @@ import cacheMetadataTemplateUrl from 'views/sql/cache-metadata.tpl.pug'; import chartSettingsTemplateUrl from 'views/sql/chart-settings.tpl.pug'; import showQueryTemplateUrl from 'views/templates/message.tpl.pug'; - // Time line X axis descriptor. const TIME_LINE = {value: -1, type: 'java.sql.Date', label: 'TIME_LINE'}; http://git-wip-us.apache.org/repos/asf/ignite/blob/d0c0042d/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoCachesLoadService.java ---------------------------------------------------------------------- diff --git a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoCachesLoadService.java b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoCachesLoadService.java index fbfa2ae..5f7823b 100644 --- a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoCachesLoadService.java +++ b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/demo/service/DemoCachesLoadService.java @@ -33,6 +33,7 @@ import org.apache.ignite.cache.QueryEntity; import org.apache.ignite.cache.QueryIndex; import org.apache.ignite.cache.QueryIndexType; import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction; +import org.apache.ignite.cache.query.annotations.QuerySqlFunction; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.console.demo.AgentDemoUtils; import org.apache.ignite.console.demo.model.Car; @@ -209,6 +210,7 @@ public class DemoCachesLoadService implements Service { ccfg.setQueryDetailMetricsSize(10); ccfg.setStartSize(100); ccfg.setStatisticsEnabled(true); + ccfg.setSqlFunctionClasses(SQLFunctions.class); return ccfg; } @@ -453,4 +455,28 @@ public class DemoCachesLoadService implements Service { if (ignite.log().isDebugEnabled()) ignite.log().debug("DEMO: Finished cars population."); } + + /** + * Utility class with custom SQL functions. + */ + public static class SQLFunctions { + /** + * Sleep function to simulate long running queries. + * + * @param x Time to sleep. + * @return Return specified argument. + */ + @QuerySqlFunction + public static long sleep(long x) { + if (x >= 0) + try { + Thread.sleep(x); + } + catch (InterruptedException ignored) { + // No-op. + } + + return x; + } + } }