Type: New Feature
Affects Version/s: 2.3AS
Fix Version/s: None
Component/s: Async Scaleout
In http://markmail.org/message/ceb2npk5qsmuftn4 Yosi Mass requested that UIMA support a peer-to-peer capability where services are discovered dynamically to improve load balancing, and presumably, to enhance processing by using analytics which only become available after a client has started.
UIMA AS already supports dynamically expanding processing capability for a particular service, by simply starting additional service instances pointed at the service's existing request queue. Using appropriate error handling and/or custom flow controller options, a UIMA AS aggregate also has the capability to ignore a missing delegate service, as long as the delegate service was available during aggregate initialization. The enhancement suggested here is to allow an aggregate service to later use a delegate service that was unavailable during initialization.
UIMA changes would be:
1. add a new error handling option for getMeta failures at initialization. Currently the options at init are to disable any use of the delegate, or fail initialization and terminate the aggregate. The new option, "continue", would be ignore this failure and complete initialization of the aggregate, but mark the delegate as being in a special state, very similar to the "questionable" state described in
2. The difference from
UIMA-1127 is that when getMeta succeeds for this delegate, the service's type system would be checked to see that it is compatible with that of the aggregate. See UIMA-1290 for details on what validation means. If valid, the delegate is marked fully operational. If the type system fails validation, and process error handling is set to continue, a new exception type would be given to the flow controller to decide how to handle the situation.