I put a tps in the startup procedure that opens a connection to sqlite, and then a tps in the inbound procedure that extracts the data from each incoming message and performs an insert, using the same ‘handle’ obtained in the startup tps. This part is working fine.
My goal is to make this non-invasive and require the least amount of maintenance. I’m not sure I would get any significant value from any kind of transaction auditor without opening up the message and extracting some of the content.
I’m looking for comments on the value of this information, more specifically, the value of being able to find all the information in one place (one sql query), and comments on the support and upheaval required.
I am faced with the problem of extracting the data. I have to update each existing thread (if I want to audit it’s transactions). I can either update the routing, to send a copy of a message to a new audit thread, or I can update the post-protocol upoc with a new tps that makes the sqlite insert directly. The latter seems more invasive, and more problematic (concerning the sqlite connections). The former seems less of a bottleneck because it is asynchronous; if the audit service fails, the transactions continue to flow. Can anyone comment on the performance trade-offs? I’m thinking that it is ‘relatively easy’ to just add another route to a thread.. being new to Cloverleaf I realize this may be a naive notion; I’m sure I don’t understand all the consequences of these updates.
Finally, I can’t get some of this scheme to work in the test environment. I’ve got an inbound thread and an outbound thread. They both have an extra route to the audit thread. The copied message from the inbound thread is sent to the audit thread successfully, but there is nothing sent from the outbound thread to the audit thread. I do see the outbound thread successfully processing the application message (using fileset-local) and writing the data to the specified output file. But the transaction ends there and the entry in Route Messages seems to be ignored. I’ve tried using an hci static thread and also the same message name that I used in the inbound thread. Any ideas?
Thanks, Pete
Peter Heggie