fix: retry failed setObject calls

v1.18.x
Barış Soner Uşaklı 5 years ago
parent d7b2f163f2
commit 2c9e865763

@ -15,12 +15,19 @@ module.exports = function (module) {
} }
const writeData = helpers.serializeData(data); const writeData = helpers.serializeData(data);
if (isArray) { try {
var bulk = module.client.collection('objects').initializeUnorderedBulkOp(); if (isArray) {
key.forEach(key => bulk.find({ _key: key }).upsert().updateOne({ $set: writeData })); var bulk = module.client.collection('objects').initializeUnorderedBulkOp();
await bulk.execute(); key.forEach(key => bulk.find({ _key: key }).upsert().updateOne({ $set: writeData }));
} else { await bulk.execute();
await module.client.collection('objects').updateOne({ _key: key }, { $set: writeData }, { upsert: true, w: 1 }); } else {
await module.client.collection('objects').updateOne({ _key: key }, { $set: writeData }, { upsert: true, w: 1 });
}
} catch (err) {
if (err && err.message.startsWith('E11000 duplicate key error')) {
return await module.setObject(key, data);
}
throw err;
} }
cache.delObjectCache(key); cache.delObjectCache(key);

Loading…
Cancel
Save