You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by vcheruvu <v_...@hotmail.com> on 2013/08/30 08:20:59 UTC

Camel 2.11.1 - SedaComponent issues with Queue size

Hi ,

I am getting strange error with queue when our applications write objects to
VM queue.  Occasionally I am seeing below error.  It is strange that we can
clearly see in the error message below that queue size value match. Any idea
why it is failing?



Caused by: java.lang.IllegalArgumentException: Cannot use existing queue
vm://FixTransform-BARX-Queue as the existing queue size 500000 does not
match given queue size 500000
        at
org.apache.camel.component.seda.SedaComponent.getOrCreateQueue(SedaComponent.java:76)
        at
org.apache.camel.component.seda.SedaEndpoint.getQueue(SedaEndpoint.java:122)
        at
org.apache.camel.component.seda.SedaEndpoint.doStart(SedaEndpoint.java:401)
        at
org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at
org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:1819)
        at
org.apache.camel.impl.DefaultCamelContext.doAddService(DefaultCamelContext.java:960)
        at
org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:921)
        at
org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:505)
        ... 56 more



Below is the code snippet that throws IllegalArgumentException when
comparing queue size. I do not  understand how queue size do not match for
below conditional statement when 500000 is equal to 500000 in the above
statement.  Is there some kind of data corruption here that some threads do
not get correct value for ref.getSize()?


SedaComponent.java

...
 if (size != null && ref.getSize() != size) {
                // there is already a queue, so make sure the size matches
                throw new IllegalArgumentException("Cannot use existing
queue " + key + " as the existing queue size "
                        + (ref.getSize() != null ? ref.getSize() :
Integer.MAX_VALUE) + " does not match given queue size " + size);
            }
....





VM component name used in our application

"vm:FixTransform-BARX-Queue?size=500000&timeout=1000000&concurrentConsumers=5"

Kind regards,
-Vid-



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-2-11-1-SedaComponent-issues-with-Queue-size-tp5738258.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel 2.11.1 - SedaComponent issues with Queue size

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

I logged a ticket
https://issues.apache.org/jira/browse/CAMEL-6691

On Fri, Aug 30, 2013 at 9:46 AM, vcheruvu <v_...@hotmail.com> wrote:
> Doh! It is an Integer object !!  .. Allright, I will check out the source
> using Git and apply patch.
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Camel-2-11-1-SedaComponent-issues-with-Queue-size-tp5738258p5738265.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Re: Camel 2.11.1 - SedaComponent issues with Queue size

Posted by vcheruvu <v_...@hotmail.com>.
Doh! It is an Integer object !!  .. Allright, I will check out the source
using Git and apply patch.



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-2-11-1-SedaComponent-issues-with-Queue-size-tp5738258p5738265.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel 2.11.1 - SedaComponent issues with Queue size

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Yeah give that a try and as we love contributions. Feel free to log a
JIRA and provide a patch.

