From e866cebc2849b585b70b3c13a3449294b9b73128 Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Sun, 29 May 2016 19:19:32 +0200 Subject: [PATCH] Rollback user ids if key persisting public key fails --- src/service/public-key.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/service/public-key.js b/src/service/public-key.js index df2c49d..616e476 100644 --- a/src/service/public-key.js +++ b/src/service/public-key.js @@ -66,13 +66,15 @@ class PublicKey { } // delete old/unverified key and user ids with the same key id yield this.remove({ keyid:params.keyid }); + // persist new user ids + let userIds = yield this._userid.batch(params); // persist new key let r = yield this._mongo.create({ _id:params.keyid, publicKeyArmored }, DB_TYPE); if (r.insertedCount !== 1) { + // rollback user ids + yield this.remove({ keyid:params.keyid }); util.throw(500, 'Failed to persist key'); } - // persist new user ids - let userIds = yield this._userid.batch(params); // send mails to verify user ids (send only one if primary email is provided) yield this._email.sendVerifyKey({ userIds, primaryEmail, origin }); }