You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@uima.apache.org by "Jerry Cwiklik (JIRA)" <ui...@incubator.apache.org> on 2009/03/18 17:54:50 UTC

[jira] Issue Comment Edited: (UIMA-1109) Need ability to quiesce an instance of a service

    [ 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.