On Wed, 27 Jul 2005, Oliver Jowett wrote:
> Oliver Jowett wrote:
>
>> Shouldn't the XAResource check the server version on construction or on
>> start()/recover() to make sure that it's actually going to be able to
>> use PREPARE TRANSACTION later? Or is erroring out with a syntax error at
>> the point of prepare() sufficient? (I'd like to see a better error
>> message there at least)
>
> More generally: can we get XAExceptions thrown with useful messages? It
> seems like there's no direct constructor that gives you both message and
> error code, but the error code is a public field so you can set it after
> construction before throwing.
Short answer: yes.
Long answer:
Since the client of a PGXAResource instance is a transaction manager I see
no benefit. The transaction manager will make a decision on what to do
based on the code carried by XAException and carry on. Maybe it will log
a message.
> Also, in the case where the failure is caused by another exception, we
> should generally chain that exception rather than writing it to the log
> writer. See how PSQLException does this for details..
>
> There's enough meddling there that it might be worth subclassing
> XAException to automate it all.. or have a helper method somewhere.
I'm just not sure it's worth the effort. I did put in log messages that I
think will help debug problems and whatnot. But exceptions are going to
be handled by the TM and will not be rethrown to any user/app code.
Maybe we should do more logging? I'm not quite sure that would be much
benefit either. I've found the current level of logging to be adequate.
On a related note, I think we should do some kind of app server testing
before this code is released. I think this calls for Cactus. What do you
think? I know how to use JBoss. Maybe someone else could write build
files to deploy to other app servers.
Michael