When a TimeoutException is reported, the exception prints lock information (IdentityLock.toString(true)), ie.
Read lock owners: 
Write lock owner: GlobalTransaction:<172.26.250.183:35277>:13350
, lock info: write owner=GlobalTransaction:<172.26.250.183:35277>:13350 (activeReaders=0, activeWriter=Thread[http-172.26.250.183-8180-10,5,jboss], waitingReaders=0, waitingWriters=0, waitingUpgrader=0)
This is quite useful for debugging purpouses because it reports which thread is holding the lock as well
as the transaction id.
However, when an UpgradeException is reported, this information is not provided:
Read lock owners: [GlobalTransaction:<adrxww03:32804>:1628]
Write lock owner: null
It'd be nice if UpgradeException could print IdentityLock information as it would help debugging which thread is holding the locks