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!');
 }
 
 /**