[ 
https://issues.apache.org/jira/browse/UIMA-1109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12683075#action_12683075
 ] 

Jerry Cwiklik edited comment on UIMA-1109 at 3/18/09 9:54 AM:
--------------------------------------------------------------

Currently there is no general mechanism to stop a specific instance of a remote 
service from the client unless it *IS* the only service on a queue. Services 
share a queue and which instance picks up a message is not known. Only Cas 
Multipliers create a special dedicated queue where the client sends Free CAS 
requests. I think the Terminate command would apply to all service types: 
aggregate, primitive, Cas Multiplier or not.

Perhaps we need to enhance uima AS service to support a listener on a Topic, 
where we can send admin type commands to services. With that we can broadcast 
commands like Terminate to all services or a specific service. The latter would 
require a selector that would filter messages. Each service may generate a UUID 
and use it to filter messages destined for it. This would require that the 
service adds this ID to every reply going to the client. And the client to 
internally associate this UUID with a specific service instance. If the client 
wants to stop all services, it would send a message to the topic without 
providing a UUID. A service may use a selector like this:

"serviceid IS NULL OR serviceid=<uuid>", where <uuid> is the actual UUID of the 
service.

The first part of the expression (serviceid property not in the message) 
supports broadcasting commands to ALL services. The second part, enables to 
send a message to a specific service.



      was (Author: cwiklik):
    Currently there is no general mechanism to stop a specific instance of a 
remote service from the client unless it *IS* the only service on a queue. 
Services share a queue and which instance picks up a message is not known. Only 
Cas Multipliers create a special dedicated queue where the client sends Free 
CAS requests. I thing the Terminate command would apply to all service types: 
aggregate, primitive, Cas Multiplier or not.

Perhaps we need to enhance uima AS service to support a listener on a Topic, 
where we can send admin type commands to services. With that we can broadcast 
commands like Terminate to all services or a specific service. The latter would 
require a selector that would filter messages. Each service may generate a UUID 
and use it to filter messages destined for it. This would require that the 
service adds this ID to every reply going to the client. And the client to 
internally associate this UUID with a specific service instance. If the client 
wants to stop all services, it would send a message to the topic without 
providing a UUID. A service may use a selector like this:

"serviceid IS NULL OR serviceid=<uuid>", where <uuid> is the actual UUID of the 
service.

The first part of the expression (serviceid property not in the message) 
supports broadcasting commands to ALL services. The second part, enables to 
send a message to a specific service.


  
> Need ability to quiesce an instance of a service
> ------------------------------------------------
>
>                 Key: UIMA-1109
>                 URL: https://issues.apache.org/jira/browse/UIMA-1109
>             Project: UIMA
>          Issue Type: Improvement
>          Components: Async Scaleout
>            Reporter: Burn Lewis
>
> We can deploy extra instances of a service seamlessly but also need a 
> mechanism to undeploy without losing any work, i.e. ask an instance to stop 
> processing messages and shutdown when it finishes its current work.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to