transaction support for packages
Need to build in transaction support for packages. a client should be able to
insert (or update) a bunch of components of a package and be sure that they all
succeed or all fail. This is especially important if we allow submissions as
"jar" files or otherwise. Still need to be able to insert individual compnents
Updated by Jing Tao almost 20 years ago
This is the summary for the conference call with Matt and Chad in April 17,
MetaCat need two other actions: The first one is startTransaction and the
other is endTransaction. Before client start uploading files, it first calls
startTransaction and metacat will assign a transactionid(like a session id) to
the user. Then client loads document or data file with same transactionid.
When user finishes uploading, it sends an endTransaction command. When metacat
gets this endTransaction command, it will submit the whole transaction to db.
If before sending enTransaction, something failed, metacat will rollback
everything already sending to it during this transaction. If user never sends
a endTransaction, timeout mechanisms will make db rollback.
This will change the communication way between metacat and client. Client, for
example, morpho will be changed too. This causes version compatability issue.
MetaCat need to be considered to support both old and new communication ways.
Updated by Matt Jones almost 20 years ago
Agreed. In addition, this mechanism allows for all of the access control rules
for a package to be applied to all of the components of a package. If the EML
has the data listed at an online metacat URL, the EML access control rules will
be applied to the data if the data is loaded in the same transaction as the
metadata. For that matter, any object that is loaded in the same transaction
will be associated with the ACL in the metadata.
This is related to any changes to EML that may occur to make ACLs work properly.