[ 
https://issues.apache.org/jira/browse/GERONIMO-6542?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jörn Gersdorf updated GERONIMO-6542:
------------------------------------
    Description: 
Transaction IDs are logged in a wrong format by XidImpl.toString().

We are currently investigating issues in a distributed transaction setup 
involving WebsphereMQ and try to correlate hanging transactions from MQ with 
transaction behaviour by Aries/Geronimo. Therefore we set loglevel 
{{org.apache.geronimo.transaction.manager}} to {{TRACE}} which lets 
{{WrapperNamedXAResource}} nicely log all XA activities.

However, transaction XIDs are logged in a wrong format. E. g. the transaction 
Xid 

{{363720AB4C0100006F72672E6170616368652E61726965732E7472616E73616374696F6E00000000000000000000000000000000000000000000000000000000}}
 

will be logged as 

{{363720ffffffab4c1006f72672e6170616368652e61726965732e7472616e73616374696f6e0000000000000000000000000000}}.

This makes it hard to find and correlate transaction Xids in the log.

Reason lies in {{XidImpl.toString()}} and is twofold:

1. {{Integer.toHexString(bgid[i])}} will append a single byte as just one 
character for byte values {{0 <= bgid[i] <= 15}} (e. g. "1" instead of "01").

2. {{bgid[i]}} is a signed byte value. Negative values will be logged wrongly 
(e. g. "ab" will be logged as "ffffffab").

Patch solving these issues is attached.

  was:
Transaction IDs are logged in a wrong format by XidImpl.toString().

We are currently investigating issues in a distributed transaction setup 
involving WebsphereMQ and try to correlate hanging transactions from MQ with 
transaction behaviour by Aries/Geronimo. Therefore we set loglevel 
{{org.apache.geronimo.transaction.manager}} to {{TRACE}} which lets 
{{WrapperNamedXAResource}} nicely log all XA activities.

However, transaction XIDs are logged in a wrong format. E. g. the transaction 
Xid 
{{363720AB4C0100006F72672E6170616368652E61726965732E7472616E73616374696F6E00000000000000000000000000000000000000000000000000000000}}
 will be logged as 
{{363720ffffffab4c1006f72672e6170616368652e61726965732e7472616e73616374696f6e0000000000000000000000000000}}.

Reason lies in {{XidImpl.toString()}} and is twofold:

1. {{Integer.toHexString(bgid[i])}} will append a single byte as just one 
character for byte values {{0 <= bgid[i] <= 15}} (e. g. "1" instead of "01").

2. {{bgid[i]}} is a signed byte value. Negative values will be logged wrongly 
(e. g. "ab" will be logged as "ffffffab").

Patch solving these issues is attached.


> Logging of XIDs/TransactionIds is wrong
> ---------------------------------------
>
>                 Key: GERONIMO-6542
>                 URL: https://issues.apache.org/jira/browse/GERONIMO-6542
>             Project: Geronimo
>          Issue Type: Bug
>      Security Level: public(Regular issues) 
>          Components: transaction manager
>         Environment: JBoss Fuse 6.1-610379, Apache Geronimo 
> TransactionManager 3.3.1
>            Reporter: Jörn Gersdorf
>            Priority: Minor
>
> Transaction IDs are logged in a wrong format by XidImpl.toString().
> We are currently investigating issues in a distributed transaction setup 
> involving WebsphereMQ and try to correlate hanging transactions from MQ with 
> transaction behaviour by Aries/Geronimo. Therefore we set loglevel 
> {{org.apache.geronimo.transaction.manager}} to {{TRACE}} which lets 
> {{WrapperNamedXAResource}} nicely log all XA activities.
> However, transaction XIDs are logged in a wrong format. E. g. the transaction 
> Xid 
> {{363720AB4C0100006F72672E6170616368652E61726965732E7472616E73616374696F6E00000000000000000000000000000000000000000000000000000000}}
>  
> will be logged as 
> {{363720ffffffab4c1006f72672e6170616368652e61726965732e7472616e73616374696f6e0000000000000000000000000000}}.
> This makes it hard to find and correlate transaction Xids in the log.
> Reason lies in {{XidImpl.toString()}} and is twofold:
> 1. {{Integer.toHexString(bgid[i])}} will append a single byte as just one 
> character for byte values {{0 <= bgid[i] <= 15}} (e. g. "1" instead of "01").
> 2. {{bgid[i]}} is a signed byte value. Negative values will be logged wrongly 
> (e. g. "ab" will be logged as "ffffffab").
> Patch solving these issues is attached.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to