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 2015/09/22 04:49:51 UTC
ignite git commit: IGNITE-843 Reworked batch save metadata using
async.
Repository: ignite
Updated Branches:
refs/heads/ignite-843 2846cf7fa -> ab31b239d
IGNITE-843 Reworked batch save metadata using async.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ab31b239
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ab31b239
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ab31b239
Branch: refs/heads/ignite-843
Commit: ab31b239db0ce2906c6636a337f4794f669df42d
Parents: 2846cf7
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Tue Sep 22 09:49:48 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Tue Sep 22 09:49:48 2015 +0700
----------------------------------------------------------------------
modules/control-center-web/src/main/js/db.js | 2 +-
.../control-center-web/src/main/js/package.json | 1 +
.../src/main/js/routes/metadata.js | 65 +++++++++++---------
3 files changed, 39 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ab31b239/modules/control-center-web/src/main/js/db.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/db.js b/modules/control-center-web/src/main/js/db.js
index 2372390..321637b 100644
--- a/modules/control-center-web/src/main/js/db.js
+++ b/modules/control-center-web/src/main/js/db.js
@@ -393,7 +393,7 @@ exports.upsert = function (model, data, cb) {
exports.processed = function(err, res) {
if (err) {
- res.status(500).send(err.message);
+ res.status(500).send(err);
return false;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ab31b239/modules/control-center-web/src/main/js/package.json
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/package.json b/modules/control-center-web/src/main/js/package.json
index b8f514e..7dd73e5 100644
--- a/modules/control-center-web/src/main/js/package.json
+++ b/modules/control-center-web/src/main/js/package.json
@@ -21,6 +21,7 @@
},
"dependencies": {
"archiver": "^0.15.1",
+ "async": "1.4.2",
"body-parser": "~1.13.3",
"bootstrap-sass": "^3.3.5",
"compression": "1.5.2",
http://git-wip-us.apache.org/repos/asf/ignite/blob/ab31b239/modules/control-center-web/src/main/js/routes/metadata.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/routes/metadata.js b/modules/control-center-web/src/main/js/routes/metadata.js
index 78843d9..83d0c7b 100644
--- a/modules/control-center-web/src/main/js/routes/metadata.js
+++ b/modules/control-center-web/src/main/js/routes/metadata.js
@@ -15,6 +15,7 @@
* limitations under the License.
*/
+var async = require('async');
var router = require('express').Router();
var db = require('../db');
@@ -75,60 +76,68 @@ router.post('/list', function (req, res) {
});
function _save(metas, res) {
- var total = metas.length;
+ var savedMetas = [];
- var results = [];
-
- function saveAll() {
- if (total > 0) {
- total--;
-
- var meta = metas.pop();
+ if (metas && metas.length > 0)
+ async.forEachOf(metas, function(meta, idx, callback) {
var metaId = meta._id;
var caches = meta.caches;
if (metaId)
db.CacheTypeMetadata.update({_id: meta._id}, meta, {upsert: true}, function (err) {
- if (db.processed(err, res))
+ if (err)
+ callback(err);
+ else
db.Cache.update({_id: {$in: caches}}, {$addToSet: {metadatas: metaId}}, {multi: true}, function (err) {
- if (db.processed(err, res))
+ if (err)
+ callback(err);
+ else
db.Cache.update({_id: {$nin: caches}}, {$pull: {metadatas: metaId}}, {multi: true}, function (err) {
- if (db.processed(err, res)) {
- results.push(meta);
+ if (err)
+ callback(err);
+ else {
+ savedMetas.push(meta);
- saveAll();
+ callback();
}
});
});
});
else {
db.CacheTypeMetadata.findOne({space: meta.space, valueType: meta.valueType}, function (err, metadata) {
- if (db.processed(err, res)) {
+ if (err)
+ callback(err);
+ else
if (metadata)
- return res.status(500).send('Cache type metadata with value type: "' + metadata.valueType + '" already exist.');
+ callback('Cache type metadata with value type: "' + metadata.valueType + '" already exist.');
(new db.CacheTypeMetadata(meta)).save(function (err, metadata) {
- if (db.processed(err, res)) {
+ if (err)
+ callback(err);
+ else {
metaId = metadata._id;
db.Cache.update({_id: {$in: caches}}, {$addToSet: {metadatas: metaId}}, {multi: true}, function (err) {
- if (db.processed(err, res)) {
- results.push(metadata);
+ if (err)
+ callback(err);
+ else {
+ savedMetas.push(metadata);
- saveAll();
+ callback();
}
});
}
});
- }
- });
- }
- }
- else
- res.send(results);
- }
-
- saveAll();
+ });
+ }
+ }, function (err) {
+ if (err)
+ res.status(500).send(err);
+ else
+ res.send(savedMetas);
+ });
+ else
+ res.status(500).send('Nothing to save!');
}
/**