[dna-dev] Non-XA compliant resource participation in distributed transactions
Mark Little
mlittle at redhat.com
Thu May 15 10:16:56 EDT 2008
This could degenerate into a long discussion about transactions. I'll
try not to have that happen ;-)
On 15 May 2008, at 15:09, Randall Hauch wrote:
> Well, I'm referring to federation as in DNA federation of multiple
> sources into a single repository, where those sources may be remote
> system or local systems. (Ignore for now that a DNA repository may
> actually be hosted on a cluster, because each server in the cluster
> will have the same setup of connectors.)
>
> A file system connector (or any other connector for that matter) can
> certainly be made to implement the XA interfaces. But even if a
> file system connector correctly implements "transactional" behavior
> (even 2PC) and ACID semantics (such that other file system connector
> instances accessing the same file system also respect those
> transactions), the operations on the file system are not truly ACID
> in a global sense. Another client could get in and start changing
> the files on the file system without regard to those semantics, and
> now those changes may leak into the connectors.
So the easy answer to this is to state that your RM isn't actually
obeying the transactional semantics. If you provide a backdoor to a
resource that goes outside of transactionality, then you're just
asking for trouble. The file system can be made transactional: JBossTS
comes with a complete set of transactional file system adapters and a
programming model based on them. So this is only a problem if the
architecture allows it to occur.
Why can't you make the file system transactional?
>
>
> So my question is whether it's a bad thing to implement a connector
> to a non-transactional system as if it is XA compliant, since the
> "XA-compliance" is really a misnomer?
My answer is still the same: you can make the file system
transactional. If there is really a resource that cannot be made
transactional (and by that I mean ACID transactions) then
compensations (or some other extended transaction model) are the right
approach. In that case, I wouldn't bother making them look like they
are XA-aware. But I would also not hide this fact from users: the
semantics are different.
Have you looked at WS-BA, for instance? Or the compensation framework
within JBossTS?
Mark.
>
>
> On May 15, 2008, at 8:36 AM, Mark Little wrote:
>
>> Do you mean federated within the same VM or across VMs?
>>
>> Mark.
>>
>>
>> On 15 May 2008, at 14:21, Randall Hauch wrote:
>>
>>> Right. Now I guess I have a question, tho, regarding the
>>> implementation of federation connectors to systems (e.g., file
>>> systems in particular) that don't have any natural support for
>>> transactions. Is implementing the connector as if it is XA-
>>> compliant a bad thing to do?
>>>
>>> On May 15, 2008, at 3:59 AM, Mark Little wrote:
>>>
>>>> As I said in an earlier email, there are significant differences
>>>> between compensating transactions and ACID transactions (of which
>>>> XA is just one possible implementation). You shouldn't offer
>>>> compensating transactions opaquely to users if they register
>>>> multiple 1PC-aware resources because the semantics are different.
>>>> Using them without understanding the implications can be a PITA
>>>> at best and cause significant data inconsistencies at worse
>>>> (compensations can fail or take an arbitrary amount of time to
>>>> resolve). ACID transactions are a pretty good default. If users
>>>> have multiple 1PC-aware resources then it may be in their best
>>>> interests to convert them to 2PC rather than be lulled into some
>>>> false sense of security that somehow a compensating transaction
>>>> will give them the same guarantees.
>>>>
>>>> Mark.
>>>>
>>>>
>>>>
>>>> On 14 May 2008, at 22:28, Randall Hauch wrote:
>>>>
>>>>> I agree that what you are suggesting is still transactional
>>>>> (except for the last source, which is not transactional). But
>>>>> we will likely need to supporting several non-XA sources (e.g.,
>>>>> file systems, applications, etc.) within an XA system. And, if
>>>>> we know the individual changes to each node for each source, we
>>>>> shouldn't we also be able to use compensating transactions to
>>>>> "rollback" changes to the non-XA system?
>>>>>
>>>>> I think there's value to supporting both. I just think the odds
>>>>> of having more than one non-XA source is pretty high.
>>>>>
>>>>> On May 14, 2008, at 4:22 PM, John P. A. Verhaeg wrote:
>>>>>
>>>>>> The big difference here seems to be the exposure of the updates
>>>>>> before the distributed transaction is committed. What I'm
>>>>>> suggesting is still XA-compliant, while compensating
>>>>>> transactions are not.
>>>>>>
>>>>>> Randall Hauch wrote:
>>>>>>> This is the behavior allowed by JBoss Transactions (Arjuna),
>>>>>>> and it seems useful. However, I wonder if we can do
>>>>>>> compensating transactions, is there still an advantage to
>>>>>>> supporting n-1 XA plus 1 non-XA?
>>>>>>>
>>>>>>> Cheers,
>>>>>>>
>>>>>>> Randall
>>>>>>>
>>>>>>> On May 14, 2008, at 4:10 PM, John P. A. Verhaeg wrote:
>>>>>>>
>>>>>>>> Seems like we ought to strive to support n-1 XA resources for
>>>>>>>> distributed transactions, allowing for the last participant
>>>>>>>> in a transaction (thus, this participants updates can't be
>>>>>>>> done in parallel with the other resources) to not support XA
>>>>>>>> transactions, but still participate in a distributed
>>>>>>>> transaction with other XA-compliant resources. Unlike
>>>>>>>> compensating transactions, the non-XA participant would
>>>>>>>> appear transactional and none of the updates would be visible
>>>>>>>> until the entire transaction was complete. It seems like
>>>>>>>> this could open up many more possible configurations for
>>>>>>>> customers.
>>>>>>>> _______________________________________________
>>>>>>>> dna-dev mailing list
>>>>>>>> dna-dev at lists.jboss.org
>>>>>>>> https://lists.jboss.org/mailman/listinfo/dna-dev
>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> dna-dev mailing list
>>>>>> dna-dev at lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/dna-dev
>>>>>
>>>>> _______________________________________________
>>>>> dna-dev mailing list
>>>>> dna-dev at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/dna-dev
>>>>
>>>> ----
>>>> Mark Little
>>>> mlittle at redhat.com
>>>>
>>>> JBoss, a Division of Red Hat
>>>> Registered Address: Red Hat UK Ltd, Amberley Place, 107-111
>>>> Peascod Street, Windsor, Berkshire, SI4 1TE, United Kingdom.
>>>> Registered in UK and Wales under Company Registration No. 3798903
>>>> Directors: Michael Cunningham (USA), Charlie Peters (USA), Matt
>>>> Parsons (USA) and Brendan Lane (Ireland).
>>>>
>>>
>>
>> ----
>> Mark Little
>> mlittle at redhat.com
>>
>> JBoss, a Division of Red Hat
>> Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
>> Street, Windsor, Berkshire, SI4 1TE, United Kingdom.
>> Registered in UK and Wales under Company Registration No. 3798903
>> Directors: Michael Cunningham (USA), Charlie Peters (USA), Matt
>> Parsons (USA) and Brendan Lane (Ireland).
>>
>
----
Mark Little
mlittle at redhat.com
JBoss, a Division of Red Hat
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SI4 1TE, United Kingdom.
Registered in UK and Wales under Company Registration No. 3798903
Directors: Michael Cunningham (USA), Charlie Peters (USA), Matt
Parsons (USA) and Brendan Lane (Ireland).
More information about the dna-dev
mailing list