IP Library Granted Patent US 7,065,674
Granted Patent B2
US 7,065,674 · App. 10/209,773 · Granted Jun 20, 2006

Computer system fault recovery using distributed fault-recovery information

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,065,674
App. No.
10/209,773
Granted
Jun 20, 2006
Kind
B2
Abstract

Fault-recovery information for transactional operations between computer systems and the outcome of those operations is logged at the originating point of the units of work, such as source-computer systems, which may include client computers in a client/server system. By using these distributed logs of fault-recovery information, a target-computer system, which may include a server computer, can reconstruct the target-computer system's previous interaction with various source-computer systems. Source-computer systems may use a proxy server for logging fault-recovery information to persistent storage. A target-computer system may digitally sign the fault-recovery information it sends to a source-computer system thereby making the fault-recovery information's authenticity verifiable. Similarly, the target-computer system may encrypt the fault-recovery information before sending it to the source-computer system to preserve the privacy of the fault-recovery information.

Claims (68)

1. A source-computer system that participates in fault recovery of a plurality of target-computer systems, the source-computer system having at least one source computer and comprising:

a logging module that logs, within the source-computer system, target-system fault-recovery information for the plurality of target-computer systems, wherein the target-system fault-recovery information specifies a plurality of operations and outcomes describing interaction between a source computer within the source-computer system and the plurality of target-computer systems; and

wherein, during fault recovery of the respective target-computer systems, the source-computer system provides to at least one of the plurality of target-computer systems a portion of the target-system fault-recovery information that pertains to the at least one of the plurality of target-computer systems, wherein the portion of the target-system fault recovery information includes log records that, when played back by the at least one target-computer system, caused the at least one target-computer system to return to a target-computer-system state that existed before occurrence of a target-computer-system fault for which fault recovery is being performed.

2. The source-computer system of claim 1 , wherein the logging module runs on a proxy server that is separate from the source computer.

3. The source-computer system of claim 1 , wherein the proxy server is geographically remote from the source computer.

4. The source-computer system of claim 1 , wherein the target-system fault-recovery information identifies to which of the plurality of target-computer systems the target-system fault-recovery information pertains.

5. The source-computer system of claim 1 , wherein at least source of the target-system fault-recovery information logged within the source-computer system is provided to the source-computer system by at least one of the target-computer systems.

6. The source-computer system of claim 5 , wherein the target-system fault-recovery information logged within the source-computer system is digitally signed such that the target-system fault-recovery information's authenticity is verifiable.

7. The source-computer system of claim 5 , wherein the target-system fault-recovery information logged within the source-computer system is encrypted thereby preserving the privacy of the target-system fault-recovery information.

8. The source-computer system of claim 5 , wherein the source-computer system receives, from at least one of the target-computer systems, at least a portion of the target-system fault-recovery information in a target-system-specific format.

9. The source-computer system of claim 1 , wherein at least some of the target-system fault-recovery information logged within the source-computer system replicates target-system fault-recovery information that describes interaction between at least one of the target-computer systems and a system other than the source-computer system.

10. The source-computer system of claim 1 , wherein the source-computer system provides, to a system other than the target-computer system, at least some of the target-system tank-recovery information logged within the source-computer system thereby replicating at least a portion of the target-system fault-recovery information.

11. The source-computer system of claim 1 , wherein a source computer of the source-computer system is a computer that is part of a peer-to-peer system.

12. The source-computer system of claim 1 , wherein a source computer of the source-computer system is a client computer in a client-server system.

13. The source-computer system of claim 1 , wherein the source-computer system monitors at least one of the target-computer systems and upon detecting a target-system fault, initiates target-system fault recovery for interaction that the source-computer system has had with the target-computer system for which a fault has been detected.

14. The source-computer system of claim 1 , wherein, during fault recover of at least one of the target-computer systems, the source-computer system communicates with a second source-computer system about which source-computer systems should provide fault-recovery information to the target-computer system being recovered.

15. A target-computer system that uses distributed fault-recovery information for recovering from target-system faults, the target-computer system comprising:

