qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benn <mr.b...@gmail.com>
Subject Re: c# multiple producers on seperate threads
Date Mon, 06 Jul 2009 14:34:48 GMT
Hey, i got the latest trunk and applied the patch suggested and this error
does indeed go away, however i do seem to get this:

Unhandled Exception: System.IndexOutOfRangeException: Array index is out of
range.
  at System.Random.Sample () [0x00000]
  at System.Random.NextBytes (System.Byte[] buffer) [0x00000]
  at org.apache.qpid.transport.util.UUID.randomUUID () [0x00000]
  at org.apache.qpid.client.ClientSession.messageTransfer (System.String
destination, IMessage message) [0x00000]
  at QTest.Program.Runner () [0x00000]

Many thanks.
Benn

2009/7/6 Carl Trieloff <cctrieloff@redhat.com>

>
> sorry about the delay in sometimes in getting the patches reviewed. If
> there is a patch outstanding for a few days the best is to fire a mail to
> the
> list to bring attention to the Jira.
>
> It looked like Ted had picked up the patch, so I will leave it with him for
> now.
> Carl.
>
>
>
> Julien Lavigne du Cadet wrote:
>
>> I wouldn't be surprised if it was a problem of duplicated UUID. The .Net
>> api is broken in that regards as UUID.randomUUID() is everything but random.
>>
>> I've just uploaded a third patch for this class (UUID) on JIRA (
>> https://issues.apache.org/jira/secure/ManageAttachments.jspa?id=12427578),
>> fixing the "not random UUID" issue.
>> Please note that I would certainly have done it before if any of the 2
>> previous patches had been applied... I'm very grateful for the work of the
>> committers on this project but I also find it quite discouraging for the
>> community when patches are not evaluated.
>>
>>
>> -----Message d'origine-----
>> De : Gordon Sim [mailto:gsim@redhat.com] Envoyé : lundi 6 juillet 2009
>> 11:09
>> À : users@qpid.apache.org
>> Objet : Re: c# multiple producers on seperate threads
>>
>> Benn wrote:
>>
>>
>>> Hi Gordon,
>>> Just looking through the log and seen the following...
>>>
>>>
>>> 2009-jul-06 09:23:45 debug SessionState::SessionState
>>> guest@QPID.1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772: 0x9086108
>>> 2009-jul-06 09:23:45 debug
>>> guest@QPID.1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772: attached on
>>> broker.
>>> 2009-jul-06 09:23:45 debug Attached channel 1 to
>>> guest@QPID.1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772
>>> 2009-jul-06 09:23:45 debug
>>> guest@QPID.1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772: ready to send,
>>> activating output.
>>> 2009-jul-06 09:23:45 trace 209.160.72.159:2144-12(local) activateOutput
>>> -
>>> sending doOutput
>>> 2009-jul-06 09:23:45 trace MCAST 209.160.72.159:2144-12:
>>> {ClusterConnectionDeliverDoOutputBody: bytes=41; }
>>> 2009-jul-06 09:23:45 trace 209.160.72.159:2144-12(local)Send doOutput
>>> request for 41
>>> 2009-jul-06 09:23:45 trace SENT [217.41.62.170:7445]: Frame[BEbe;
>>> channel=1;
>>> {SessionAttachedBody: name=1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772; }]
>>> 2009-jul-06 09:23:45 trace SENT [217.41.62.170:7445]: Frame[BEbe;
>>> channel=1;
>>> {SessionCommandPointBody: command-id=0; command-offset=0; }]
>>> 2009-jul-06 09:23:45 trace 209.160.72.159:2144(READY) DLVR:
>>> Event[209.160.72.159:2144-12 control 22 bytes]
>>> 2009-jul-06 09:23:45 trace 209.160.72.159:2144(READY) DLVR:  Frame[BEbe;
>>> channel=0; {ClusterConnectionDeliverDoOutputBody: bytes=41; }] control
>>> 209.160.72.159:2144-12
>>> 2009-jul-06 09:23:45 trace 209.160.72.159:2144-12(local)
>>> delivereDoOutput:
>>> requested=41 sent=0 more=0
>>> 2009-jul-06 09:23:45 trace MCAST Event[209.160.72.159:2144-15 data 59
>>> bytes]
>>> 2009-jul-06 09:23:45 trace 209.160.72.159:2144(READY) DLVR:
>>> Event[209.160.72.159:2144-15 data 59 bytes]
>>> 2009-jul-06 09:23:45 trace 209.160.72.159:2144(READY) DLVR:  Frame[BEbe;
>>> channel=1; {SessionAttachBody:
>>> name=1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772; }] data
>>> 209.160.72.159:2144-15
>>> read-credit=1
>>> 2009-jul-06 09:23:45 debug Exception constructed: Session already
>>> attached:
>>> guest@QPID.1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772
>>> (qpid/broker/SessionManager.cpp:55)
>>> 2009-jul-06 09:23:45 error Channel exception: session-busy: Session
>>> already
>>> attached: guest@QPID.1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772
>>> (qpid/broker/SessionManager.cpp:55)
>>> 2009-jul-06 09:23:45 trace SENT [217.41.62.170:13894]: Frame[BEbe;
>>> channel=1; {SessionDetachedBody:
>>> name=1cf3d1fbf-1ac35-14db7-19fa0-113c720be1772; code=1; }]
>>> 2009-jul-06 09:23:45 trace MCAST Event[209.160.72.159:2144-13 data 59
>>> bytes]
>>>
>>> Any help much appreciated.
>>>
>>>
>>
>>  From this it looks like either the same uuid is being used for two
>> different sessions, or somehow the attach control is being sent (or received
>> twice). Could you include some of the lines just before this
>> snippet to try and work out which of these it is?
>>
>> Also, do you see the same issue with a standalone broker (i.e.
>> non-clustered)?
>>
>>
>>
>>> 2009/7/6 Gordon Sim <gsim@redhat.com>
>>>
>>>
>>>
>>>> Benn wrote:
>>>>
>>>>
>>>>
>>>>> Hi There,
>>>>> I'm hoping someone has come accross this issue before or can maybe shed
>>>>> some
>>>>> light on why this is happening.
>>>>>
>>>>> I have ported a test application i wrote for RabbitMQ (which worked
>>>>> fine)
>>>>> but it throws a SessionClosedException when multiple producers are
>>>>> started.
>>>>> Perhaps i am going about this all the wrong way for Qpid - but it
>>>>> seemed
>>>>> right to me... any assistance would be appreciated :)
>>>>>
>>>>>
>>>>>
>>>> Do you see any errors logged on the broker?
>>>>
>>>>
>>>>  Here is my (very) simple app:
>>>>
>>>>
>>>>>
>>>>> --------------------------------------------------------------------------------------------
>>>>>
>>>>> using System;
>>>>> using System.Collections;
>>>>> using System.Text;
>>>>> using System.Threading;
>>>>> using org.apache.qpid.client;
>>>>> using org.apache.qpid.transport;
>>>>>
>>>>> namespace QTest
>>>>> {
>>>>> class Program
>>>>> {
>>>>>  static Queue testQueue = Queue.Synchronized(new Queue());
>>>>> static bool run = true;
>>>>>  public static void Main(string[] args)
>>>>> {
>>>>> int messages = int.Parse(args[0]);
>>>>> int producers = int.Parse(args[1]);
>>>>>  PopulateQueue(messages);
>>>>>  DateTime start = DateTime.Now;
>>>>>  for (int x = 0; x < producers ; x++ ) {
>>>>> Thread thd = new Thread(new ThreadStart(Runner));
>>>>> thd.IsBackground = true;
>>>>> thd.Start();
>>>>> }
>>>>>  while (testQueue.Count > 0) {
>>>>> Thread.Sleep(10);
>>>>> }
>>>>>  TimeSpan end = DateTime.Now.Subtract(start);
>>>>>  Console.WriteLine("{0} producers took {1} seconds to enqueue {2}
>>>>> messages",
>>>>> producers, end.TotalSeconds, messages);
>>>>>  run = false;
>>>>>  Console.ReadLine();
>>>>> }
>>>>>  public static void PopulateQueue(int count)
>>>>> {
>>>>> for (int i = 0; i < count ; i++) {
>>>>> testQueue.Enqueue(string.Format("Message: {0}", i));
>>>>> }
>>>>> }
>>>>>  public static void Runner()
>>>>> {
>>>>> Client connection = new Client();
>>>>> connection.connect("redrabbits.co.uk", 5672, string.Empty, "guest",
>>>>> "guest");
>>>>> ClientSession session = connection.createSession(50000);
>>>>>  IMessage message = new Message();
>>>>> message.DeliveryProperties.setRoutingKey("testing");
>>>>> while (run) {
>>>>> if(testQueue.Count > 0) {
>>>>> object thisMsg = testQueue.Dequeue();
>>>>> if(thisMsg != null) {
>>>>>  // put it in message queue
>>>>> message.clearData();
>>>>> message.appendData(Encoding.UTF8.GetBytes(thisMsg.ToString()));
>>>>> session.messageTransfer("amq.direct", message);
>>>>> }
>>>>> }
>>>>> Thread.Sleep(10);
>>>>> }
>>>>>  session.sync();
>>>>> connection.close();
>>>>> }
>>>>> }
>>>>> }
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -------------------------------------------------------------------------------------
>>>>>
>>>>> Many thanks in advance :)
>>>>>
>>>>>
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> Apache Qpid - AMQP Messaging Implementation
>>>> Project:      http://qpid.apache.org
>>>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> Apache Qpid - AMQP Messaging Implementation
>> Project:      http://qpid.apache.org
>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>
>>
>> P  Please consider your environmental responsibility before printing this
>> email
>>
>>
>> *********************************************************************************
>> Ce message peut contenir des informations confidentielles. Les idees et
>> opinions presentees dans ce message sont celles de son auteur, et ne
>> representent pas necessairement
>> celles du groupe ABC arbitrage.
>> Au cas ou il ne vous serait pas destine,
>> merci d'en aviser l'expediteur immediatement et de le supprimer.
>>
>> This message may contain confidential information. Any views or opinions
>> presented are solely those of its author and do not necessarily represent
>> those of ABC arbitrage. If you are not the intended recipient,
>> please notify the sender immediately and delete it.
>>
>> *********************************************************************************
>>
>>
>>
>> ---------------------------------------------------------------------
>> Apache Qpid - AMQP Messaging Implementation
>> Project:      http://qpid.apache.org
>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>
>>
>>
>
>


-- 
Cheers,
Benn

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message