[jboss-jira] [JBoss JIRA] Commented: (JBCACHE-991) Non-JTA based mechanism for batching invocations
Manik Surtani (JIRA)
jira-events at lists.jboss.org
Tue Aug 5 07:50:57 EDT 2008
[ https://jira.jboss.org/jira/browse/JBCACHE-991?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12423620#action_12423620 ]
Manik Surtani commented on JBCACHE-991:
---------------------------------------
Re: approach 1, what's the exact usage pattern for this, particularly when it comes to locking and return values?
E.g.,
1. What happens to read calls when executed within a batch? Ignored?
2. Write calls that return values? E.g., put()?
3. Replication - I'm guessing this is the primary reason for this JIRA - deferred till commitBatch()?
4. Persisting? Same as 3.?
5. Notifications?
6. Locks - acquired with each WRITE invocation and held for the duration of the batch? Or just acquired and released at commit time?
Depending on the answers above, it may look very similar to a JTA transaction. Also, should batches participate in ongoing JTA transactions?
> Non-JTA based mechanism for batching invocations
> ------------------------------------------------
>
> Key: JBCACHE-991
> URL: https://jira.jboss.org/jira/browse/JBCACHE-991
> Project: JBoss Cache
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Reporter: Brian Stansberry
> Assignee: Mircea Markus
> Fix For: 3.0.0.GA
>
>
> Currently JBC uses the lifecycle of a JTA Transaction to scope a series of cache invocations doing things like lock release, replication and cache loader storage as part of the transaction commit. Need a mechanism to do this kind of invocation batching that doesn't depend on JTA. Needed to allow callers that don't wish their work to be associated with an active JTA transaction to still get the batching behavior JBC provides.
> AS web session replication is an example use case. It uses BatchModeTransactionManger to ensure its activity doesn't impact any ongoing transaction. But BatchModeTransactionManager isn't a good JTA transaction manager even though it implements the JTA interfaces. So using it is problematic; it can easily be misused by those who don't understand it's limitations (e.g. hooking it up to a JTA Datasource.)
> A couple of possible approaches have been discussed:
> 1) A new API added to Cache. Methods like startBatch(), commitBatch(), rollbackBatch(), along with some internal mechanism to timeout a batch that's been started but never committed/rolled-back.
> 2) Abstract away the JTA API such that JBC doesn't use JTA directly, but rather its own interfaces that largely parallel TransactionManager and Transaction. Provide an impl that simply wraps a real JTA TransactionManager. BatchModeTransactionManger would be another impl. API includes a method like 'boolean isJTACompliant()' that things like CacheLoader impls can check at startup to confirm they are working with a compatible impl (e.g. if JBDCCacheLoader is configured to use a JTA Datasource but isJTACompliant() returns false, throw an exception at startup.)
> Apologies if this is a duplicate issue. Thought there was something like this but couldn't find it.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list