IP Library › Granted Patent US 10,884,837
Granted Patent B2
US 10,884,837 · App. 16/179,360 · Granted Jan 5, 2021

Predicting, diagnosing, and recovering from application failures based on resource access patterns

Inventors: Matthew David Young (Groton, MA); Kristofer Hellick Reierson (Acton, MA); Eric Jewart (Waltham, MA)
Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
G06F11/0772G06F9/542G06F11/008G06F11/079G06F11/0721G06F11/0754G06F11/0793G06F11/3452G06F11/3476G06F2201/865
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 10,884,837
App. No.
16/179,360
Granted
Jan 5, 2021
Kind
B2
Abstract

Technologies are described herein for differentiating normal operation of an application program from error conditions to predict, diagnose, and recover from application failures. Access to resources by the application program is monitored, and resource access events are logged. Resource access patterns are established from the logged resource access events utilizing computer pattern recognition techniques. If subsequent access to resources by the application program deviates from the established patterns, then a user and/or administrator of the application program is notified of a potential error condition based on the detected deviation. In addition, sequences of resource access events that deviate from the established resources access patterns are correlated with an error condition based on a temporal proximity to the time of occurrence of the error to provide diagnostic information regarding the error.

Claims (40)

1. A method, implemented at one or more hardware processors, the method comprising, based at least on execution of an application program:

monitoring a plurality of resource access requests by the application program;

identifying one or more resource access patterns from a plurality of resource access events;

based on at least one of the plurality of resource access events, detecting a deviation from the identified one or more resource access patterns;

predicting one or more error conditions based at least on the detected deviation;

correlating at least one of the one or more error conditions to the at least one resource access event, based at least on a temporal proximity of the at least one resource access event to the at least one error condition; and

generating a communication associated with the at least one resource access event correlated to the at least one error condition.

2. The method of claim 1 , further comprising, based on monitoring the plurality of resource access requests, logging the plurality of resource access events to an event log.

3. The method of claim 2 , further comprising restoring an application state of the application program by replaying one or more of the plurality of resource access events from the event log.

4. The method of claim 1 , further comprising identifying an application failure based on detecting the deviation from the identified one or more resource access patterns.

5. The method of claim 4 , further comprising replaying one or more of the plurality of resource access events that occurred since a last checkpoint of application state was taken and before the application failure.

6. The method of claim 5 , wherein the one or more of the plurality of resource access events are replayed after restarting the application program.

7. The method of claim 1 , wherein plurality of resource access events comprise calls to resource application programming interfaces (APIs) made by the application program.

8. The method of claim 7 , further comprising logging data from parameter values specified in calls to the resource APIs for adding, modifying, or deleting data by the application program.

9. A system comprising:

one or more processors; and

one or more computer-readable media having stored thereon computer-executable instructions that are executable by the one or more processors to perform at least the following based on execution of an application program:

monitor a plurality of resource access requests by the application program;

identify one or more resource access patterns from a plurality of resource access events;

based on at least one of the plurality of resource access events, detect a deviation from the identified one or more resource access patterns;

predict one or more error conditions based at least on the detected deviation;

correlate at least one of the one or more error conditions to the at least one resource access event, based at least on a temporal proximity of the at least one resource access event to the at least one error condition; and

generate a communication associated with the at least one resource access event correlated to the at least one error condition.

10. The system of claim 9 , the computer-executable instructions also being executable by the one or more processors to log the plurality of resource access events to an event log.

11. The system of claim 10 , the computer-executable instructions also being executable by the one or more processors to restore an application state of the application program by replaying one or more of the plurality of resource access events from the event log.

12. The system of claim 9 , the computer-executable instructions also being executable by the one or more processors to identify an application failure based on detecting the deviation from the identified one or more resource access patterns.

13. The system of claim 12 , the computer-executable instructions also being executable by the one or more processors to replay one or more of the plurality of resource access events that occurred since a last checkpoint of application state was taken and before the application failure.

14. The system of claim 13 , wherein the one or more of the plurality of resource access events are replayed after restarting the application program.

15. The system of claim 9 , wherein plurality of resource access events comprise calls to resource application programming interfaces (APIs) made by the application program.

16. The system of claim 15 , the computer-executable instructions also being executable by the one or more processors to log data from parameter values specified in calls to the resource APIs for adding, modifying, or deleting data by the application program.

17. A computer program product comprising one or more hardware storage devices having stored thereon computer-executable instructions that are executable by one or more processors to perform at least the following based on execution of an application program:

monitor a plurality of resource access requests by the application program;

identify one or more resource access patterns from a plurality of resource access events;

based on at least one of the plurality of resource access events, detect a deviation from the identified one or more resource access patterns;

predict one or more error conditions based at least on the detected deviation;

correlate at least one of the one or more error conditions to the at least one resource access event, based at least on a temporal proximity of the at least one resource access event to the at least one error condition; and

generate a communication associated with the at least one resource access event correlated to the at least one error condition.

18. The computer program product of claim 17 , the computer-executable instructions also being executable by the one or more processors to log the plurality of resource access events to an event log.

19. The computer program product of claim 17 , the computer-executable instructions also being executable by the one or more processors to identify an application failure based on detecting the deviation from the identified one or more resource access patterns.

20. The computer program product of claim 17 , wherein plurality of resource access events comprise calls to resource application programming interfaces (APIs) made by the application program.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2018
From: YOUNG, MATTHEW DAVID; REIERSON, KRISTOFER HELLICK; JEWART, ERIC
To: MICROSOFT CORPORATION
Reel/Frame 047398/0442 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2018
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 047398/0549 →
Continuity (3)
Continuation 14938542 · Nov 11, 2015
Continuation 12978663 · Dec 27, 2010
Related Publication 20190073258A1 · Mar 7, 2019