[ 
https://issues.apache.org/jira/browse/QPID-8496?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17267631#comment-17267631
 ] 

Lisa Hong commented on QPID-8496:
---------------------------------

Hi [~robbie] [~orudyy],

Thanks so much for the help! I think we're most likely hitting the multi 
threading problem as [~robbie] mentioned. We have another thread (besides the 
container thread) to keep producing new message and when some condition is hit, 
it will call the sender to send message from non-container thread.

With your hint, we have refined our thread. Say thread A is the main thread, 
which will run proton container. thread B is another thread, which will produce 
new messages. Here are our changes:

Before change:
 * Thread A(container thread) will call sender.send(Message) within on_sendable.
 * Thread B will keep produce new message and when the message is ready to send 
per our business logic, it will directly call sender.send(Message) --> Here 
might cause multi-threading issue

After change:
 * Thread B will produce new message but not send the messages,, it will put 
the message to a queue own by thread A
 * Thread A(container thread) overrides the Container.process method and call 
sender.send(Message) in its local process after on_sendable was triggered and 
it will check sender.credit>0 before each send.  (I were trying to always send 
message via on_sendable, but unfortunately on_sendable is not always looped in 
process(). So if new message is added in from thread B, there's no chance to 
send the messages )

With the changes above, the issue is not hit after running for more than one 
day. We will keep monitor the status to check whether the issue is fixed. But 
please help to advice whether it is good practice. Your suggestions are highly 
appreciated!

Thanks,

Lisa

> Randomly hit "unknown QBB implementation" error
> -----------------------------------------------
>
>                 Key: QPID-8496
>                 URL: https://issues.apache.org/jira/browse/QPID-8496
>             Project: Qpid
>          Issue Type: Bug
>          Components: Broker-J
>    Affects Versions: qpid-java-broker-8.0.2, qpid-java-broker-8.0.3
>            Reporter: Lisa Hong
>            Assignee: Alex Rudyy
>            Priority: Major
>             Fix For: qpid-java-broker-8.0.4
>
>         Attachments: UnknownQBB_callstack, proton.log
>
>
> Hi team, 
> I'm running qpid java broker with modelVersion8.0. And the client is 
> qpid-proton with python. Unfortunately, my producer will randomly hit this  
> "unknown QBB implementation" error thus failing with on_connection_error. 
> Could you please help to advice what could be the root cause? The error call 
> stack could be found from attachment.
> I'm suspending some null buffer is provided for this 
> QpidByteBufferFactory.concatenate method. But I have no idea why it could 
> happen. Would you please help to figure out? Thank you so much!
> *Proton client version: 0.32.0*
> *Qpid broker J version: 8.0*
> Regards,
> Lisa



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to