[JBoss JIRA] Created: (JBCACHE-919) PojoCache to optimize access to __JBossInternal__ region
by Ben Wang (JIRA)
PojoCache to optimize access to __JBossInternal__ region
--------------------------------------------------------
Key: JBCACHE-919
URL: http://jira.jboss.com/jira/browse/JBCACHE-919
Project: JBoss Cache
Issue Type: Task
Security Level: Public (Everyone can see)
Components: PojoCache
Reporter: Ben Wang
Assigned To: Ben Wang
Fix For: 2.0.0.ALPHA2
This is discovered during test for PojoCache. Currently, all external POJOs are mapped into __JBossInternal__ region nodes. This creates a synchronizatio bottleneck for the __JBossInternal__ fqn as all newly created node will need to obtain a WL on __JBossInternal__ and therefore concurrency will suffer.
Solution is to pre-create the internal node such as /__JBossInternal__/xxjksla without going throu the interceptor (using Option to skip it). This way, during normal POJO attach, only RL is needed from __JBossInternal__ node.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 7 months
[JBoss JIRA] Closed: (JBMESSAGING-355) Remove possibility of delivery race conditions
by Tim Fox (JIRA)
[ http://jira.jboss.com/jira/browse/JBMESSAGING-355?page=all ]
Tim Fox closed JBMESSAGING-355.
-------------------------------
Resolution: Won't Fix
Channel no longer maintains deliveries, making this race conditions impossible to happen now :)
> Remove possibility of delivery race conditions
> ----------------------------------------------
>
> Key: JBMESSAGING-355
> URL: http://jira.jboss.com/jira/browse/JBMESSAGING-355
> Project: JBoss Messaging
> Issue Type: Task
> Reporter: Tim Fox
> Assigned To: Tim Fox
> Fix For: 1.2.1
>
> Attachments: race-condition.log
>
> Original Estimate: 3 days
> Remaining Estimate: 3 days
>
> Currently race conditions can occur on message delivery where the delivery is acknowledged or cancelled before the call to handle has returned.
> In ChannelState we defensively program against this by synchronizing on the returned delivery and by dealing with the situation where the delivery does not exist in the channel state and ignoring.
> See ChannelSupport::deliver() and ChannelState.cancelDelivery.
> This approach has the following problems:
> Complexity of code to maintain and understand.
> Where acks return quickly we are likely to get contention on the lock in ChannelSupport::deliver, thus reducing throughput.
> A much simpler solution enables us to remove the possibility of such race conditions and remove the corresponding lock contention.
> This can be done by adding a confirm() method on Delivery.
> When the receiver receives the message in it's handle() call, before dispatching the message it calls Delivery::confirm. This results in the channel adding the delivery to the channel state. Thus we can be assured that the delivery exists before any acknowledgment or cancellation comes in.
> This is a very simple change.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 7 months
[JBoss JIRA] Closed: (JBMESSAGING-140) Move responsibility for management of delivery list from receiver into channel
by Tim Fox (JIRA)
[ http://jira.jboss.com/jira/browse/JBMESSAGING-140?page=all ]
Tim Fox closed JBMESSAGING-140.
-------------------------------
Resolution: Won't Fix
The channel no longer maintains deliveries - so this is now defunct.
> Move responsibility for management of delivery list from receiver into channel
> ------------------------------------------------------------------------------
>
> Key: JBMESSAGING-140
> URL: http://jira.jboss.com/jira/browse/JBMESSAGING-140
> Project: JBoss Messaging
> Issue Type: Task
> Components: Messaging Core
> Reporter: Tim Fox
> Assigned To: Tim Fox
> Fix For: 1.2.0.CR1
>
> Original Estimate: 4 days
> Remaining Estimate: 4 days
>
> Currently each receiver has the responsibility for managing it's list of deliveries. This is to avoid a race condition whereby the message can be acked before the call to handle has returned.
> This is a high burden of responsibility for the receiver and results in a lot of unnecessary code in the receiver implementation, plus an extra hashmap lookup
> We should consider whether we can give the responsibiltty to the channel.
> We could still acknowledge and cancel throught the delivery object, by creating one when required and calling cancel/acknowledge on it.
> the instance of delivery won't contain a message reference but just a message id. then inside delivery.cancel()/acknowledge(), it calls
> channel.cancel(this) and the channel is smart enought to lookup the delivery/reference as required.
> This won't require ANY changes to the receiver/channel interface and will allow us to get rid of the delivery list
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
19 years, 7 months