Version 6 (modified by 14 years ago) ( diff ) | ,
---|
FDO RFC 58 - Keep It after One Long Transaction is Committed or Rollbacked
This page contains a request for comments document (RFC) for the FDO Open Source project. More FDO RFCs can be found on the RFCs page.
Status
RFC Template Version | 1.1 |
Submission Date | March 29, 2011 |
Last Modified | Greg Boone, April 13, 2011 |
Author | Leaf Li |
RFC Status | Ready For Review |
Implementation Status | Ready For Review |
Proposed Milestone | 3.7.0.0 |
Assigned PSC guide(s) | Orest Halustchak, Greg Boone |
Voting History | (vote date) |
+1 | |
+0 | |
-0 | |
-1 |
Overview
The RFC is to add an extra parameter to FdoICommitLongTransaction and FdoIRollbackLongTransaction commands to indicate whether to remove the long transaction after it is committed or rollbacked successfully or to keep it.
Motivation
Currently after executing FdoICommitLongTransaction command successfully, FDO will merge changes in this long transaction to the parent version and delete the child version. FDO will similarly drop changes in a long transaction and remove it after executing FdoIRollbackLongTransaction command successfully. Based on feedback from ArcSDE users, they would like to see a merge/drop operation that does not remove the child. They want to keep using the child version to reuse for further editing work.
Proposed Solution
The proposed solution is to add an extra parameter to FdoICommitLongTransaction and FdoIRollbackLongTransaction commands to indicate whether to keep the long transaction in the version graph and not remove it. Its default value is false. It means removing the long transaction from version graph after it is committed or rollbacked. Changes to class FdoICommitLongTransaction and FdoIRollbackLongTransaction are as follows.
class FdoICommitLongTransaction: public FdoIFeatureCommand { public: /// \brief /// Returns true if keeping the long transaction after it is committed. /// Returns false if remove the long transaction after it is committed. /// Default value for KeepLongTransaction is false. /// /// \return /// Returns true if keeping the long transaction after it is committed. /// FDO_API virtual FdoBoolean GetKeepLongTransaction () = 0; /// \brief /// Sets whether to keep the long transaction after it is committed. /// Default value for KeepLongTransaction is false. /// /// \param value /// Input one boolean value to indicate whether to keep the committed /// long transaction /// /// \return /// Returns nothing /// FDO_API virtual void SetKeepLongTransaction (FdoBoolean value) = 0; ...... }; class FdoIRollbackLongTransaction : public FdoIFeatureCommand { public: /// \brief /// Returns true if keeping the long transaction after it is rollbacked. /// Returns false if remove the long transaction after it is rollbacked. /// Default value for KeepLongTransaction is false. /// /// \return /// Returns true if keeping the long transaction after it is rollbacked. /// FDO_API virtual FdoBoolean GetKeepLongTransaction () = 0; /// \brief /// Sets whether to keep the long transaction after it is rollbacked. /// Default value for KeepLongTransaction is false. /// /// \param value /// Input one boolean value to indicate whether to keep the rollbacked /// long transaction /// /// \return /// Returns nothing /// FDO_API virtual void SetKeepLongTransaction (FdoBoolean value) = 0; ...... };
Implications
ArcSDE provider will be modified to support this extra parameter.
Test Plan
ArcSDE provider unit tests will be expanded to test the proposed enhancements defined above.
Funding/Resources
Autodesk to provide resources / funding