a source-system-identity storage module that coordinates storage of an identity of each source-computer system that the target-computer system has interacted with and which has logged target-system fault-recovery information, wherein the source-system-identity storage module coordinates storage of an identity of at least one proxy server used on be behalf of a least one source computer fix logging target-system fault-recovery information;

a fault-recovery-information-retrieval module that retrieves the previously logged target-system fault-recovery information from at least one source-computer system based on the at least one stored identity of source-computer systems that the target-computer system has interacted with; and

a fault-recovery module that uses the retrieved target-system fault-recovery information for recovering from a target-system fault.

16. The target-computer system of claim 15 , wherein the source-system-identity storage module provides the at least one identity of source-computer systems to at least one source-computer system for storage by the source-computer system.

17. The target-computer system of claim 15 , wherein the source-system-identity storage module provides the at least one identity of source-computer systems to a plurality of source-computer systems for storage by the plurality of source-computer systems.

18. The target-computer system of claim 17 , wherein the source-system-identity storage module provides the at least one identity of source-computer systems to an escrow server far storage by the escrow server.

19. The target-computer system of claim 17 , wherein the target-system fault-recovery information specifies a plurality of operations and outcomes describing interaction between the target-computer system and each source-computer system that has interacted with the target-computer system.

20. The target-computer system of claim 17 , wherein the target-computer system provides at least some of the target-system fault-recovery information to a least one source-computer system for logging by the source-computer system.

21. The target-computer system of claim 20 , wherein the target-computer system serializes the target-system fault-recovery information provided to the at least one source-computer system.

22. The target-computer system of claim 21 , wherein the fault-recovery module verifies that target-system fault-recovery information retrieved from the at least one source-computer system is properly serialized.

23. The target-computer system of claim 20 , wherein the target-system fault-recovery information provided to the at least one source-computer system is digitally signed such that the target-system fault-recovery information's authenticity is verifiable.

24. The target-computer system of claim 20 , wherein the target-system fault-recovery information provided to the at least one source-computer system is encrypted thereby preserving the privacy of the target-system fault-recovery information.

25. The target-computer system of claim 21 , wherein the target-computer system provides the target-system fault-recovery information to the at least one source-computer system in a target-system-specific format.

26. The target-computer system of claim 20 , wherein the target-computer system provides a target-system fault-recovery checkpoint to at least one of the source-computer systems.

27. The target-computer system of claim 26 , wherein the target-computer system provides a plurality of target-system fault-recovery checkpoints to a corresponding plurality of source-computer systems.

28. The target-computer system of claim 20 , wherein the target-computer system provides a plurality of portions of a target-system fault-recovery checkpoint to a corresponding plurality of source-computer systems.

29. The target-computer system of claim 15 , wherein the proxy sewer is geographically remote from the at least one source computer.

30. The target-computer system of claim 15 , wherein the target-computer system includes a server in a client-server system.

31. The target-computer system of claim 15 , wherein the target-computer system includes a computer in a peer-to-peer system.

32. A method performed by a source-computer system of participating in fault recovery of a target-computer system, wherein the source-computer system includes at least one source computer, the method comprising:

logging target-system fault-recovery information within the source-computer system, wherein the target-system fault-recovery information specifies a plurality of operations and outcomes describing interaction between the source-computer system and the target-computer system; and

supplying the target-system fault-recovery information from the source-computer system to the target-computer system during, fault recovery of the target-computer system, wherein the target-system fault recovery information includes log records that, when played back by the target-computer system, cause the target-computer system to return to a target-computer-system state that existed before occurrence of a target-computer-system fault for which fault recovery is being performed.

33. The method of claim 32 , further comprising using the target-system fault-recovery information as the source-computer system's audit trail for the source-computer system's interaction with the target-computer system.

34. The method of claim 32 , further comprising: using the target-system fault-recovery information for detecting occurrence of target-computer-system faults.

35. The method of claim 32 , wherein the target-system fault-recovery information identifies the target-computer system.