On Fri, Aug 30, 2013 at 8:26 AM, Alex Paransky <ap...@standardset.com> wrote:
> Looks like the values being compared are Objects, but != is being used
> instead of !equals method.  Since you have the src try the fix.
> On Aug 29, 2013 11:21 PM, "vcheruvu" <v_...@hotmail.com> wrote:
>
>>
>> Hi ,
>>
>> I am getting strange error with queue when our applications write objects
>> to
>> VM queue.  Occasionally I am seeing below error.  It is strange that we can
>> clearly see in the error message below that queue size value match. Any
>> idea
>> why it is failing?
>>
>>
>>
>> Caused by: java.lang.IllegalArgumentException: Cannot use existing queue
>> vm://FixTransform-BARX-Queue as the existing queue size 500000 does not
>> match given queue size 500000
>>         at
>>
>> org.apache.camel.component.seda.SedaComponent.getOrCreateQueue(SedaComponent.java:76)
>>         at
>>
>> org.apache.camel.component.seda.SedaEndpoint.getQueue(SedaEndpoint.java:122)
>>         at
>> org.apache.camel.component.seda.SedaEndpoint.doStart(SedaEndpoint.java:401)
>>         at
>> org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
>>         at
>>
>> org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:1819)
>>         at
>>
>> org.apache.camel.impl.DefaultCamelContext.doAddService(DefaultCamelContext.java:960)
>>         at
>>
>> org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:921)
>>         at
>>
>> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:505)
>>         ... 56 more
>>
>>
>>
>> Below is the code snippet that throws IllegalArgumentException when
>> comparing queue size. I do not  understand how queue size do not match for
>> below conditional statement when 500000 is equal to 500000 in the above
>> statement.  Is there some kind of data corruption here that some threads do
>> not get correct value for ref.getSize()?
>>
>>
>> SedaComponent.java
>>
>> ...
>>  if (size != null && ref.getSize() != size) {
>>                 // there is already a queue, so make sure the size matches
>>                 throw new IllegalArgumentException("Cannot use existing
>> queue " + key + " as the existing queue size "
>>                         + (ref.getSize() != null ? ref.getSize() :
>> Integer.MAX_VALUE) + " does not match given queue size " + size);
>>             }
>> ....
>>
>>
>>
>>
>>
>> VM component name used in our application
>>
>>
>> "vm:FixTransform-BARX-Queue?size=500000&timeout=1000000&concurrentConsumers=5"
>>
>> Kind regards,
>> -Vid-
>>
>>
>>
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Camel-2-11-1-SedaComponent-issues-with-Queue-size-tp5738258.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Re: Camel 2.11.1 - SedaComponent issues with Queue size

Posted by Alex Paransky <ap...@standardset.com>.
Looks like the values being compared are Objects, but != is being used
instead of !equals method.  Since you have the src try the fix.
On Aug 29, 2013 11:21 PM, "vcheruvu" <v_...@hotmail.com> wrote:

>
> Hi ,
>
> I am getting strange error with queue when our applications write objects
> to
> VM queue.  Occasionally I am seeing below error.  It is strange that we can
> clearly see in the error message below that queue size value match. Any
> idea
> why it is failing?
>
>
>
> Caused by: java.lang.IllegalArgumentException: Cannot use existing queue
> vm://FixTransform-BARX-Queue as the existing queue size 500000 does not
> match given queue size 500000
>         at
>
> org.apache.camel.component.seda.SedaComponent.getOrCreateQueue(SedaComponent.java:76)
>         at
>
> org.apache.camel.component.seda.SedaEndpoint.getQueue(SedaEndpoint.java:122)
>         at
> org.apache.camel.component.seda.SedaEndpoint.doStart(SedaEndpoint.java:401)
>         at
> org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
>         at
>
> org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:1819)
>         at
>
> org.apache.camel.impl.DefaultCamelContext.doAddService(DefaultCamelContext.java:960)
>         at
>
> org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:921)
>         at
>
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:505)
>         ... 56 more
>
>
>
> Below is the code snippet that throws IllegalArgumentException when
> comparing queue size. I do not  understand how queue size do not match for
> below conditional statement when 500000 is equal to 500000 in the above
> statement.  Is there some kind of data corruption here that some threads do
> not get correct value for ref.getSize()?
>
>
> SedaComponent.java
>
> ...
>  if (size != null && ref.getSize() != size) {
>                 // there is already a queue, so make sure the size matches
>                 throw new IllegalArgumentException("Cannot use existing
> queue " + key + " as the existing queue size "
>                         + (ref.getSize() != null ? ref.getSize() :
> Integer.MAX_VALUE) + " does not match given queue size " + size);
>             }
> ....
>
>
>
>
>
> VM component name used in our application
>
>
> "vm:FixTransform-BARX-Queue?size=500000&timeout=1000000&concurrentConsumers=5"
>
> Kind regards,
> -Vid-
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Camel-2-11-1-SedaComponent-issues-with-Queue-size-tp5738258.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>