]
Tom Jenkinson updated JBTM-1573:
--------------------------------
Issue Type: Enhancement (was: Bug)
Transaction timeout incompatible with block forever
---------------------------------------------------
Key: JBTM-1573
URL:
https://issues.jboss.org/browse/JBTM-1573
Project: JBoss Transaction Manager
Issue Type: Enhancement
Components: BlackTie
Reporter: Tom Jenkinson
Attachments: blocking call.log
Currently we set a transaction timeout (e.g. in TestRollbackOnly.cxx we call
tx_set_transaction_timeout)
This ends up putting a timetolive on the message of the same duration.
Now, if this message is not received within the period of time it will expire.
However we also use a block forever waiting for the response.
This can lead to a call never returning.
i.e.
server advertises queue
client sends message with small timeout (e.g. 4) and then blocks forever waiting
response
server gets round to advertising queue 5 seconds later but never sees the clients initial
request
client is blocked forever
I realise that we are meant to block forever when a client issues a tpcall under
transactional conditions but something needs to be done as this can easily happen on slow
machines?
Perhaps we need to make use of the DLQ to wake up the blocked client with an error
message??
Perhaps the client doesn't block forever and just calls txrollback if nothing is
heard back??