36. The method of claim 32 , wherein the source-computer system receives from the target-computer system at least some of the target-system fault-recovery information logged within the source-computer system.

37. The method of claim 36 , wherein the target-system fault-recovery information logged within the source-computer system is digitally signed such that the target-system fault-recovery information's authenticity is verifiable.

38. The method of claim 36 , wherein the target-system fault-recovery information logged within the source-computer system is encrypted thereby preserving the privacy of the target-system fault-recovery information.

39. The method of claim 36 , further comprising receiving the target-system fault-recovery information from the target-computer system in a target-system-specific format.

40. The method of claim 32 , wherein at least some of the target-system fault-recovery information logged within the source-computer system replicates target-system fault-recovery information tat describes interaction between the target-computer system and a system other than the source-computer system.

41. The method of claim 32 , further comprising replicating at least some of the target-system fault-recovery information logged within the source-computer system by providing, to a system other than the target-computer system, the replicated target-system fault-recovery information.

42. The method of claim 32 , further comprising using a proxy server to store the target-system fault-recovery information.

43. The method of claim 32 , further comprising monitoring the target-computer system and, upon detecting a target-system fault, initiating, from the source-computer system, target-system fault recovery for the source-computer system's interaction with he target-computer system.

44. The method of claim 32 , further comprising communicating with a second source-computer system about which source-computer systems should provide fault-recovery information to the target-computer system.

45. A method of using distributed fault-recovery information for fault-recovery of a target-computer system, the method comprising:

storing, outside the target-computer system, a plurality of identities of source-computer systems that have interacted with the target-computer system, wherein the plurality of identities of source-computer systems that have interacted with the target-computer system includes an identity of at least one proxy server that has logged target-system fault-recovery information on behalf of at least one source computer;

retrieving previously logged target-system fault-recovery information from a plurality of source-computer systems based on the stored plurality of identities of source-computer systems that have interacted with the target-computer system; and

using the retrieved target-system fault-recovery information for recovering from a target-system fault.

46. The method of claim 45 , wherein the target-system fault-recovery information specifies a plurality of operations and outcomes describing interaction between at least one of the source-computer systems and the target-computer system.

47. The method of claim 45 , further comprising: using the target-system fault-recovery information for detecting occurrence of target-computer-system faults.

48. The method of claim 45 , wherein the target-computer system provides at least some of the target-system fault-recovery information to the source-computer system for logging.

49. The method of claim 48 , wherein the target-computer system serializes the target-system fault-recovery information provided to the source-computer system.

50. The method of claim 49 , wherein the target-computer system verifies that target-system fault-recovery information retrieved from the source-computer system is properly serialized.

51. The method of claim 48 , further comprising digitally signing the target-system fault-recovery information provided to the source-computer systems such that the target-system fault-recovery information's authenticity is verifiable.

52. The method of claim 51 , further comprising storing, separates from the source-computer systems and separate from the target-computer system, at least one digital-signature key used for verifying the authenticity of the target-system fault-recovery information provided to the source-computer system.

53. The method of claim 48 , further comprising encrypting the target-system fault-recovery information provided to the source-computer system thereby preserving the privacy of the target-system fault-recovery information.

54. The method of claim 53 , further comprising storing, separate from the source-computer systems and separate from the target-computer system, at least one encryption key used for encrypting the target-system fault-recovery information provided to the source-computer systems.

55. The method of claim 45 , wherein the target-computer system provides at least some of the target-system fault-recovery information to the source-computer system in a target-system-specific format.

56. The method of claim 45 , further comprising providing at least one target-system fault-recovery checkpoint to at least one of the source-computer systems.

57. The method of claim 56 , further comprising providing a plurality of target-system fault-recovery checkpoints to a corresponding plurality of the source-computer systems.

58. The method of claim 45 , further comprising providing a plurality of portions of a target-system fault-recovery checkpoint to a corresponding plurality of the source-computer systems.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2002
From: CABRERA, LUIS FELIPE; THEIMER, MARVIN MICHAEL
To: MICROSOFT CORPORATION
Reel/Frame 013171/0725 →