openmicroscopy/openmicroscopy — pull request #1278 by joshmoore (2013-06-12 16:26:14+00:00)
Title: Remove synchronization from insight connectors/gateway

See: https://trac.openmicroscopy.org.uk/ome/ticket/11106

During performance testing, a stack trace was taken by @bpindelski, in which 88 individual `getThumbnail()` methods were all waiting on the single `OMEROGateway` lock taken by having `synchronized` methods. This PR is an attempt to remove all of that blockage by changing the only shared state -- previously the `containers` list -- and by moving all network/session checks into a single location (`getConnector()`) while also caching as many of those checks as possible.

Things that need to take place with this code:
* fix whitespace issues
* move the hardcoded `5000` and `30000` cache timeouts to configuration
* check for general stability
* possible cherry-pick the individual `NetworkChecker` commits from dev_4_4 rather than squashing them together.

Testing should include reproducing the current issues listed in tickets as well as checking how insight handles the loss of network since this is primarily what has been rolled back via these changes.

/cc @jburel -- PR opened but marked `exclude` until you've reviewed.
/cc @mtbc, @bpindelski, @pwalczysko -- if you would like to try out or look over the code, you may need to do so locally initially.