openmicroscopy/openmicroscopy — pull request #2545 by joshmoore (2014-05-23 11:08:00+00:00)
Title: 8266 no processor (rebased onto develop)

This is the same as gh-2528 but rebased onto develop.

----

See: https://trac.openmicroscopy.org.uk/ome/ticket/8266#comment:39

This PR provides a workaround for the annoying "No processor available" bug that we've seen for some time. The "test_inputs.py" test helped to track down the issue since the usermode_processor that it created was failing to be reached periodically. (Roughly 1% of the time). The cause was that the proxy name created by Glacier2 was formed in such a way that when turned into a string and sent to the server it could not be turned back into a proxy. The server saw only a "ObjectNotExistException" even though the processor itself was still listening.

*Note: this problem may have affected other callback services in OMERO, including chgrp, delete, and regular script execution. Those are **not fixed here.*

The solution is to add a new method `isProxyAccepted` which takes a `Processor*` rather than a string-ified version of that proxy. An older processor might attempt to call `isAccepted` still, and 1% of the time it will *fail*, but that seems like a fair trade-off.

As described in https://github.com/openmicroscopy/openmicroscopy/pull/2528#issuecomment-43929454 a previous solution was to retry session creation to prevent this from happening which *failed* for OMERO.web.

To test, check that `test_inputs.py` is passing, possibly running locally with the new argument `--repeat=100`. /cc @ximenesuk @sbesson @bpindelski

Otherwise, there such be no changes in the behavior of OMERO.web, OMERO.insight or any of the APIs. (Note: `omero.client` is no longer modified in this PR at all).