2015-09-21T22:57:59.11305 File "/ligo/apps/linux-x86_64/guardian-1485/lib/python2.7/site-packages/guardian/worker.py", line 459, in run
2015-09-21T22:57:59.11306 retval = statefunc()
2015-09-21T22:57:59.11306 File "/opt/rtcds/userapps/release/sys/common/guardian/SYS_DIAG.py", line 178, in run
2015-09-21T22:57:59.11307 return SYSDIAG.run_all()
2015-09-21T22:57:59.11307 File "/opt/rtcds/userapps/release/sys/common/guardian/SYS_DIAG.py", line 151, in run_all
2015-09-21T22:57:59.11308 ret &= self.run(name)
2015-09-21T22:57:59.11308 File "/opt/rtcds/userapps/release/sys/common/guardian/SYS_DIAG.py", line 136, in run
2015-09-21T22:57:59.11310 for msg in self[name](**kwargs):
2015-09-21T22:57:59.11311 File "/opt/rtcds/userapps/release/sys/h1/guardian/DIAG_MAIN.py", line 66, in PSL_ISS
2015-09-21T22:57:59.11311 diff_pwr = avg(-10, 'PSL-ISS_DIFFRACTION_AVG')
2015-09-21T22:57:59.11312 File "/ligo/apps/linux-x86_64/cdsutils-497/lib/python2.7/site-packages/cdsutils/avg.py", line 67, in avg
2015-09-21T22:57:59.11312 for buf in conn.iterate(*args):
2015-09-21T22:57:59.11313 RuntimeError: Requested data were not found.
Reloaded.
evan.hall@LIGO.ORG - 15:25, Wednesday 23 September 2015 (21858)
This is a fine hack solution for this one case, but please don't propogate this around to all guardian NDS calls. Let me come up with a way to better handle it within the guardian infrastructure, so we don't end up with a lot of cruft in the guardian user code.
Appears to be a standard NDS2 burp:
2015-09-21T22:57:59.11305 File "/ligo/apps/linux-x86_64/guardian-1485/lib/python2.7/site-packages/guardian/worker.py", line 459, in run
2015-09-21T22:57:59.11306 retval = statefunc()
2015-09-21T22:57:59.11306 File "/opt/rtcds/userapps/release/sys/common/guardian/SYS_DIAG.py", line 178, in run
2015-09-21T22:57:59.11307 return SYSDIAG.run_all()
2015-09-21T22:57:59.11307 File "/opt/rtcds/userapps/release/sys/common/guardian/SYS_DIAG.py", line 151, in run_all
2015-09-21T22:57:59.11308 ret &= self.run(name)
2015-09-21T22:57:59.11308 File "/opt/rtcds/userapps/release/sys/common/guardian/SYS_DIAG.py", line 136, in run
2015-09-21T22:57:59.11310 for msg in self[name](**kwargs):
2015-09-21T22:57:59.11311 File "/opt/rtcds/userapps/release/sys/h1/guardian/DIAG_MAIN.py", line 66, in PSL_ISS
2015-09-21T22:57:59.11311 diff_pwr = avg(-10, 'PSL-ISS_DIFFRACTION_AVG')
2015-09-21T22:57:59.11312 File "/ligo/apps/linux-x86_64/cdsutils-497/lib/python2.7/site-packages/cdsutils/avg.py", line 67, in avg
2015-09-21T22:57:59.11312 for buf in conn.iterate(*args):
2015-09-21T22:57:59.11313 RuntimeError: Requested data were not found.
Reloaded.
Having the guardian go into error because of an NDS2 hiccough is kind of irritating.
Based on this StackExchange answer, I added the following handler function to the DIAG MAIN guardian:
def try_avg(*args):
while True:
try:
q = avg(*args)
except RuntimeError:
log('Encountered runtime error while trying to average {}'.format(args[1]))
continue
break
return q
where avg is the cdsutils.avg function.
This is now used for the ISS diffraction and the ESD railing diag tests. If we like it, we should consider propagating it to the rest of the guardian.
This is a fine hack solution for this one case, but please don't propogate this around to all guardian NDS calls. Let me come up with a way to better handle it within the guardian infrastructure, so we don't end up with a lot of cruft in the guardian user code.