Tom Jenkinson [
https://community.jboss.org/people/tomjenkinson] commented on the document
"TransactionMonitoringAndVisualization"
To view all comments on this document, visit:
https://community.jboss.org/docs/DOC-48255#comment-12041
--------------------------------------------------
RE: Data Model
To capture some extra information we discussed, it will be useful to maintain a separate
table of participants that each participant record links to. We discussed the naming of
the "ParticipantRecord" entity, initially we discounted "Branch" as
this was determined as possibly too XA specific (tbd). To extend on this, there would be
expected to be few "ResourceManager" rows, but many
"ParticipantRecord" rows.
We also discussed that we should maintain timestamps for everything, for example when the
Transaction is created, prepared, suspended. This also implies we would probably want to
keep a list of the state changes that the transaction has gone through rather than a
single status field. I am not so sure about this, do we want to be able to replay the
transaction state changes or give a view of the current transaction state (tbd). Also, the
ParticipantRecord is only maintaining the "vote" field. It is possible that the
record can be suspended/resumed, so I think maybe that needs a status field instead of
vote field (perhaps a list if we are supporting replay).
You are going to need to consider what a subordinate coordinator (JTS) is in the data
model. In JTS it sits behind a participant style interface functionally but in this model
I don't think you would want to record it as such. You can either use the Transaction
table (add a nullable list of subordinate transactions and a nullable parent) or create a
new table for it. Most properties would remain the same so tbd what the best course of
action is. Related to this, we discussed how it would be possible when different nodes are
processing their logs in parallel and submitting to the database, it would be possible
that the subordinate coordinator was added before the parent so we need to consider how
that would work. When a parent is added it will know the subordinates so you will know
when you have the full picture.
--------------------------------------------------