MI-DPLA / combine

Combine /kämˌbīn/ - Metadata Aggregator Platform
MIT License
26 stars 11 forks source link

Celery error with StateIO #417

Closed ghukill closed 5 years ago

ghukill commented 5 years ago

When attempting to run StateIO export, receiving following error:

combine-celery_1      | [2019-06-16 22:08:00,528: INFO/MainProcess] Received task: core.tasks.stateio_export[ea93c1c8-3cd9-48aa-933b-9cef9cded499]  
combine-celery_1      | [INFO] 2019-06-16 22:08:00,534 core.tasks.stateio_export (1385): using CombineBackgroundTask: Export State, ID #4, Celery Task ID #ea93c1c8-3cd9-48aa-933b-9cef9cded499
combine-celery_1      | [2019-06-16 22:08:00,534: INFO/ForkPoolWorker-1] using CombineBackgroundTask: Export State, ID #4, Celery Task ID #ea93c1c8-3cd9-48aa-933b-9cef9cded499
combine-celery_1      | [2019-06-16 22:08:00,538: ERROR/ForkPoolWorker-1] Task core.tasks.stateio_export[ea93c1c8-3cd9-48aa-933b-9cef9cded499] raised unexpected: TypeError('isinstance() arg 2 must be a type or tuple of types',)
combine-celery_1      | Traceback (most recent call last):
combine-celery_1      |   File "/opt/conda/envs/combine/lib/python3.5/site-packages/celery/app/trace.py", line 385, in trace_task
combine-celery_1      |     R = retval = fun(*args, **kwargs)
combine-celery_1      |   File "/opt/conda/envs/combine/lib/python3.5/site-packages/celery/app/trace.py", line 648, in __protected_call__
combine-celery_1      |     return self.run(*args, **kwargs)
combine-celery_1      |   File "/opt/combine/core/tasks.py", line 1397, in stateio_export
combine-celery_1      |     compression_format='zip')
combine-celery_1      |   File "/opt/combine/core/models/stateio.py", line 341, in export_state
combine-celery_1      |     'jobs':[Job.objects.get(pk=int(job)) if isinstance(job, [int, str]) else job for job in jobs],
combine-celery_1      |   File "/opt/combine/core/models/stateio.py", line 341, in <listcomp>
combine-celery_1      |     'jobs':[Job.objects.get(pk=int(job)) if isinstance(job, [int, str]) else job for job in jobs],
combine-celery_1      | TypeError: isinstance() arg 2 must be a type or tuple of types
ghukill commented 5 years ago

Might be related to changes here, where isinstance not drop-in replacement for check of type() in list: https://github.com/MI-DPLA/combine/pull/411/commits/69b877f574c469616ae81cb5195907ea398d0831#diff-c2112e0bd0f4b442bcfc8897da15277eL329

Should be an easy fix, changing list to tuple as arg in isinstance

ghukill commented 5 years ago

While fixing that, encountered another:

combine-celery_1      | [2019-06-17 11:29:38,184: ERROR/ForkPoolWorker-1] Task core.tasks.stateio_export[8b39ab1b-d7df-462a-91c9-d2a873b68c16] raised unexpected: ValueError('too many values to unpack (expected 2)',)
combine-celery_1      | Traceback (most recent call last):
combine-celery_1      |   File "/opt/conda/envs/combine/lib/python3.5/site-packages/celery/app/trace.py", line 385, in trace_task
combine-celery_1      |     R = retval = fun(*args, **kwargs)
combine-celery_1      |   File "/opt/conda/envs/combine/lib/python3.5/site-packages/celery/app/trace.py", line 648, in __protected_call__
combine-celery_1      |     return self.run(*args, **kwargs)
combine-celery_1      |   File "/opt/combine/core/tasks.py", line 1397, in stateio_export
combine-celery_1      |     compression_format='zip')
combine-celery_1      |   File "/opt/combine/core/models/stateio.py", line 407, in export_state
combine-celery_1      |     self.package_export()
combine-celery_1      |   File "/opt/combine/core/models/stateio.py", line 811, in package_export
combine-celery_1      |     for _key, val in self.export_dict:
combine-celery_1      | ValueError: too many values to unpack (expected 2)
antmoth commented 5 years ago

Oops :flushed: thanks for fixing! merged your PR

ghukill commented 5 years ago

Excellent!