From 41e2f9a2abdfe39b26898df0e5758212eebc9c74 Mon Sep 17 00:00:00 2001 From: Simon Zeyer Date: Thu, 26 Sep 2024 08:42:58 +0000 Subject: [PATCH] handle exception and restart pullingafter timeout --- service.js | 73 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/service.js b/service.js index 1972a98..fd5d542 100644 --- a/service.js +++ b/service.js @@ -238,41 +238,54 @@ async function onStateChange(consumer_id, status_id){ } } +function sleep(ms) { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); +} + async function startAPI() { - let _auth = await auth() - if(_auth){ - global.logger.info('auth OK') - var _pulled_data = await pull() - while(_pulled_data !== null){ - if(_pulled_data !== null){ - if(_pulled_data.success){ - var d = _pulled_data.data - if('cluster' in d){ - pulled_data['consumer'] = d['cluster']['consumer'] - pulled_data['status'] = d['cluster']['status'] - } - if('monitor' in d){ - var m = d['monitor'][config.MONITOR_ID] - Object.entries(m).forEach(([key, value]) => { - // wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status) - if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){ - onStateChange(value.id,value.status ) + while(True){ + try{ + let _auth = await auth() + if(_auth){ + global.logger.info('auth OK') + var _pulled_data = await pull() + while(_pulled_data !== null){ + if(_pulled_data !== null){ + if(_pulled_data.success){ + var d = _pulled_data.data + if('cluster' in d){ + pulled_data['consumer'] = d['cluster']['consumer'] + pulled_data['status'] = d['cluster']['status'] } - }); - pulled_data['monitor'] = d['monitor'][config.MONITOR_ID] + if('monitor' in d){ + var m = d['monitor'][config.MONITOR_ID] + Object.entries(m).forEach(([key, value]) => { + // wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status) + if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){ + onStateChange(value.id,value.status ) + } + }); + pulled_data['monitor'] = d['monitor'][config.MONITOR_ID] + } + } + } + _pulled_data = await pull() + if(_pulled_data === null){ + global.logger.debug('_pulled_data === null, reauth') + _auth = await auth() + _pulled_data = await pull() + if(_pulled_data === null){ + global.logger.debug('_pulled_data === null after reauth, EXIT!!') + } } } } - _pulled_data = await pull() - if(_pulled_data === null){ - global.logger.debug('_pulled_data === null, reauth') - _auth = await auth() - _pulled_data = await pull() - if(_pulled_data === null){ - global.logger.debug('_pulled_data === null after reauth, EXIT!!') - } - } + }catch(err){ + console.error(err); } + await sleep(10000); + global.logger.info('auth mit API_KEY war nicht erfolgreich. Service ist gestoppt und startet nicht mehr automatisch??') } - global.logger.info('auth mit API_KEY war nicht erfolgreich. Service ist gestoppt und startet nicht mehr automatisch??') } \ No newline at end of file