You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2017/08/21 11:42:11 UTC
ignite git commit: IGNITE-6127 Implemented GZip data between
web-agent and web server.
Repository: ignite
Updated Branches:
refs/heads/master 918c409f5 -> 90f4d4dfd
IGNITE-6127 Implemented GZip data between web-agent and web server.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/90f4d4df
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/90f4d4df
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/90f4d4df
Branch: refs/heads/master
Commit: 90f4d4dfdd6f8d99a8dd1ea9a80396e0c749d8cc
Parents: 918c409
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Mon Aug 21 18:42:08 2017 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Mon Aug 21 18:42:08 2017 +0700
----------------------------------------------------------------------
.../node/VisorNodeDataCollectorTaskResult.java | 29 ++++++++++++++++++++
modules/web-console/backend/app/agentSocket.js | 29 +++++++++++++++-----
.../agent/handlers/AbstractListener.java | 21 ++++++++++++++
.../ignite/console/agent/rest/RestResult.java | 25 +++++++++++++++--
4 files changed, 94 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/90f4d4df/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
index 093e867..c1e2f1f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorNodeDataCollectorTaskResult.java
@@ -271,6 +271,35 @@ public class VisorNodeDataCollectorTaskResult extends VisorDataTransferObject {
return persistenceMetricsEx;
}
+ /**
+ * Add specified results.
+ *
+ * @param res Results to add.
+ */
+ public void add(VisorNodeDataCollectorTaskResult res) {
+ assert res != null;
+
+ active = active || res.isActive();
+ unhandledEx.putAll(res.getUnhandledEx());
+ gridNames.putAll(res.getGridNames());
+ topVersions.putAll(res.getTopologyVersions());
+ taskMonitoringEnabled.putAll(res.isTaskMonitoringEnabled());
+ errCnts.putAll(res.getErrorCounts());
+ evts.addAll(res.getEvents());
+ evtsEx.putAll(res.getEventsEx());
+ memoryMetrics.putAll(res.getMemoryMetrics());
+ memoryMetricsEx.putAll(res.getMemoryMetricsEx());
+ caches.putAll(res.getCaches());
+ cachesEx.putAll(res.getCachesEx());
+ igfss.putAll(res.getIgfss());
+ igfsEndpoints.putAll(res.getIgfsEndpoints());
+ igfssEx.putAll(res.getIgfssEx());
+ readyTopVers.putAll(res.getReadyAffinityVersions());
+ pendingExchanges.putAll(res.getPendingExchanges());
+ persistenceMetrics.putAll(res.getPersistenceMetrics());
+ persistenceMetricsEx.putAll(res.getPersistenceMetricsEx());
+ }
+
/** {@inheritDoc} */
@Override protected void writeExternalData(ObjectOutput out) throws IOException {
out.writeBoolean(active);
http://git-wip-us.apache.org/repos/asf/ignite/blob/90f4d4df/modules/web-console/backend/app/agentSocket.js
----------------------------------------------------------------------
diff --git a/modules/web-console/backend/app/agentSocket.js b/modules/web-console/backend/app/agentSocket.js
index 0853339..489d145 100644
--- a/modules/web-console/backend/app/agentSocket.js
+++ b/modules/web-console/backend/app/agentSocket.js
@@ -24,7 +24,7 @@
*/
module.exports = {
implements: 'agent-socket',
- inject: ['require(lodash)']
+ inject: ['require(lodash)', 'require(zlib)']
};
/**
@@ -79,9 +79,10 @@ class Command {
/**
* @param _
+ * @param zlib
* @returns {AgentSocket}
*/
-module.exports.factory = function(_) {
+module.exports.factory = function(_, zlib) {
/**
* Connected agent descriptor.
*/
@@ -131,11 +132,25 @@ module.exports.factory = function(_) {
*/
emitEvent(event, ...args) {
return new Promise((resolve, reject) =>
- this._emit(event, args, (error, res) => {
- if (error)
- return reject(error);
-
- resolve(res);
+ this._emit(event, args, (resErr, res) => {
+ if (resErr)
+ return reject(resErr);
+
+ if (res.zipped) {
+ // TODO IGNITE-6127 Temporary solution until GZip support for socket.io-client-java.
+ // See: https://github.com/socketio/socket.io-client-java/issues/312
+ // We can GZip manually for now.
+ zlib.gunzip(new Buffer(res.data, 'base64'), (unzipErr, unzipped) => {
+ if (unzipErr)
+ return reject(unzipErr);
+
+ res.data = unzipped.toString();
+
+ resolve(res);
+ });
+ }
+ else
+ resolve(res);
})
);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/90f4d4df/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/AbstractListener.java
----------------------------------------------------------------------
diff --git a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/AbstractListener.java b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/AbstractListener.java
index 987dac9..faf864b 100644
--- a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/AbstractListener.java
+++ b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/handlers/AbstractListener.java
@@ -19,11 +19,15 @@ package org.apache.ignite.console.agent.handlers;
import io.socket.client.Ack;
import io.socket.emitter.Emitter;
+import java.io.ByteArrayOutputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.zip.GZIPOutputStream;
+import org.apache.commons.codec.binary.Base64OutputStream;
+import org.apache.ignite.console.agent.rest.RestResult;
import org.apache.log4j.Logger;
import static org.apache.ignite.console.agent.AgentUtils.removeCallback;
@@ -66,6 +70,23 @@ abstract class AbstractListener implements Emitter.Listener {
try {
Object res = execute(params);
+ // TODO IGNITE-6127 Temporary solution until GZip support for socket.io-client-java.
+ // See: https://github.com/socketio/socket.io-client-java/issues/312
+ // We can GZip manually for now.
+ if (res instanceof RestResult) {
+ RestResult restRes = (RestResult) res;
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
+ Base64OutputStream b64os = new Base64OutputStream(baos);
+ GZIPOutputStream gzip = new GZIPOutputStream(b64os);
+
+ gzip.write(restRes.getData().getBytes());
+
+ gzip.close();
+
+ restRes.zipData(baos.toString());
+ }
+
cb.call(null, toJSON(res));
} catch (Exception e) {
cb.call(e, null);
http://git-wip-us.apache.org/repos/asf/ignite/blob/90f4d4df/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestResult.java
----------------------------------------------------------------------
diff --git a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestResult.java b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestResult.java
index 5beeee7..962ffb6 100644
--- a/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestResult.java
+++ b/modules/web-console/web-agent/src/main/java/org/apache/ignite/console/agent/rest/RestResult.java
@@ -22,13 +22,16 @@ package org.apache.ignite.console.agent.rest;
*/
public class RestResult {
/** REST http code. */
- private final int status;
+ private int status;
/** The field contains description of error if server could not handle the request. */
- private final String error;
+ private String error;
/** The field contains result of command. */
- private final String data;
+ private String data;
+
+ /** Flag of zipped data. */
+ private boolean zipped;
/**
* @param status REST http code.
@@ -78,4 +81,20 @@ public class RestResult {
public String getData() {
return data;
}
+
+ /**
+ * @param data Set zipped data.
+ */
+ public void zipData(String data) {
+ zipped = true;
+
+ this.data = data;
+ }
+
+ /**
+ * @return {@code true if data is zipped and Base64 encoded.}
+ */
+ public boolean isZipped() {
+ return zipped;
+ }
}