LCOGT / mop

Microlensing Observation Portal
GNU General Public License v3.0
0 stars 7 forks source link

Active obs division by zero error #190

Closed rachel3834 closed 1 month ago

rachel3834 commented 1 month ago

Active Obs page is reporting server 500 errors with the logging output:

mop-d8f864b67-wc7rj mop Internal Server Error: /activeobs/
mop-d8f864b67-wc7rj mop Traceback (most recent call last):
mop-d8f864b67-wc7rj mop   File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
mop-d8f864b67-wc7rj mop     response = get_response(request)
mop-d8f864b67-wc7rj mop   File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 199, in _get_response
mop-d8f864b67-wc7rj mop     response = self.process_exception_by_middleware(e, request)
mop-d8f864b67-wc7rj mop   File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 362, in process_exception_by_middleware
mop-d8f864b67-wc7rj mop     response = middleware_method(request, exception)
mop-d8f864b67-wc7rj mop   File "/usr/local/lib/python3.10/site-packages/tom_common/middleware.py", line 29, in process_exception
mop-d8f864b67-wc7rj mop     raise exception
mop-d8f864b67-wc7rj mop   File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
mop-d8f864b67-wc7rj mop     response = wrapped_callback(request, *callback_args, **callback_kwargs)
mop-d8f864b67-wc7rj mop   File "/usr/local/lib/python3.10/site-packages/django/views/generic/base.py", line 104, in view
mop-d8f864b67-wc7rj mop     return self.dispatch(request, *args, **kwargs)
mop-d8f864b67-wc7rj mop   File "/usr/local/lib/python3.10/site-packages/django/views/generic/base.py", line 143, in dispatch
mop-d8f864b67-wc7rj mop     return handler(request, *args, **kwargs)
mop-d8f864b67-wc7rj mop   File "/usr/local/lib/python3.10/site-packages/django/views/generic/list.py", line 174, in get
mop-d8f864b67-wc7rj mop     context = self.get_context_data()
mop-d8f864b67-wc7rj mop   File "/mop/mop/views.py", line 186, in get_context_data
mop-d8f864b67-wc7rj mop     config['nvisits'] = str(int(len(config['exposure_times'])/len(unique_configs)))
mop-d8f864b67-wc7rj mop ZeroDivisionError: division by zero
mop-d8f864b67-wc7rj mop 127.0.0.1 - - [04/Sep/2024:23:05:46 +0000] "GET /activeobs/ HTTP/1.1" 500 145 "https://mop.lco.global/targets/45167/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
rachel3834 commented 1 month ago

This was caused by the number of unique instrument configurations returning a zero-length array, which was in turn caused by obs control not having full handling code for spectroscopic observations.
I've fixed this issue by properly handling both imaging and spectroscopic observation request dictionaries.