In my current project I have an editor for XML documents, which are quite large. So editing takes time. The problem is, that when the users wishes to save the document, Tamino gives a “Transaction timeout” error.
I increased the “maximum transaction duration” parameter in SMH, but only to find that documents locked by clients that terminated abnormally stay locked for ages. So this is not the way to go for me.
Is there a way to keep a transaction alife? Can I somehow reset the timeout counter and thus indicate the client still exists and the user is editing?
I don’t think this is what transaction processing was made for. Maybe you need a lock concept (perhaps a tiny attribute @locked=“true|false” at the root element)? It’s surely better suited. Can you afford the time to implement this? No. I thought so.
Perhaps you’ve tried this already, but do repreated _diagnose=ping-commands, issued in the transaction’s context keep the transaction open?
Of course I could implement a locking mechanism by myself. But even with this little attribute @locked=“true|false”, what is going to happen with documents that are locked and then the client terminates abnormally, or the connection is broken?
The same problems apply here, but as this would be code completely under my control I could build some keepalive functionality into it.