EP0454340A2

File-based transaction management system for a computing system.

Abstract

A data processing system is described which includes both volatile and nonvolatile memories and a distributed file control software system. A method is employed by the data processing system to recover from a malfunction which occurs during a file transaction and comprises the steps of: providing a log file to maintain a record of atomic file transactions; recording in volatile memory, old and new data images which result during a file transaction; writing the before image to a portion of the log file which is contained in nonvolatile memory; and in the event of a malfunction, employing the log file in nonvolatile memory to determine the status of an active file transaction and rolling back the active transaction in the event the malfunction occurred prior to its completion. The new data image in a transaction is only written to the nonvolatile memory after the old data image has been written to nonvolatile memory.

EP0454340A2, drawing sheet 1
Sheet 1 of 8

Term

Term ended

Projected expiry passed 16 April 2011, 15.4 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

11 claims: 5 independent, 6 dependent

  1. 1
    A method of operation of a data processing system which includes a file-based software system, comprising:providing a log file of atomic file transactions, in both volatile and nonvolatile memory in said data processing system;providing a first variable indicative of the number of data segments in a portion of said log file which is in nonvolatile memory;providing a second variable indicative of the total number of data segments in said log file, including data segments in said log file portion stored in volatile memory;commencing a file transaction relating to old data, recording an image of said old data in said log file portion stored in volatile memory and assigning to said old data image, a value of said second variable;performing said file transaction to create new data, recording an image of said new data in said log file in volatile memory and assigning to said new data image, the value of said second variable assigned to said old data image;and    writing said new data image into nonvolatile memory only when the value of said second variable assigned to said new data image is equal to or less than the value of said first variable, indicating that said old data image is already recorded in said nonvolatile memory.
  2. 2
    A method as claimed in Claim 1 wherein said nonvolatile memory comprises a disk memory, and said first variable indicates the number of bytes of said log file recorded on said disk.
  3. 3
    A method as claimed in Claim 2 wherein said second variable indicates the total number of bytes in said log file.
  4. 4
    A method as claimed in Claim 3 wherein a transaction's new data image is not written to a base data file on said disk memory until said transaction's old image has been written to disk memory.
  5. 5
    A method as claimed in any preceding claim, wherein said data processing system comprises a pluriality of nodes, each node including computing means with volatile memory and nonvolatile memory, an atomic file transaction including file actions at more than one node, said method comprising the added steps of:performing at a participant node, file actions requested by an originating node, said participant node employing locally generated first and second variables in the same manner as said originating node;notifying said originating node of an ability to complete or roll-back said requested file actions at said participant node;and    upon receipt of a subsequent commit instruction from said originating node, said participant node writing, in its nonvolatile memory, first a new data image derived as a result of said requested file actions at said participant node aid then a completed mark to its log file.
  6. 6
    A data processor comprising:volatile and non-volatile memory;means for storing data files in the memory;means for storing, in the volatile memory, a copy of a data item in one of the data files (an "old image") before a data processing transaction to modify that data item, and a copy of that data item (a "new image") after the transaction has been performed;means for copying the old and new images into a log file stored in non-volatile memory;and    means, in the event of a malfunction of the data processor before completion of the transaction, for restoring the data item to its state before the transaction commenced, using the old image stored in non-volatile memory.
  7. 7
    A data processor as claimed in Claim 6, further comprising:means for ensuring that the old image has been copies from volatile memory to non-volatile memory before allowing the new image to be copied from volatile memory to non-volatile memory.
  8. 8
    A data processor as claimed in Claim 6 or Claim 7, further comprising:means for preventing any modification to the date file until the old image has been copied into the log file in non-volatile memory.
  9. 9
    A data processor as claimed in any of Claims 6 to 8, in which the restoring means comprise:means for determining whether the transaction had completed at the time of the malfunction;and    means responsive to the determining means, for (a) if the transaction had not completed, restoring the data item to its state before the transaction commenced, using the old image stored in non-volatile memory;or (b) if the transaction had completed, copying the new image stored in non-volatile memory to replace that data item in the data file;and in which:    the non-volatile memory is magnetic disk storage.
  10. 10
    A parallel data processing system comprising:a plurality of interlinked nodes, each node being a data processor as claimed in any of Claims 6 to 9.
  11. 11
    A parallel data processing system as claimed in Claim 10, in which:an transaction to modify a data item includes data processing operations performed at one or more slave nodes responsive to an originating node;each slave node includes means for communicating to the originating node whether the data processing operations performed at that slave node have completed successfully.