From 44f976b42c5d2fbedbe3e05deb4de41b54e62914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20C=C3=B4t=C3=A9?= Date: Fri, 7 Dec 2018 09:01:17 -0500 Subject: [PATCH] Fix saved objects client _processBatchQueue function to handle errors (#26763) * Fix saved objects client _processBatchQueue function to handle errors * Fix error thrown in try/catch --- .../__tests__/saved_objects_client.test.js | 15 +++++++++++++++ .../public/saved_objects/saved_objects_client.js | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/src/ui/public/saved_objects/__tests__/saved_objects_client.test.js b/src/ui/public/saved_objects/__tests__/saved_objects_client.test.js index feec586c5cb1d0..4a8de1d12b5e95 100644 --- a/src/ui/public/saved_objects/__tests__/saved_objects_client.test.js +++ b/src/ui/public/saved_objects/__tests__/saved_objects_client.test.js @@ -128,6 +128,21 @@ describe('SavedObjectsClient', () => { await savedObjectsClient.get(doc.type, doc.id); sinon.assert.calledOnce(kfetchStub); }); + + test('handles HTTP call when it fails', async () => { + kfetchStub.withArgs({ + method: 'POST', + pathname: `/api/saved_objects/_bulk_get`, + query: undefined, + body: sinon.match.any + }).rejects(new Error('Request failed')); + try { + await savedObjectsClient.get(doc.type, doc.id); + throw new Error('should have error'); + } catch (e) { + expect(e.message).to.be('Request failed'); + } + }); }); describe('#delete', () => { diff --git a/src/ui/public/saved_objects/saved_objects_client.js b/src/ui/public/saved_objects/saved_objects_client.js index ac74db7060312b..c18a7276ab804c 100644 --- a/src/ui/public/saved_objects/saved_objects_client.js +++ b/src/ui/public/saved_objects/saved_objects_client.js @@ -215,6 +215,10 @@ export class SavedObjectsClient { queueItem.resolve(foundObject); }); + }).catch((err) => { + queue.forEach((queueItem) => { + queueItem.reject(err); + }); }); }, BATCH_INTERVAL, { leading: false });