From: Bill Erickson Date: Thu, 7 Jun 2018 17:00:10 +0000 (-0400) Subject: LP#1768947 Ignore corrupt offline DB X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=f689437d5cc8d8906ba691ad4d65f0873b55949f;p=working%2FEvergreen.git LP#1768947 Ignore corrupt offline DB Instead of dying on page load when the offline DB fails to connect (e.g. due to a duplicate key), log the error and allow the startup sequence to complete. Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/web/js/ui/default/staff/services/env.js b/Open-ILS/web/js/ui/default/staff/services/env.js index 1406a19362..2c81e309eb 100644 --- a/Open-ILS/web/js/ui/default/staff/services/env.js +++ b/Open-ILS/web/js/ui/default/staff/services/env.js @@ -135,9 +135,14 @@ function($q, $window , $injector , egAuth, egPCRUD, egIDL) { egLovefield = $injector.get('egLovefield'); } //console.debug('About to cache a list of ' + class_ + ' objects...'); - egLovefield.isCacheGood(class_).then(function(good) { - if (!good) egLovefield.setListInOfflineCache(class_, blob.list); - }); + egLovefield.isCacheGood(class_).then( + function(good) { + if (!good) egLovefield.setListInOfflineCache(class_, blob.list); + }, + function() { + console.error('offline DB needs to be reset'); + } + ); } angular.forEach(list, function(item) {blob.map[item[pkey]()] = item}); diff --git a/Open-ILS/web/js/ui/default/staff/services/lovefield.js b/Open-ILS/web/js/ui/default/staff/services/lovefield.js index d0cd9c12ee..f50d51b547 100644 --- a/Open-ILS/web/js/ui/default/staff/services/lovefield.js +++ b/Open-ILS/web/js/ui/default/staff/services/lovefield.js @@ -76,6 +76,7 @@ angular.module('egCoreMod') // a connection will never succeed. service.cannotConnect = true; console.error('Cannot connect to offline DB: ' + err); + deferred.reject(); } ); } catch (e) { @@ -83,6 +84,7 @@ angular.module('egCoreMod') // attempt is already in progress; this can happen with PhantomJS console.error('Cannot connect to offline DB: ' + e); service.cannotConnect = true; + deferred.reject(); } service.connectPromise = deferred.promise; diff --git a/Open-ILS/web/js/ui/default/staff/services/org.js b/Open-ILS/web/js/ui/default/staff/services/org.js index 93efc44048..48bc00e12e 100644 --- a/Open-ILS/web/js/ui/default/staff/services/org.js +++ b/Open-ILS/web/js/ui/default/staff/services/org.js @@ -153,11 +153,17 @@ function($q, egEnv, egAuth, egNet , $injector) { if (here) service.cachedSettings[key] = settings[key]; }); - return egLovefield.setSettingsCache(settings).then(function() { - // resolve with cached settings if 'here', since 'settings' - // will only contain settings we had to retrieve - deferred.resolve(here ? service.cachedSettings : settings); - }); + return egLovefield.setSettingsCache(settings).then( + function() { + // resolve with cached settings if 'here', since 'settings' + // will only contain settings we had to retrieve + deferred.resolve(here ? service.cachedSettings : settings); + }, + function() { + console.error('offline db is not OK. ignoring'); + deferred.resolve(here ? service.cachedSettings : settings); + } + ); }); return deferred.promise; }