Detection of Missing Transaction Dependent Files During Automatic Recoveryc-treeACE is designed to permit automatic recovery and rollbacks to properly handle deleted and renamed transaction dependent files (TRANDEP) without requiring the SKIP_MISSING_FILES configuration to be enabled. When a rollback was attempted after deleting a TRANDEP file externally (that is, the file was deleted using a system call outside of c-tree) the rollback succeeded even though in this case there really was a missing file. The rollback improperly ignored the missing file. If SKIP_MISSING_FILES is active, then the rollback should succeed even with the missing file, however, should only ignore missing files for which there is a transaction controlled explanation such as a file delete or file rename. The following sequence of operations demonstrate this behavior: TRANBEG CREATE TRANDEP FILE ENDTRAN TRANBEG ADDREC ENDTRAN CLOSE FILE Delete file with a system call Rollback to the time between Steps 3 & 4 The rollback encounters the missing file, however, ignores the missing file. Furthermore, this example also demonstrates that if a close and reopen is added between Steps 3 & 4, then the file is correctly detected that it is actually missing during rollback. The recovery process has been modified such that a CLSTRAN log entry will attempt to open the file (if it is not already opened). Upon detecting a CLSTRAN entry triggers putting a missing file on the list of missing files. To revert this behavior, the server configuration keyword, COMPATIBILITY NO_CLSTRAN_OPEN is provided. For stand alone models, the #define NO_ctBEHAV_SKIPAUTO_CLSTRAN is available to turn off the new behavior. |
|||