IGNITE-10076 Web Console: Use slow 'json-bigint' parser only for queries.
diff --git a/frontend/app/modules/agent/AgentManager.service.js b/frontend/app/modules/agent/AgentManager.service.js
index 0c0d9b6..faf0672 100644
--- a/frontend/app/modules/agent/AgentManager.service.js
+++ b/frontend/app/modules/agent/AgentManager.service.js
@@ -487,8 +487,13 @@
if (cluster.secured)
this.clustersSecrets.get(cluster.id).sessionToken = res.sessionToken;
- if (res.zipped)
- return this.pool.postMessage(res.data);
+ if (res.zipped) {
+ const taskId = _.get(params, 'taskId', '');
+
+ const useBigIntJson = taskId.startsWith('query');
+
+ return this.pool.postMessage({payload: res.data, useBigIntJson});
+ }
return res;
diff --git a/frontend/app/modules/agent/decompress.worker.js b/frontend/app/modules/agent/decompress.worker.js
index 2fd294d..deffca3 100644
--- a/frontend/app/modules/agent/decompress.worker.js
+++ b/frontend/app/modules/agent/decompress.worker.js
@@ -24,11 +24,13 @@
onmessage = function(e) {
const data = e.data;
- const binaryString = atob(data); // Decode from BASE64
+ const binaryString = atob(data.payload); // Decode from BASE64
const unzipped = pako.inflate(binaryString, {to: 'string'});
- const res = bigIntJSON({storeAsString: true}).parse(unzipped);
+ const res = data.useBigIntJson
+ ? bigIntJSON({storeAsString: true}).parse(unzipped)
+ : JSON.parse(unzipped);
postMessage(_.get(res, 'result', res));
};