Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

assert_re ignoreExceptions is None #308

Open
will-moore opened this issue Oct 21, 2021 · 2 comments
Open

assert_re ignoreExceptions is None #308

will-moore opened this issue Oct 21, 2021 · 2 comments

Comments

@will-moore
Copy link
Member

If an exception is thrown during init of rendering engine, this throws an Exception which then also generates a TypeError with except ctx.ignoreExceptions: since ignoreExceptions is None by default
see https://www.openmicroscopy.org/qa2/qa/feedback/30554/

Traceback (most recent call last):

File "/omero/omerowebenv/lib/python3.6/site-packages/omero/gateway/__init__.py", line 7941, in wrapped
if not self._prepareRenderingEngine() \

File "/omero/omerowebenv/lib/python3.6/site-packages/omero/gateway/__init__.py", line 8217, in _prepareRenderingEngine
self._re = self._prepareRE(rdid=rdid)

File "/omero/omerowebenv/lib/python3.6/site-packages/omero/gateway/__init__.py", line 8191, in _prepareRE
re.resetDefaultSettings(True, ctx)

File "/omero/omerowebenv/lib/python3.6/site-packages/omero/gateway/__init__.py", line 4856, in __call__
return self.handle_exception(e, *args, **kwargs)

File "/omero/omerowebenv/lib/python3.6/site-packages/omeroweb/webclient/webclient_gateway.py", line 2109, in handle_exception
super(OmeroWebSafeCallWrapper, self).handle_exception(e, *args, **kwargs)

File "/omero/omerowebenv/lib/python3.6/site-packages/omero/gateway/__init__.py", line 4853, in __call__
return self.f(*args, **kwargs)

File "/omero/omerowebenv/lib/python3.6/site-packages/omero_api_RenderingEngine_ice.py", line 2323, in resetDefaultSettings
return _M_omero.api.RenderingEngine._op_resetDefaultSettings.invoke(self, ((save, ), _ctx))

omero.LockTimeout: exception ::omero::LockTimeout
{
serverStackTrace = ome.conditions.LockTimeout: Pixels pyramid missing, being created or import in progress.

...

at java.base/java.lang.Thread.run(Thread.java:829)

serverExceptionClass = ome.conditions.LockTimeout
message = Pixels pyramid missing, being created or import in progress.
backOff = 15000
seconds = 0
}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "/omero/omerowebenv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)

File "/omero/omerowebenv/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)

File "/omero/omerowebenv/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/omero/omerowebenv/lib/python3.6/site-packages/omeroweb/decorators.py", line 538, in wrapped
retval = f(request, *args, **kwargs)

File "/omero/omerowebenv/lib/python3.6/site-packages/omeroweb/webgateway/views.py", line 1076, in render_image
jpeg_data = img.renderJpeg(z, t, compression=compress_quality)

File "/omero/omerowebenv/lib/python3.6/site-packages/omero/gateway/__init__.py", line 7946, in wrapped
except ctx.ignoreExceptions:

TypeError: catching classes that do not inherit from BaseException is not allowed
@will-moore
Copy link
Member Author

Seen again today on nightshade:

File "/opt/omero/web/venv3/lib64/python3.6/site-packages/omeroweb/webgateway/views.py" in render_image
  1076.         jpeg_data = img.renderJpeg(z, t, compression=compress_quality)

File "/opt/omero/web/venv3/lib64/python3.6/site-packages/omero/gateway/__init__.py" in wrapped
  7886.             except ctx.ignoreExceptions:

Exception Type: TypeError at /webgateway/render_image/3970392/
Exception Value: catching classes that do not inherit from BaseException is not allowed

@joshmoore
Copy link
Member

Looking at:

(base) /opt/omero-py $git grep assert_re
src/omero/gateway/__init__.py:class assert_re (object):
src/omero/gateway/__init__.py:        Used by the :meth:`assert_re` method to wrap calls requiring rendering
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re(ignoreExceptions=(omero.ConcurrencyException))
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()
src/omero/gateway/__init__.py:    @assert_re()

and

class assert_re (object):
    """
    Function decorator to make sure that rendering engine is prepared before
    call. Is configurable by various options.
    """

    def __init__(self, onPrepareFailureReturnNone=True, ignoreExceptions=None):

and

>>> try:
...     pass
... except
KeyboardInterrupt
>>> ignore = (,)
  File "<stdin>", line 1
    ignore = (,)
              ^
SyntaxError: invalid syntax
>>> ignore = None
>>> try:
...     pass
... except ignore:
...     pass
...
>>> try:
...     1/0
... except ignore:
...     pass
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: division by zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: catching classes that do not inherit from BaseException is not allowed

I think just defining a default for assert_re might solve this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants