← Back to Patent Explorer
US6330689B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Server architecture with detection and recovery of failed out-of-process application

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1998-04-23
•
Granted: 2001-12-11
•
Expires: 2018-04-23
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A server architecture has a server program to receive client requests and multiple applications to process the requests. Each application comprises a collection of agents that can be invoked to process the requests and an application manager that manages the collection of agents. The agents within the associated collection are independent from, but dynamically accessible by, the application manager. Depending on the request, the application manager selects one or more agents to generate content to be returned to the client. An application manager director manages the application managers and facilitates delivery of the client requests from the server program to the suitable application. The application managers are independent from, but dynamically accessible by, the application manager director. For a given request, the director selects the appropriate application manager to handle the request. The application manager, in turn, selects the appropriate agent to process the request. The applications, including the agents and associated application managers, can be run either in-process or out-of-process with the server program. The server architecture has a detection and recovery subsystem that detects when an out-of-process application crashes and then recovers the application from that crash. The subsystem logs requests when they are passed to the out-of-process application, and remove the requests from the log when responses to the requests are returned from the application. If the out-of-process application crashes while one or more requests are outstanding, those requests remain listed on the log and thus readily identifiable. During recovery, the subsystem cleans up the outstanding requests until the log is cleared. Thereafter, the subsystem restarts the failed application to restore the service.

Inventors

  • 👤 Lei Jin
  • 👤 David L. Kaplan
  • 👤 Murali R. Krishnan

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 20:23
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/14; G06F11/1402; G06F11/1415; G06F11/1471

Claims Analysis

Total Claims: 42
Claim 1
Independent Claim 144 words
A server software architecture embodied on a computer-readable medium for implementation on a computer server system, the server software architecture comprising: a server program to receive a client request from a client and return a response to the client; an out-of-process application executing in a separate process from the server program, the out-of-process application being invoked to process the client request received by the server program and to generate the response to be returned to the client; and a subsystem to detect when the out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program wherein the subsystem records the client request in a list before the client request is transferred from the server program to the out-of-process application, and wherein the subsystem removes the client request from the list when the response is returned from the out-of-process application.
Claim 2
Dependent Claim 144 words
A server software architecture embodied on a computer-readable medium for implementation on a computer server system, the server software architecture comprising: a server program to receive a client request from a client and return a response to the client; an out-of-process application executing in a separate process from the server program, the out-of-process application being invoked to process the client request received by the server program and to generate the response to be returned to the client; and a subsystem to detect when the out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program wherein the subsystem records the client request in a list before the client request is transferred from the server program to the out-of-process application, and wherein the subsystem removes the client request from the list when the response is returned from the out-of-process application.
Claim 3
Dependent Claim 153 words
A server software architecture embodied on a computer-readable medium for implementation on a computer server system, the server software architecture comprising: a server program to receive a client request from a client and return a response to the client; an out-of-process application executing in a separate process from the server program, the out-of-process application being invoked to process the client request received by the server program and to generate the response to be returned to the client; and a subsystem to detect when the out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program, wherein the subsystem records the client request in a list before the client request is transferred from the server program to the out-of-process application, and wherein the subsystem cleans up the client request on the list in an event that the out-of-process application fails before the client request is removed from the list.
Claim 4
Dependent Claim 153 words
A server software architecture embodied on a computer-readable medium for implementation on a computer server system, the server software architecture comprising: a server program to receive a client request from a client and return a response to the client; an out-of-process application executing in a separate process from the server program, the out-of-process application being invoked to process the client request received by the server program and to generate the response to be returned to the client; and a subsystem to detect when the out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program, wherein the subsystem records the client request in a list before the client request is transferred from the server program to the out-of-process application, and wherein the subsystem cleans up the client request on the list in an event that the out-of-process application fails before the client request is removed from the list.
Claim 5
Dependent Claim 128 words
A server software architecture embodied on a computer-readable medium for implementation on a computer server system, the server software architecture comprising: a server program to receive a client request from a client and return a response to the client; an out-of-process application executing in a separate process from the server program, the out-of-process application being invoked to process the client request received by the server program and to generate the response to be returned to the client; and a subsystem to detect when the out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program, wherein the subsystem counts the number of times it recovers the out-of-process application, and ceases to recover the out-of-process application when the number reaches a preset recover limit.
Claim 6
Dependent Claim 128 words
A server software architecture embodied on a computer-readable medium for implementation on a computer server system, the server software architecture comprising: a server program to receive a client request from a client and return a response to the client; an out-of-process application executing in a separate process from the server program, the out-of-process application being invoked to process the client request received by the server program and to generate the response to be returned to the client; and a subsystem to detect when the out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program, wherein the subsystem counts the number of times it recovers the out-of-process application, and ceases to recover the out-of-process application when the number reaches a preset recover limit.
Claim 7
Dependent Claim 130 words
In a server system having a server program that executes in a first process to receive client requests and at least one out-of-process application that is executes in a second process separate from the server program to process the client requests, a subsystem for detecting failure of the out-of-process application and recovering from the failure, comprising: a gate component to list the client requests that are passed from the server program to the out-of-process application; a detection component to examine responses returned from the out-of-process application to detect whether the out-of-process application has failed; and a recovery component to cleanup, in an event the out-of-process application has failed, those client requests that remain listed by the gate component, but have not yet been responded to by the failed out-of-process application.
Claim 8
Dependent Claim 130 words
In a server system having a server program that executes in a first process to receive client requests and at least one out-of-process application that is executes in a second process separate from the server program to process the client requests, a subsystem for detecting failure of the out-of-process application and recovering from the failure, comprising: a gate component to list the client requests that are passed from the server program to the out-of-process application; a detection component to examine responses returned from the out-of-process application to detect whether the out-of-process application has failed; and a recovery component to cleanup, in an event the out-of-process application has failed, those client requests that remain listed by the gate component, but have not yet been responded to by the failed out-of-process application.
Claim 9
Dependent Claim 16 words
A subsystem as recited in claim 4 , wherein the recovery component restarts the out-of-process application.
Claim 10
Dependent Claim 26 words
A subsystem as recited in claim 4 , further comprising a list object to hold references to the client requests being passed to the out-of-process application.
Claim 11
Dependent Claim 20 words
A subsystem as recited in claim 6 , further comprising a recovery list having an entry identifying the list object.
Claim 12
Dependent Claim 48 words
A subsystem as recited in claim 7 , wherein the recovery component restarts the out-of-process application, creates a second list object to hold references to the client requests being passed to the restarted out-of-process application, and adds an entry to the recovery list for the second list object.
Claim 13
Dependent Claim 36 words
A subsystem as recited in claim 4 , wherein the gate component, the detection component, and the recovery component are implemented in a software object that runs in the first process along with the server program.
Claim 14
Dependent Claim 26 words
A subsystem as recited in claim 4 , wherein the gate component, the detection component, and the recovery component are incorporated into a server operating system.
Claim 15
Dependent Claim 241 words
A server software architecture embodied on a computer-readable medium for implementation on a computer server system, the server software architecture comprising: a server program to receive a client request from a client and return a response to the client; an application manager director to handle the client request in an event that a response to the client request will involve at least some content generation; at least one application manager independent from, but dynamically accessible by, the application manager director; at least one agent independent from, but dynamically accessible by, the application manager, the agent comprising capabilities to process the client request to generate the response; the application manager and the agent, when invoked, being run in a separate process from the server program; an information object maintained at the application manager director to direct requests to an out-of-process application manager, the information object recording on a list the client requests that are passed to the out-of-process application manager and removing from the list the client requests that are returned from the out-of-process application manager; and in an event that the out-of-process application manager fails, the information object blocking future client requests destined for the out-of-process application manager and cleaning up the client requests that remain on the list as being unanswered by the failed out-of-process application manager, the information object then restarting the out-of-process application manager and permitting the future client requests to flow to the restarted out-of-process application manager.
Claim 16
Dependent Claim 241 words
A server software architecture embodied on a computer-readable medium for implementation on a computer server system, the server software architecture comprising: a server program to receive a client request from a client and return a response to the client; an application manager director to handle the client request in an event that a response to the client request will involve at least some content generation; at least one application manager independent from, but dynamically accessible by, the application manager director; at least one agent independent from, but dynamically accessible by, the application manager, the agent comprising capabilities to process the client request to generate the response; the application manager and the agent, when invoked, being run in a separate process from the server program; an information object maintained at the application manager director to direct requests to an out-of-process application manager, the information object recording on a list the client requests that are passed to the out-of-process application manager and removing from the list the client requests that are returned from the out-of-process application manager; and in an event that the out-of-process application manager fails, the information object blocking future client requests destined for the out-of-process application manager and cleaning up the client requests that remain on the list as being unanswered by the failed out-of-process application manager, the information object then restarting the out-of-process application manager and permitting the future client requests to flow to the restarted out-of-process application manager.
Claim 17
Dependent Claim 40 words
A server software architecture as recited in claim 11 , wherein the information object maintains a recovery list that identifies the list of client requests as a possible list requiring clean up in the event the out-of-process application manager fails.
Claim 18
Dependent Claim 32 words
A server software architecture as recited in claim 11 , further comprising a second application manager and a second agent that run, when invoked, in the same process as the server program.
Claim 19
Dependent Claim 26 words
A server software architecture as recited in claim 11 , wherein the application manager director maintains a table that lists the application managers that are running.
Claim 20
Dependent Claim 23 words
A server software architecture as recited in claim wherein said each application manager maintains a table that lists the agents that are running.
Claim 21
Dependent Claim 250 words
In a server system having a server program to receive a client request from a client and a dynamic content generation system to dynamically generate content to be served back to the client, the dynamic content generation system comprising an application manager director, one or more application managers that are dynamically accessible by the application manager director to handle the client request, and one or more agents grouped in association with the application managers and dynamically accessible by the associated application managers to process the client request, wherein the one or more application managers and their associated group of agents can be run in-process or out-of-process with the server program, a crash detection and recovery subsystem embodied as software modules on a computer-readable medium comprising: (A) a detection module comprising: code means for recording a client request on a list as the client request is passed to an out-of-process application manager; code means for examining the client request as it is returned from the out-of-process application manager to detect whether the out-of-process application manager has failed; (B) a recovery module that is invoked when the detection module determines that the out-of-process application manager has failed, the recover module comprising: code means for blocking future client requests destined for the out-of-process application manager; code means for cleaning up the client requests remaining on the list; code means for restarting the out-of-process application manager; and code means for permitting the future client requests to be passed to the restarted out-of-process application manager.
Claim 22
Dependent Claim 250 words
In a server system having a server program to receive a client request from a client and a dynamic content generation system to dynamically generate content to be served back to the client, the dynamic content generation system comprising an application manager director, one or more application managers that are dynamically accessible by the application manager director to handle the client request, and one or more agents grouped in association with the application managers and dynamically accessible by the associated application managers to process the client request, wherein the one or more application managers and their associated group of agents can be run in-process or out-of-process with the server program, a crash detection and recovery subsystem embodied as software modules on a computer-readable medium comprising: (A) a detection module comprising: code means for recording a client request on a list as the client request is passed to an out-of-process application manager; code means for examining the client request as it is returned from the out-of-process application manager to detect whether the out-of-process application manager has failed; (B) a recovery module that is invoked when the detection module determines that the out-of-process application manager has failed, the recover module comprising: code means for blocking future client requests destined for the out-of-process application manager; code means for cleaning up the client requests remaining on the list; code means for restarting the out-of-process application manager; and code means for permitting the future client requests to be passed to the restarted out-of-process application manager.
Claim 23
Dependent Claim 33 words
A crash detection and recovery subsystem as recited in claims 16 , wherein the detection module and the recovery module are implemented in a single software object resident at the application manager director.
Claim 24
Dependent Claim 30 words
A crash detection and recovery subsystem as recited in claim 16 , wherein recovery module further comprises code means for counting a number of times the out-of-process application is restarted.
Claim 25
Dependent Claim 37 words
A crash detection and recovery subsystem as recited in claim 18 , wherein recovery module further comprises code means for ceasing to restart the out-of-process application after the number of restart times reaches a preset recover limit.
Claim 26
Dependent Claim 17 words
A server operating system comprising the crash detection and recovery subsystem as recited in claim 16 .
Claim 27
Dependent Claim 190 words
A server computer system comprising: a processing unit; a memory subsystem; a server program stored in the memory subsystem and executed on the processing unit to receive client requests; and multiple applications stored in the memory subsystem and executed on the processing unit either in-process or out-of-process with the server program to dynamically generate responses to the client requests, each said application comprising one or more agents to process the client requests and an application manager to manage the one or more agents; an application manager director to facilitate delivery of the client requests received by the server program to the applications that are appropriate for processing the client requests; and a crash detection and recovery subsystem to detect when an out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program, wherein the crash detection and recovery subsystem records the client requests being delivered to the out-of-process application in a list, and wherein the crash detection and recovery subsystem cleans up the client request on the list in an event that the out-of-process application fails before the client request is removed from the list.
Claim 28
Dependent Claim 190 words
A server computer system comprising: a processing unit; a memory subsystem; a server program stored in the memory subsystem and executed on the processing unit to receive client requests; and multiple applications stored in the memory subsystem and executed on the processing unit either in-process or out-of-process with the server program to dynamically generate responses to the client requests, each said application comprising one or more agents to process the client requests and an application manager to manage the one or more agents; an application manager director to facilitate delivery of the client requests received by the server program to the applications that are appropriate for processing the client requests; and a crash detection and recovery subsystem to detect when an out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program, wherein the crash detection and recovery subsystem records the client requests being delivered to the out-of-process application in a list, and wherein the crash detection and recovery subsystem cleans up the client request on the list in an event that the out-of-process application fails before the client request is removed from the list.
Claim 29
Dependent Claim 190 words
A server computer system comprising: a processing unit; a memory subsystem; a server program stored in the memory subsystem and executed on the processing unit to receive client requests; and multiple applications stored in the memory subsystem and executed on the processing unit either in-process or out-of-process with the server program to dynamically generate responses to the client requests, each said application comprising one or more agents to process the client requests and an application manager to manage the one or more agents; an application manager director to facilitate delivery of the client requests received by the server program to the applications that are appropriate for processing the client requests; and a crash detection and recovery subsystem to detect when an out-of-process application fails and to recover the out-of-process application without disrupting operation of the server programs wherein the crash detection and recovery subsystem records the client requests being delivered to the out-of-process application in a list, and wherein the crash detection and recovery subsystem counts the number of times it recovers the out-of-process application, and ceases to recover the out-of-process application when the number reaches a preset recover limit.
Claim 30
Dependent Claim 190 words
A server computer system comprising: a processing unit; a memory subsystem; a server program stored in the memory subsystem and executed on the processing unit to receive client requests; and multiple applications stored in the memory subsystem and executed on the processing unit either in-process or out-of-process with the server program to dynamically generate responses to the client requests, each said application comprising one or more agents to process the client requests and an application manager to manage the one or more agents; an application manager director to facilitate delivery of the client requests received by the server program to the applications that are appropriate for processing the client requests; and a crash detection and recovery subsystem to detect when an out-of-process application fails and to recover the out-of-process application without disrupting operation of the server programs wherein the crash detection and recovery subsystem records the client requests being delivered to the out-of-process application in a list, and wherein the crash detection and recovery subsystem counts the number of times it recovers the out-of-process application, and ceases to recover the out-of-process application when the number reaches a preset recover limit.
Claim 31
Dependent Claim 184 words
A server computer system comprising: a processing unit; a memory subsystem; a server program stored in the memory subsystem and executed on the processing unit to receive client requests; and multiple applications stored in the memory subsystem and executed on the processing unit either in-process or out-of-process with the server program to dynamically generate responses to the client requests, each said application comprising one or more agents to process the client requests and an application manager to manage the one or more agents; an application manager director to facilitate delivery of the client requests received by the server program to the applications that are appropriate for processing the client requests; a crash detection and recovery subsystem to detect when an out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program; wherein the application manager director creates request objects to hold data contained in corresponding ones of the client requests; and wherein the application managers create shadow objects for corresponding request objects, the shadow objects holding at least a subset of the data contained in the corresponding request objects.
Claim 32
Dependent Claim 184 words
A server computer system comprising: a processing unit; a memory subsystem; a server program stored in the memory subsystem and executed on the processing unit to receive client requests; and multiple applications stored in the memory subsystem and executed on the processing unit either in-process or out-of-process with the server program to dynamically generate responses to the client requests, each said application comprising one or more agents to process the client requests and an application manager to manage the one or more agents; an application manager director to facilitate delivery of the client requests received by the server program to the applications that are appropriate for processing the client requests; a crash detection and recovery subsystem to detect when an out-of-process application fails and to recover the out-of-process application without disrupting operation of the server program; wherein the application manager director creates request objects to hold data contained in corresponding ones of the client requests; and wherein the application managers create shadow objects for corresponding request objects, the shadow objects holding at least a subset of the data contained in the corresponding request objects.
Claim 33
Dependent Claim 107 words
In a server system having a server program that executes in a first process to receive client requests and at least one out-of-process application that executes in a second process separate from the server program to process the client requests, a method for recovering the out-of-process application after it fails, comprising the following steps: blocking new client requests destined for the failed out-of-process application; cleaning up old client requests that remain unanswered due to failure of the out-of-process application; restarting the out-of-process application in a third process separate from the first and second processes; and permitting the new client requests to flow to the restarted out-of-process application.
Claim 34
Dependent Claim 107 words
In a server system having a server program that executes in a first process to receive client requests and at least one out-of-process application that executes in a second process separate from the server program to process the client requests, a method for recovering the out-of-process application after it fails, comprising the following steps: blocking new client requests destined for the failed out-of-process application; cleaning up old client requests that remain unanswered due to failure of the out-of-process application; restarting the out-of-process application in a third process separate from the first and second processes; and permitting the new client requests to flow to the restarted out-of-process application.
Claim 35
Dependent Claim 23 words
A method as recited in claim 24 , further comprising the step of counting a number of times the out-of-process application is restarted.
Claim 36
Dependent Claim 30 words
A method as recited in claim 25 , further comprising the step of ceasing to restart the out-of-process application after the number of restart times reaches a preset recover limit.
Claim 37
Dependent Claim 16 words
A computer-readable medium having computer-executable instructions for performing the steps as recited in claim 24 .
Claim 38
Dependent Claim 188 words
In a server system having a hierarchic managerial architecture comprising an application manager director, one or more application managers that are dynamically accessible by the application manager director, and one or more agents grouped in association with the application managers and dynamically accessible by the associated application managers, wherein the one or more application managers and their associated group of agents can be run in-process or out-of-process with the server program, a method comprising the following steps: (A) detecting when an out-of-process application manager fails, comprising the following steps: recording a client request on a list as the client request is passed to an out-of-process application manager; examining the client request as it is returned from the out-of-process application manager to detect whether the out-of-process application manager has failed; (B) in an event that the out-of-process application manager has failed, recovering the failed out-of-process application manager comprising the following steps: blocking future client requests destined for the out-of-process application manager; cleaning up the client requests remaining on the list; restarting the out-of-process application manager; and permitting the future client requests to flow to the restarted out-of-process application manager.
Claim 39
Dependent Claim 188 words
In a server system having a hierarchic managerial architecture comprising an application manager director, one or more application managers that are dynamically accessible by the application manager director, and one or more agents grouped in association with the application managers and dynamically accessible by the associated application managers, wherein the one or more application managers and their associated group of agents can be run in-process or out-of-process with the server program, a method comprising the following steps: (A) detecting when an out-of-process application manager fails, comprising the following steps: recording a client request on a list as the client request is passed to an out-of-process application manager; examining the client request as it is returned from the out-of-process application manager to detect whether the out-of-process application manager has failed; (B) in an event that the out-of-process application manager has failed, recovering the failed out-of-process application manager comprising the following steps: blocking future client requests destined for the out-of-process application manager; cleaning up the client requests remaining on the list; restarting the out-of-process application manager; and permitting the future client requests to flow to the restarted out-of-process application manager.
Claim 40
Dependent Claim 23 words
A method as recited in claim 28 , further comprising the step of counting a number of times the out-of-process application is restarted.
Claim 41
Dependent Claim 30 words
A method as recited in claim 29 , further comprising the step of ceasing to restart the out-of-process application after the number of restart times reaches a preset recover limit.
Claim 42
Dependent Claim 16 words
A computer-readable medium having computer-executable instructions for performing the steps as recited in claim 28 .

References Cited (Backward Citations)

US5113496A Cited
US5978565A Cited
US5566297A Cited
US5659682A Cited
US5987621A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2004-12-10 2005-06-11 2005-12-11 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2008-12-10 2009-06-11 2009-12-11 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2012-12-10 2013-06-11 2013-12-11 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag