1.  Your annotators can remove as well as add annotations.  Perhaps if there is 
a large number of annotations that you don’t really need you could have a clean 
up annotator that removes the extra stuff, or else just don’t generate it in 
the first place, whatever works best for your algorithm.
2.  Remote services in your pipeline are serialized the same way as the 
serialization with the client.  In fact the framework essentially creates a 
client interface for sending and receiving CAS objects and then passing them 
to/from your pipeline.  It is likely then that your expansion is happening 
after the remote service is called or else is not yet big enough to be over the 
100MB limit.

Thanks,

Thomas Ginter
801-448-7676
thomas.gin...@utah.edu




On Jan 23, 2014, at 12:53 AM, Mihaela M <mmihaela1...@yahoo.com> wrote:

> 1. I will upgrade uima-as and review the annotations gathered in the CAS, but 
> is it a way to have the CAS reset before sending it to the client? In my case 
> I only want to get the status of the processing, not all the annotations 
> found, because they were handled by the consumers configured in the pipeline 
> anyway.
> 
> 2. Do you know whether the aggregates communicate with the clients the same 
> as with the remote CAS consumers? I wonder why it did not complain while 
> sending the exploded CAS to the remote consumer, but it did when 
> communicating with the client.
> 
> Thank you!
> Mihaela
> 
> 
> 
> On Wednesday, January 22, 2014 7:07 PM, Thomas Ginter 
> <thomas.gin...@utah.edu> wrote:
> 
> Mihaela,
> 
> There are two things that you should probably do in order to get started with 
> these issues.
> 
> 1.  Upgrade to UIMA-AS 2.4.2 which uses a newer version of ActiveMQ and 
> contains numerous bug fixes for UIMA-AS related to how the JMS queues are 
> handled.
> 2.  The UIMA-AS framework adds very little as far as overhead space for the 
> CAS objects which means the vast majority of the size expansion from 48KB to 
> 147MB is coming from annotations/metadata being added by your service.  
> Increasing the frame size in ActiveMQ may allow your CAS objects to be 
> transferred in JMS but it is more important to find out what is causing this 
> dramatic expansion and whether or not the service can be written differently 
> so that the expansion is much smaller.
> 
> Thanks,
> 
> Thomas Ginter
> 801-448-7676
> thomas.gin...@utah.edu
> 
> 
> 
> 
> 
> On Jan 22, 2014, at 9:44 AM, Mihaela M <mmihaela1...@yahoo.com> wrote:
> 
>> Hello,
>> 
>> I have a uima pipeline that uses uima-as 2.3.1 which has one aggregator with 
>> one local annotator, one remote consumer and one remote annotator. It 
>> actually has more components but I will get into exactly the configuration 
>> only if needed.
>> I have developed also a UIMA client for it using class: 
>> UimaAsynchronousEngine, method sendCas (async as far I understood) and a 
>> callback listener that waits for the processing to complete.
>> 
>> 1. I have noticed that the CAS returned, in general is quite big. Is it a 
>> way to send, at least to the client, a CAS that does not contain all the 
>> types that the various annotators added? When could I remove those things 
>> from the CAS?
>> 2. I send a text message for processing which has 48 KB - it gets processed 
>> successfully by the pipeline, but the pipeline fails to send a reply to the 
>> client. The exception that I get is:
>> 
>> 01/21/2014 07:36:02.978 [ActiveMQ Transport:
>> tcp://localhost/127.0.0.1:61616] [DEBUG] 
>> org.apache.activemq.ActiveMQConnection
>> - Async exception with no exception listener: java.io.IOException: Frame size
>> of 147 MB larger than max allowed 100 MB
>> java.io.IOException: Frame size of 147 MB larger than max
>> allowed 100 MB
>>                  at
>> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:277)
>> ~[activemq-core-5.6.0.jar:5.6.0]
>>                  at
>> org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:229)
>> ~[activemq-core-5.6.0.jar:5.6.0]
>>                  at
>> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:221)
>> ~[activemq-core-5.6.0.jar:5.6.0]
>>                  at
>> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:204)
>> ~[activemq-core-5.6.0.jar:5.6.0]
>>                  at
>> java.lang.Thread.run(Thread.java:662) [na:1.6.0_30]
>> 01/21/2014 07:36:03.093 [ActiveMQ Connection Executor:
>> tcp://localhost/127.0.0.1:61616] [DEBUG]
>> org.apache.activemq.transport.tcp.TcpTransport - Stopping transport
>> tcp://localhost/127.0.0.1:61616
>> 
>> As far as I understood, the client connects via JMS to the uima pipeline and 
>> a temporary reply queue gets created where the reply from the pipeline 
>> should be sent and then consumed by the client. After the above exception is 
>> thrown, the connection to the pipeline gets closed and automatically the 
>> temp queue gets deleted hence the client does not receive anymore the reply.
>> 
>> I am wondering why the error I was mentioning is not thrown while the 
>> aggregator sends the CAS to the consumer, because the consumer is remote, 
>> hence the communication between them is done through JMS queue as well, and 
>> I think the aggregator has a reply queue as well for the consumer...
>> 
>> I want to mention that I tried to increase the maxFrameSize on AMQ broker 
>> but without success. It seems to be a bug in AMQ 5.6 that uima as 2.3.1 is 
>> using.
>> 
>> Any feedback is appreciated.
>> 
>> Thank you,
>> Mihaela

Reply via email to