The present application is related to the following patent applications: U.S. application Ser. No. 10/917,953, Transparent Session Migration Across Servers, filed by Sanjay Kaluskar, et al. on the Aug. 12, 2004 and incorporated herein by reference; U.S. application Ser. No. 10/917,843, Extensible Framework for Transferring Session State, filed by Sanjay Kaluskar, et al. on the Aug. 12, 2004 and incorporated herein by reference; U.S. application Ser. No. 10/917,882, Transparent Migration of Stateless Sessions Across Servers, filed by Sanjay Kaluskar, et al. on the Aug. 12, 2004 and incorporated herein by reference.
The present invention relates to capturing and restoring session state to perform such tasks as transferring sessions between servers to balance work load in a multi-node computer system.
Many enterprise data processing systems rely on multi-node database servers to store and manage data. Such enterprise data processing systems typically follow a multi-tier model that has a multi-node database server in the first tier, and one or more computers in the middle tier and outer tiers.
A database server governs and facilitates access to a particular database, processing requests by clients to access the database. A multi-node database server, such as multi-node database server mds11, comprises multiple “database instances”, each database instance running on a node. Multi-node database server mds11 governs access to database db11. A multi-node database server can govern and facilitate access to one or more databases.
The middle-tier of multi-tier architecture 10 includes middle-tier computer cmp11 and the outer-tier includes user computer cmp12. User computer cmp12 executes browser br11, which interacts with an end-user. The end-user's interaction with browser br11 causes the browser to transmit requests over a network, such as the Internet, to middle-tier computer cmp11. The request causes a process client cl11 on middle-tier computer cmp11 to execute application appl11. Execution of application appl11 by the client cl11 causes client cl11 to connect to multi-node database server mds11. For example, application appl11 may be an order entry application that is configured to receive order requests from browser br11. Data for the order entry application is stored in db11. To process the requests, execution of application appl11 by client cl11 causes client cl11 to connect to database db11. Once connected, client cl11 issues database statements to retrieve and manipulate data stored in database db11.
The tier that directly connects to a server, relative to other tiers in a multi-tier architecture, is referred to herein as containing the client of the server. Thus, client process cl11 is referred to herein as the client of multi-node database server mds11.
An application, as the term is used herein, is a unit of software that is configured to interact with and use the functions of a server. In general, applications are comprised of integrated functions and software modules (e.g. programs comprised of machine executable code or interpretable code, dynamically linked libraries) that perform a set of related functions.
An application, such application appl11, interacts with a multi-node database server mds11 via client-side interface component intcomp11. Execution of application appl11 by client cl11 causes client cl11 to execute client-side interface component intcomp11 to interact with multi-node database server mds11. Application appl11 includes invocations of routines (e.g. functions, procedures, object methods, remote procedures) of client-side interface component intcomp11. Applications are typically developed by vendors and development teams different from those that develop servers and interfaces to servers, such as multi-node database server mds11 and client-side interface component intcomp11.
In order for a client to interact with multi-node database server mds11, a session is established for the client on a database instance of multi-node database server mds11. A session, such as a database session, is a particular connection established for a client to a server, such as a database instance, through which the client issues a series of requests (e.g., requests for execution of database statements).
For each database session established on a database instance, session state is maintained for the session. Session state includes the data stored for a database session for the duration of the database session. Such data includes, for example, the identity of the client for which the session is established, and temporary variable values generated by processes and database components executing software within the database session. A database component is a set of software modules that provide specialized and related functions for a database server, and shall be described later in greater detail. An example of a database component is a Java execution engine.
The beginning and end of a session demarcates a unit of work. Often, the beginning of a database session corresponds to an end-user establishing an interactive session with an application via, for example, a browser, and ends when the end-user logs off. Thus, the beginning and ending of the database session depend on application logic and end-user action, and may not be controlled by a server on which the session is established.
Client-Side Interface Components
Client-side interface components, such as client-side interface component intcomp11, are software components that reside and are executed on the same computer of a client of a server, and that are configured to provide an interface between the client and the server. The client-side interface component intcomp11 is configured for performing the detailed operations needed to interface with multi-node database server mds11. For example, an application appl11 invokes a function of client-side interface component intcomp11 to establish a connection to multi-node database server mds11. The client-side interface component then handles the details of a connection on a particular instance of multi-node database server mds11. To make requests of multi-node database server mds11, such as a request for execution of a query, application appl11 is configured to invoke functions of client-side interface component intcomp11, which then transmits a request for the same to the node and database instance on which the session is established.
Client-side interface component intcomp11 may generate and/or access state that is hidden from other software modules, that is, is not or may not be referenced and accessed by other software modules, and in particular, by application appl11. Such state is referred to as being internal or private to client-side interface component intcomp11.
For example, to create a database session on a multi-node database server mds11, application appl11 invokes a routine of client-side interface component intcomp11. The client-side interface component establishes a database session on a particular database instance within multi-node database server mds11, and stores details about the database session within internal data structures or objects. Such data structures and objects define, for example, the session established for an application, and specify such values as a session id that identifies a session on a database instance, the name of the database instance, and a network address and port number for the connection to the database instance.
Such details of the session are not returned to application appl11, nor may application appl11 access the details. Instead, what is provided to application appl11 is an “external identifier” for the session, such as a value that internal data of client-side interface component intcomp11 maps to the session, or a reference to an object generated by client-side interface component intcomp11 to store some details of the session in private attributes of the object that are inaccessible to application appl11. In this way, application appl11 does not “know” of the specific details of the session that has been established for it; however, application appl11 has the information needed to be able to identify to client-side interface component intcomp11 the particular session that has been established for application appl11. Note that a session id that is internal to a client-side interface component relative to an application that uses the interface is referred to herein as an internal session id.
Calls
A call is a request made by a client to a server to execute a task. Typically, a call is made by a process executing an invocation of a routine in a software module. The invocation causes the process to execute the routine (such execution may itself entail calling and executing other routines), and then to return to execute the module to a point at or just beyond the invocation (or some other designated point e.g. exception handler).
A call causes the calling process or remote process to execute the called routine, which may cause calling and execution of other routines. The call terminates when the call returns. Operations, which are carried out as part of execution of a called routine, are referred as being made within the call.
For example, to make a call to multi-node database server mds11, application appl11 makes a call of a function of client-side interface component intcomp11. In response to the invocation, client-side interface component intcomp11 executes the call, which entails client-side interface component intcomp11 modifying and accessing “local” data stored in the memory of client computer cmp12 by client-side interface component intcomp11, and client-side interface component intcomp11 making multiple remote procedure calls to a database instance within multi-node database server mds11, the multiple remote procedure calls including a first remote procedure call and a second remote procedure call. In response to the first remote procedure call, the database instance performs various operations. The modification and access of the local data, the multiple remote procedure calls, and the various operations performed by the database instance, are referred to as being performed within the “application call” made by application appl11. The various operations performed by the database instance while executing the routine invoked by the first remote procedure call (which may entail execution of other routines) are referred to herein as being made within the first remote procedure call, within a client-side call because the first remote procedure call was made by the client-side interface component intcomp11, and within an application call because the remote procedure call was made by client-side interface component intcomp11 while executing a routine called by application appl11. An application call or client-side call may both be referred to herein as a client call.
Sessions Often not in-Use
Sessions are used by applications to execute application calls. Most application actions, which include application calls, are made in response to end-user activity. End-user activity can occur in bursts, resulting in periods of inactivity between the bursts. During these periods of inactivity, the sessions are not being used by the application for which they were established.
Sessions, even sessions not in current use, consume resources of a database server. At a given moment, significant portions of a database server's resources are allocated to sessions that are not currently being used by the application.
It is possible to de-allocate resources allocated to a session by terminating the session. However, session state, being treated as transient state by a database server, is not preserved by the database server after termination of the session. Therefore, a session established for an application cannot be terminated until the application no longer needs the session state. The inability to preserve session state after termination impairs important database server capabilities.
Debugging Capability is Impaired
An important capability is providing information about transient session state for purposes of debugging. When debugging, it is useful to know the session state that exists when a bug occurs or to simulate running the software under the same or similar session state under which the bug occurs. Because session state of a session cannot be preserved, such information is not available to those debugging a bug nor may software be easily run under the same or similar session state.
Often, debugging requires the expertise of a database server vendor's experts or other outside experts. Because session state of a session cannot be preserved, this information cannot be kept for later examination by the experts or even transported to the expert's location where the expert could examine the session state and/or simulate the bug.
Applications and End-Users Unable to Terminate Sessions to Conserve Resources
When a database session is not in use depends largely on client-side behavior, and, in particular, the behavior of applications and end-users. Applications and the end-users may know what sessions are not in use. However, an application and end-user cannot request that such sessions be terminated to conserver resources because the sessions' state may be needed later—there is no capability that allows an application or end-user to request to terminate a session and preserve its state in a way that allows the session to be restored and continued when later needed.
Based on the foregoing, it is clearly desirable to provide approaches to terminate a session on an instance and preserve the session's state in a way that allows the session to be later resumed on the instance or a different instance, particularly in response to a request of an application or end-user to do so.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
Approaches for suspending and resuming sessions in a single or multi-node environment are described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
Described herein are techniques that enable a session established for an application to be suspended from an instance and later resumed on the instance or a different instance. When a session is suspended, its state is captured and persistently stored as a session image in a repository, and the session is terminated. Capturing a session's state entails producing a session image, which is a stream of bytes that is a veritable copy of the session state of the session. The copy includes transient values of the session. When the session is resumed, a new session is established on an instance, the session image of the session to resume is retrieved from the repository and restored to the newly established session. Session state may be captured and restored using the extensible framework described in Extensible Framework for Transferring Session State. The extensible framework defines an interface for callback functions that are invoked to determine whether a session state may be suspended, and to capture and restore session state. The session state is captured and stored in a session image in a way that allows the application to use another session, to which the captured session state is restored, as the captured session, as if the captured session were never terminated.
The suspension and resumption of a session may be initiated by an application, which may request the suspension and resumption of a particular session. The application may determine that one or more sessions have been unused and inactive for period of time, and then suspend the sessions to reduce the number of sessions, thereby freeing resources and reducing workload on the servers hosting the sessions. The application may initiate the determination and suspension in response to a request by a server to do reduce the number sessions established for the application on the server.
An application may also initiate suspension and resumption of a session in response to an end-user request to suspend the session. End-users thus have the flexibility to suspend work, and resume it later, potentially on another database system at a different location.
When bugs are encountered, the session may be suspended and resumed at another location for debugging.
Illustrative Computer System
Clients that connect to a database instance that is part of a multi-node database server to access the database managed by the database instance, are referred to herein as clients of the database instance, clients of the multi-node database server, or clients of the database. For example, a process on a computer not part of database cluster dbc20 executes an application and is connected to database instance inst23 to access database db20. The process is referred to as a client of database instance inst23, a client of multi-node database server mds20, and a client of database db20.
Sessions Established for Clients by a Listener
In order for a client to interact with multi-node database server mds20, the client transmits a database connection request to establish a session on a database instance. A listener receives the request. A listener is a process running on database cluster dbc20 that receives requests and directs them to a database instance within database cluster dbc20.
Once the database session is established for the client, the client may issue additional requests, which may be in the form of remote procedure invocations, and which include requests to begin execution of a transaction, to execute queries, to perform updates and other types of transaction operations, to commit or otherwise terminate a transaction, and to terminate a database session.
Illustrative Client and Source and Destination Instance
Client c130 is a process that is running on a client computer cmp30. Client computer cmp30 is a computer that is separate from any node in database cluster dbc20 and that hosts one or more database clients of database cluster dbc20, including client c130. Clients hosted by client computer cmp30 include processes that execute an application, such as application appl30, which is executed by client c130.
Application appl30 interacts with database cluster dbc20 and multi-node database server mds20 via client-side interface component intcomp30. Application appl30 includes invocations of routines (e.g. functions, procedures, object methods, remote procedures) of client-side interface component intcomp30. An example of a client-side interface component is the Oracle Call Interface (“OCI”), available from Oracle Corporation.
Client-side interface component intcomp30 includes functions that may be invoked by application appl30 to suspend and resume a session, such a session sess30. Application appl30 invokes function suspend( )30 to suspend a session. The session to suspend is identified by an input parameter value, such as an external identifier of the session. The function returns a value indicating whether or not the session was suspended. If the session was suspended, then the return value includes a session key. A session key identifies a session that was suspended.
To resume a suspended session, application appl30 invokes function resume( )30, passing as an input parameter the session key identifying the session. Resume( )30 returns a value indicating whether or not the session was resumed.
For purposes of exposition, software modules, such as application appl30, are described herein as performing particular actions, when in fact execution of the software by a process causes the process to perform those actions. For example, when an application appl30 is described as transmitting or receiving a message or accessing data, a process executing the application software is transmitting or receiving the message or accessing the data.
Session repository rep30 is a data repository for storing session images. A data repository is a storage mechanism that may be used to persistently store data, and in particular, session images. According to an embodiment of the present invention, session repository rep30 is a database table, where each row of the table holds the session image of a suspended session. Session repository rep30 includes two columns. Column key k30 holds session keys and large binary object column LOB lb30 stores session images. Each row in session repository rep30 holds a session key and a session image, thereby associating a session image with the session key that identifies the session image.
Collection Criteria, Capture and Restoration of Session State
At a given moment for a database session, future application calls may depend on session state generated by prior application calls. Because of the potential dependency of future applications calls upon session state, suspending and resuming database sessions entails determining whether portions of a session's state may be captured and restored to another session, possibly on a different database instance.
In an embodiment, to determine whether portions of a session's state may be captured and restored to another session, a determination is made about whether session collection criteria are satisfied. Collection criteria are criteria that are used to determine whether session state may be terminated and restored later to another session, possibly on a different instance. Collection criteria can be identical or similar to migration criteria described in Extensible Framework for Transferring Session State, which are criteria used to determine whether a session may be transferred to another database instance. Determining whether collection criteria are satisfied includes determining whether a database session is at a transaction boundary, is at a call boundary, or is at a component boundary.
A database session is at a transaction boundary if there are currently no active transactions being executed for the session. A transaction is a logical unit of work that is performed as an atomic unit. In the context of database systems, the database must reflect all the changes made by a transaction, or none of the changes made by the transaction to ensure the integrity of the database. Consequently, none of the changes made by a transaction are permanently applied to a database until the transaction has been fully executed. A transaction is said to “commit” when the changes made by the transaction are made permanent. A transaction is active if the transaction has not been committed, aborted, or otherwise terminated.
A session is at a call boundary if a database instance has finished executing a client call rather than being at an intermediate stage of processing the call. For example, to process a call to execute a database statement, a database instance goes through stages, each stage corresponding to a particular type of operation. The stages are (1) creating a cursor, (2) parsing the database statement and binding its variables, (3) executing the database statement, (4) fetching the rows to return for the query, and (5) closing the cursor. These stages are described in greater detail in Oracle8 Server Concepts, Release 8.0, Volume 3 (the contents of which incorporated herein by reference), at chapter 23. Intermediate stages are the operations performed before processing of the call is complete. The intermediate stages are stages (1)-(5). After an instance performs step (5) in response to a call, a source session is at a call boundary.
A session is at a component boundary if each “database component” of a session is at its respective component boundary. A database component is a set of software modules on a database server that provide specialized and related functions. A database component executed during a session may generate and use a portion of the session state, referred to herein as component session state. According to an embodiment, session state can be viewed as a union or combination of component session states. Database components are described in further detail in Extensible Framework for Transferring Session State.
The following are examples of database components. A cursor component manages cursors within a database instance. A cursor is an area of memory used to store information about a parsed database statement and other information related to the processing of the database statement. A PL/SQL component is a database component responsible for executing code (e.g. procedures) written in PL/SQL, a procedural database language promulgated by Oracle Corporation. Session parameters component is a database component responsible for managing attributes that generally control how calls and requests associated with a session are processed. The attributes are stored in a component session state. For example, session parameters can include an attribute that controls the particular human language for results returned by executing queries. A Java component is a database component that is responsible for executing code (e.g. class and object methods) written in Java. The Java component uses component session state to store information related to the execution of Java code.
A database session is at a component boundary for a particular database component if the component session state of the database component can be captured and restored to another session. A database component provides a function that returns a value indicating whether or not the database component's respective component session state may be captured and restored to another session. A reason component session state of a database session may not be captured and restored is that component session state includes a file descriptor of an open file. The file descriptor contains information that is only valid for an instance hosting the database session for a period of time.
The function is part of an interface of callback functions supported by each database component. The functions are invoked to capture and restore component session state, as well as to determine whether a component session state permits a session to be captured and restored.
Suspend Session Protocol
Referring to
At step 410, client-side interface component intcomp30 receives the suspend request from application appl30. Client-side interface component intcomp30 determines the session id of the target session and instance that hosts the session, which is source instance 142. Client-side interface component intcomp30 then transmits a suspend request to source instance inst22, which includes the session id. At step 415, source instance inst22 receives the suspend request transmitted by client-side interface component intcomp30.
At step 420, source instance inst22 determines whether the target session meets collection criteria. The determination is made by determining whether the target session is at a transaction boundary, at a call boundary, and at a component boundary, the latter determination being made by invoking functions of database components described earlier.
If the target session does not meet collection criteria, then at step 425, source instance inst22 returns a suspension denial to client-side interface component intcomp3. At step 430, client-side interface component intcomp30 receives the suspension denial from source instance inst22 and returns a suspension denial to appl30, which is received by the application appl30 at step 435.
If the target session meets collection criteria, then at step 450, source instance inst22 captures the session state of the target session and generates a session image, generates a session key, and stores the session image and session key in a row of session repository rep30 along with the session key.
At step 455, source instance inst22 returns a suspension acknowledgement along with a session key to client-side interface component intcomp30.
At step 460, client-side interface component intcomp30 receives the suspension acknowledgement and session key. At step 465, client-side interface component intcomp30 terminates the target session on source instance inst22. Termination of the target session may entail client-side interface component intcomp30 making one more calls to source instance inst22 to terminate the target session.
At step 470, client-side interface component intcomp30 transmits the suspension acknowledgement and session key to application appl30. At step 475, application appl30 receives the suspension acknowledgement.
Resume Session Protocol
Referring to
At step 515, client-side interface component intcomp30 establishes a session on destination server int24. Establishing the session entails, for example, making a database connection request to establish a session on destination server int24.
Once the session is established at step 515, at step 520 client-side interface component intcomp30 transmits a request to resume the target session, passing in the session key of the target session to restore.
At step 525, destination server int24 receives the resumption request along with the session key.
At step 530, destination server int24 restores the target session. This action entails retrieving the session state from session repository rep30, and invoking the database components to restore the respective component state within the session established at step 520.
At step 535, destination server int24 transmits a resume acknowledgement to client-side interface component intcomp30. At step 540, client-side interface component intcomp30 receives the resume acknowledgement and transmits a resume acknowledgement to application appl30, which is received by appl30 at step 545.
Computer system 600 may be coupled via bus 602 to a display 612, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 614, including alphanumeric and other keys, is coupled to bus 602 for communicating information and command selections to processor 604. Another type of user input device is cursor control 616, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 604 and for controlling cursor movement on display 612. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
The invention is related to the use of computer system 600 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 600 in response to processor 604 executing one or more sequences of one or more instructions contained in main memory 606. Such instructions may be read into main memory 606 from another computer-readable medium, such as storage device 610. Execution of the sequences of instructions contained in main memory 606 causes processor 604 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to processor 604 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 610. Volatile media includes dynamic memory, such as main memory 606. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 602. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 604 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 600 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 602. Bus 602 carries the data to main memory 606, from which processor 604 retrieves and executes the instructions. The instructions received by main memory 606 may optionally be stored on storage device 610 either before or after execution by processor 604.
Computer system 600 also includes a communication interface 618 coupled to bus 602. Communication interface 618 provides a two-way data communication coupling to a network link 620 that is connected to a local network 622. For example, communication interface 618 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 618 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 618 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
Network link 620 typically provides data communication through one or more networks to other data devices. For example, network link 620 may provide a connection through local network 622 to a host computer 624 or to data equipment operated by an Internet Service Provider (ISP) 626. ISP 626 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 628. Local network 622 and Internet 628 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 620 and through communication interface 618, which carry the digital data to and from computer system 600, are exemplary forms of carrier waves transporting the information.
Computer system 600 can send messages and receive data, including program code, through the network(s), network link 620 and communication interface 618. In the Internet example, a server 630 might transmit a requested code for an application program through Internet 628, ISP 626, local network 622 and communication interface 618.
The received code may be executed by processor 604 as it is received, and/or stored in storage device 610, or other non-volatile storage for later execution. In this manner, computer system 600 may obtain application code in the form of a carrier wave.
In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is the invention, and is intended by the applicants to be the invention, is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Any definitions expressly set forth herein for terms contained in such claims shall govern the meaning of such terms as used in the claims. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Number | Name | Date | Kind |
---|---|---|---|
3444528 | Lovell et al. | May 1969 | A |
4586134 | Norstedt | Apr 1986 | A |
4868832 | Marrington et al. | Sep 1989 | A |
5047922 | Borkar | Sep 1991 | A |
5157663 | Major et al. | Oct 1992 | A |
5179660 | Devany et al. | Jan 1993 | A |
5247664 | Thompson et al. | Sep 1993 | A |
5247671 | Adkins et al. | Sep 1993 | A |
5289461 | de Nijs | Feb 1994 | A |
5319754 | Meinecke et al. | Jun 1994 | A |
5392285 | Kurts | Feb 1995 | A |
5448559 | Hayter et al. | Sep 1995 | A |
5530905 | Nichols et al. | Jun 1996 | A |
5535326 | Baskey et al. | Jul 1996 | A |
5544313 | Shachnai et al. | Aug 1996 | A |
5553242 | Russell et al. | Sep 1996 | A |
5566225 | Haas | Oct 1996 | A |
5566297 | Devarakonda et al. | Oct 1996 | A |
5596720 | Hamada et al. | Jan 1997 | A |
5596745 | Lai et al. | Jan 1997 | A |
5598536 | Slaughter, III et al. | Jan 1997 | A |
5600722 | Yamaguchi et al. | Feb 1997 | A |
5617540 | Civanlar et al. | Apr 1997 | A |
5633861 | Hanson et al. | May 1997 | A |
5633999 | Clowes et al. | May 1997 | A |
5642515 | Jones et al. | Jun 1997 | A |
5652908 | Douglas et al. | Jul 1997 | A |
5666479 | Kashimoto et al. | Sep 1997 | A |
5682534 | Kapoor et al. | Oct 1997 | A |
5684800 | Dobbins et al. | Nov 1997 | A |
5696895 | Hemphill et al. | Dec 1997 | A |
5721918 | Nilsson et al. | Feb 1998 | A |
5734659 | Mann et al. | Mar 1998 | A |
5734896 | Rizvi et al. | Mar 1998 | A |
5740175 | Wakeman et al. | Apr 1998 | A |
5758345 | Wang | May 1998 | A |
5761507 | Govett | Jun 1998 | A |
5771349 | Picazo, Jr. et al. | Jun 1998 | A |
5774660 | Brendel et al. | Jun 1998 | A |
5774668 | Choquier et al. | Jun 1998 | A |
5784630 | Saito et al. | Jul 1998 | A |
5790800 | Gauvin et al. | Aug 1998 | A |
5796934 | Bhanot et al. | Aug 1998 | A |
5796941 | Lita | Aug 1998 | A |
5796999 | Azagury et al. | Aug 1998 | A |
5805816 | Picazo, Jr. et al. | Sep 1998 | A |
5805827 | Chau et al. | Sep 1998 | A |
5805920 | Sprenkle et al. | Sep 1998 | A |
5819019 | Nelson | Oct 1998 | A |
5819298 | Wong et al. | Oct 1998 | A |
5828879 | Bennett | Oct 1998 | A |
5832483 | Barker | Nov 1998 | A |
5850507 | Ngai et al. | Dec 1998 | A |
5862362 | Somasegar et al. | Jan 1999 | A |
5867713 | Shrader et al. | Feb 1999 | A |
5870545 | Davis et al. | Feb 1999 | A |
5870746 | Knutson et al. | Feb 1999 | A |
5890167 | Bridge, Jr. et al. | Mar 1999 | A |
5890169 | Wong et al. | Mar 1999 | A |
5890963 | Yen | Apr 1999 | A |
5918059 | Tavallaei et al. | Jun 1999 | A |
5944823 | Jade et al. | Aug 1999 | A |
5951694 | Choquier et al. | Sep 1999 | A |
5963556 | Varghese et al. | Oct 1999 | A |
5974463 | Warrier et al. | Oct 1999 | A |
5978849 | Khanna | Nov 1999 | A |
5987430 | Van Horne et al. | Nov 1999 | A |
6006264 | Colby et al. | Dec 1999 | A |
6035412 | Tamer et al. | Mar 2000 | A |
6038214 | Shionozaki | Mar 2000 | A |
6038677 | Lawlor et al. | Mar 2000 | A |
6041357 | Kunzelman et al. | Mar 2000 | A |
6047323 | Krause | Apr 2000 | A |
6088728 | Bellemore et al. | Jul 2000 | A |
6173413 | Slaughter et al. | Jan 2001 | B1 |
6178529 | Short et al. | Jan 2001 | B1 |
6182139 | Brendel | Jan 2001 | B1 |
6243751 | Chatterjee et al. | Jun 2001 | B1 |
6272503 | Bridge et al. | Aug 2001 | B1 |
6327622 | Jindal et al. | Dec 2001 | B1 |
6347313 | Ma et al. | Feb 2002 | B1 |
6442568 | Velasco et al. | Aug 2002 | B1 |
6505200 | Ims et al. | Jan 2003 | B1 |
6556659 | Bowman-Amuah | Apr 2003 | B1 |
6587866 | Modi et al. | Jul 2003 | B1 |
6601101 | Lee et al. | Jul 2003 | B1 |
6604110 | Savage et al. | Aug 2003 | B1 |
6667751 | Wynn et al. | Dec 2003 | B1 |
6691155 | Gottfried | Feb 2004 | B2 |
6728748 | Mangipudi et al. | Apr 2004 | B1 |
6816907 | Mei et al. | Nov 2004 | B1 |
6874031 | Corbeil | Mar 2005 | B2 |
6880156 | Landherr et al. | Apr 2005 | B1 |
6925477 | Champagne et al. | Aug 2005 | B1 |
7024394 | Ashour et al. | Apr 2006 | B1 |
7058957 | Nguyen | Jun 2006 | B1 |
7107294 | Romanufa et al. | Sep 2006 | B2 |
7174379 | Agarwal et al. | Feb 2007 | B2 |
7178050 | Fung et al. | Feb 2007 | B2 |
7181492 | Wen et al. | Feb 2007 | B2 |
7263590 | Todd et al. | Aug 2007 | B1 |
7269157 | Klinker et al. | Sep 2007 | B2 |
7277945 | Shah et al. | Oct 2007 | B1 |
7552171 | Chidambaran et al. | Jun 2009 | B2 |
20010047270 | Gusick et al. | Nov 2001 | A1 |
20010056493 | Mineo | Dec 2001 | A1 |
20020073139 | Hawkins et al. | Jun 2002 | A1 |
20020129157 | Varsano | Sep 2002 | A1 |
20020161896 | Wen et al. | Oct 2002 | A1 |
20020194015 | Gordon et al. | Dec 2002 | A1 |
20030007497 | March et al. | Jan 2003 | A1 |
20030014480 | Pullara et al. | Jan 2003 | A1 |
20030063122 | Cichowlas et al. | Apr 2003 | A1 |
20030088671 | Klinker et al. | May 2003 | A1 |
20030108052 | Inoue et al. | Jun 2003 | A1 |
20030135642 | Benedetto et al. | Jul 2003 | A1 |
20030208523 | Gopalan et al. | Nov 2003 | A1 |
20030217159 | Schramm-Apple et al. | Nov 2003 | A1 |
20030236834 | Gottfried | Dec 2003 | A1 |
20040015600 | Tiwary et al. | Jan 2004 | A1 |
20040078602 | Rothbarth et al. | Apr 2004 | A1 |
20040111506 | Kundu et al. | Jun 2004 | A1 |
20040117794 | Kundu | Jun 2004 | A1 |
20040176996 | Powers et al. | Sep 2004 | A1 |
20040268357 | Joy et al. | Dec 2004 | A1 |
20050021771 | Kaehn et al. | Jan 2005 | A1 |
20050050116 | Gross et al. | Mar 2005 | A1 |
20050055446 | Chidambaran et al. | Mar 2005 | A1 |
20050066037 | Song et al. | Mar 2005 | A1 |
20050131966 | Lou | Jun 2005 | A1 |
20050132222 | Petrovic | Jun 2005 | A1 |
20050165925 | Dan et al. | Jul 2005 | A1 |
20050239476 | Betrabet et al. | Oct 2005 | A1 |
20050267965 | Heller | Dec 2005 | A1 |
20060036617 | Bastawala et al. | Feb 2006 | A1 |
20070226323 | Halpern | Sep 2007 | A1 |
20130232113 | Chao Liang | Sep 2013 | A1 |
Number | Date | Country |
---|---|---|
0 942 363 | Sep 1999 | EP |
0942363 | Sep 1999 | EP |
0 992 909 | Apr 2000 | EP |
1 170 662 | Jan 2002 | EP |
08-077118 | Mar 1996 | JP |
1997-050412 | Feb 1997 | JP |
09-231143 | Sep 1997 | JP |
09-269903 | Oct 1997 | JP |
2002-091937 | Mar 2002 | JP |
2002-150000 | May 2002 | JP |
2002-091937 | Nov 2002 | JP |
2002-342078 | Nov 2002 | JP |
WO 0200737 | Jan 2002 | WO |
WO 0205116 | Jan 2002 | WO |
WO 0207037 | Jan 2002 | WO |
WO 02097676 | Dec 2002 | WO |
WO 03014928 | Feb 2003 | WO |
WO 03014928 | Feb 2003 | WO |
WO 03014929 | Feb 2003 | WO |
WO 03062983 | Jul 2003 | WO |
WO 03062983 | Jul 2003 | WO |
WO 03063450 | Jul 2003 | WO |
Entry |
---|
1996 definition of “server” available at: http://web.archive.org/web/20010411032957/http://www.webopedia.com/TERM/s/server.html. |
2003 definition of “client” available at: http://www.techweb.com/encyclopedia/printView?term=client&view=print. |
Ravi Kokku et al., “Half-pipe Anchoring: An Efficient Technique for Multiple Connection Handoff,” Proceedings 10th International Conference on Network Protocols, Nov. 12, 2002, XP010632563, 10 pages. |
Ying-Dar Lin et al., “Direct Web Switch Routing with State Migration, TCP Masquerade, and Cookie Name Rewriting,” Globecom 2003, IEEE Global Telecommunications Conference; Dec. 12003, IEEE, CP010677300, pp. 3663-3667. |
International Searching Authority, “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration,” Nov. 12, 2004, 13 pages. |
Current Claims of International Application No. PCT/US2004/026570, 4 pages, no date. |
Current Claims of International Application No. PCT/US2004/025805, 8 pages, no date. |
International Searching Authority, “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration,” dated Dec. 3, 2004, 12 pages. |
“Distributed Systems, Concepts and Design”, by Coulouris et al., 1994, Adison-Wesley. |
“Workload Balancing in a Distributed Environment”, IBM Technical Disclosure Bulletin, Nov. 1995. |
“Local Area Network Server Replacement Procedure” IBM Technical Disclosure Bulletin, Jan. 1995. |
Renu Tewari, et al., “Highly Availability in Clustered Multimedia Servers”, (IEEE), Mar. 1996, pp. 645-654. |
Current Claims in PCT application, International Application No. PCT/US03/23747, 13 pages, no date. |
International Searching Authority, “Notification of Transmittal of the International Search Report or the Declaration,” dated May 25, 2004, 6 pages. |
Kei Kurakawa et al., “Life Cycle Design Support Based on Environmental Information Sharing,” IEEE, Feb. 1-3, 1999, Proceedings EcoDesign '99, First International Symposium, pp. 138-142. |
Oliver Gunther, et al., “MMM: A Web-Based System for Sharing Statistical Computing Modules,” IEEE, May-Jun. 1997, vol. 1, Issue 3, pp. 59-68. |
“CODA: A Highly Available File System for a Distributed Workstation Environment”, Mahadev Satyanarayanan, IEEE Transactions on Computers, vol. 39, No. 4, pp. 447-459, Apr. 1990. |
“Scalable, Secure, and Highly Available Distributed File Access”, Mahadev Satyanarayanan, IEEE Transactions on Computers, vol. 23 5, pp. 9-21, May 1990. |
International Preliminary Examining Authority, “Written Opinion of the International Preliminary Examining Authority,” Jun. 7, 2005, 4 pages. |
Current Claims of International Application No. PCT/US04/26570, 4 pages, no date. |
International Searching Authority, “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration,” Aug. 4, 2005, 13 pages. |
Current Claims for International Application No. PCT/US2004/026389, pp. 1-7, no date. |
Jeffrey S. Chase et al., “Dynamic Virtual Clusters in a Grid Site Manager,” Proceedings of the 1212 IEEE International Symposium on High Performance Distributed Computing (HPDC'03), 2003, IEEE, pp. 90-100. |
European Patent Office, “International Preliminary Report on Patentability,” Aug. 26, 2005, International Application No. PCT/US2004/026570, 9 pages. |
International Searching Authority, “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration,” Aug. 25, 2005, 12 pages. |
Current Claims for International Application No. PCT/US2004/026445, pp. 1-5, no date. |
Henry Song, et al., “Browser State Repository Service,” Lecture Notes in Computer Science, vol. 2414, 2002, pp. 1-14, XP002904339. |
Eric Skow, et al., “A Security Architecture for Application Session Handoff,” 2002, IEEE International Conference Proceedings, Apr. 28-May 2, 2002, vol. 1 of 5, pp. 2058-2063, XP010589848. |
International Searching Authority, “Notification of Transmittal of the International Preliminary Report on Patentability,” PCT/US2004/026445, dated Dec. 12, 2005, 6 pages. |
Claims as Amended, PCT/US2004/026445, Aug. 11, 2005, 4 pages (attached). |
Patent Cooperation Treaty, “Notification of Transmittal of the International Preliminary Report on Patentability,” PCT/US2004/026405, dated Oct. 10, 2006, 7 pages. |
Amended Claims, PCT/US2004/026405, dated Apr. 6, 2006, 4 pages (attached). |
European Patent Office, “Communication Pursuant to Article 96(2) EPC,” App. No. 04781256.3 (50277-2985), dated Feb. 2, 2007, 4 pages. |
Claims, App. No. 04781256.3 (50277-2985), pp. 34-36, Feb. 10, 2006. |
Kokku, Ravi et al., “Half-Pipe Anchoring: An Efficient Technique for Multiple Connection Handoff,” Proceedings of the 10th International Conference of Network Protocols, Nov. 12, 2002, 10 pages. |
“Office Action” received in related case U.S. Appl. No. 10/917,661 filed Aug. 12, 2004, 9 pages. |
“Office Action” received in related case U.S. Appl. No. 10/918,056 filed Aug. 12, 2004, 9 pages. |
“Office Action” received in related case U.S. Appl. No. 10/917,687 filed Aug. 12, 2004, 9 pages. |
“Notice of Allowance and Fee Due” received in U.S. Appl. No. 10/917,843 received on Apr. 1, 2008 (7 pages). |
European Patent Office, “Communication under Rule 71(3) EPC”, Application No. 04781286.2-1244, dated Sep. 11, 2008, 6 pages. |
Claims, Application No. 04781286.2-1244, dated Sep. 11, 2008, 40 pages. |
Jeffrey S. Chase et al., “Dynamic Virtual Clusters In A Grid Site Manager”, Jun. 22, 2003, 11 pages. |
Japanese Patent Office, “Final Decision for Rejection (English translation)”, patent application No. 523426/2006, dated Aug. 31, 2010, 2 pages. |
Number | Date | Country | |
---|---|---|---|
20060184535 A1 | Aug 2006 | US |