• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.server
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • ← Previous Ticket
  • Next Ticket →

Ticket #248 (new story)

Opened 2 years ago

Binary services need a throttling mechanism

Reported by: jmoore Owned by: callan
Priority: major Milestone: Unscheduled
Component: Bin-Services Version: 3.0-M3
Keywords: performance, memory Cc: callan, jason@…

Description

Now that import and multi-window viewing are in full-swing, we need to start thinking about how to curb them somewhat. In OME, the transfer of binary files is only limited by the number of Apache threads, but the actual import is asynchronous and jobbed out as possible. (Right?)

With our current remote infrastructure, basically there's no way (currently) to throttle calls. With a more advanced infrastructure (two-way invocation, etc.) it'd be possible to cleanly solve this problem (the server takes turns requesting files from the clients), but a short-term solution is also in order to prevent OutOfMemoryExceptions

Short-term possibilities:

  • Throw an exception. At either service creation or service invocation an exception could be thrown. All consumers of the binary service would need to check for that exception and retry.
  • Blocking. Again, at either creation or invocation, the service could simply block until a slot becomes available.
  • boolean return. Another option is to have all setter methods return a boolean. This leads to an idiom of the form: while( setPlane(...) ) { // don't do this too often }, meaning that operations will be retried until they succeed.
  • Status return. Rather than a boolean, a Status object could be returned.

Longer-term possibilities:

  • Asynchronous. This really doesn't help us. The initial transfer of binary data is still uncontrolled.
  • Two-way invocation. ...
Note: See TracTickets for help on using tickets.

Download in other formats:

  • Comma-delimited Text
  • Tab-delimited Text
  • RSS Feed

Trac Powered

Powered by Trac 0.11
By Edgewall Software.

Visit the Trac open source project at
http://trac.edgewall.org/