Automatic failover for clients accessing a resource through a server
First Claim
1. A method for recovering after failure of a first connection that was established between a client and a first server for accessing a resource, the method comprising the steps of:
- detecting that the first connection between said first server and said client has failed;
after detecting the first connection has failed, selecting a second server that has access to said resource; and
automatically connecting said client with said second server to establish a second connection for accessing said resource.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and system for recovering after failure of a first server to which a client was connected for accessing a resource is provided. When it is detected that a connection between the first server and the client has failed, the client is automatically connected with a second server that has access to the resource. After automatically connecting the client, the client accesses the resource through the second server. The client stores information about the state of the session with the first server so that processing can continue where it left off after the client connects with the second server. The client may be pre-connected to the second server prior to the failure of the first server to reduce the latency caused by switching in response to a failure. The second server may be configured to pre-parse the commands that the client issues to the first server to further reduce the latency associated with switching to the second server.
235 Citations
37 Claims
-
1. A method for recovering after failure of a first connection that was established between a client and a first server for accessing a resource, the method comprising the steps of:
-
detecting that the first connection between said first server and said client has failed;
after detecting the first connection has failed, selecting a second server that has access to said resource; and
automatically connecting said client with said second server to establish a second connection for accessing said resource. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
said step of detecting that the first connection between said first server and said client has failed includes the step of detecting that the first connection between a database server application that has access to the resource and a database client application has failed;
said step of automatically connecting said client with the second server includes the step of automatically connecting said database client application with a second database server application to establish a second connection for accessing said resource.
-
-
3. The method of claim 2 wherein the step of detecting that said first connection between said database client application and said first server has failed includes the step of detecting that the database server application has not responded within a threshold period of time.
-
4. The method of claim 1 wherein the step of detecting that the first connection between said first server and said client has failed includes the steps of:
-
detecting that said first connection between a database client application and said first server has failed; and
notifying said application that said first connection has failed and that access to said resource through said first server has been lost.
-
-
5. The method of claim 4 wherein the step of detecting that said first connection between said database client application and said first server has failed includes the steps of:
-
said client initiating a callback request when making said first connection between said client and said first server, and said client responding to said callback request when said first connection between said client and said first server fails.
-
-
6. The method of claim 1 further comprising the step of said client causing said resource to be rolled back to a valid state.
-
7. The method of claim 1 wherein:
-
said first server is executing a select command when said first connection fails; and
the method further comprises the step of said client causing said second server to complete execution of said select command after said client is connected to said second server.
-
-
8. The method of claim 1 wherein:
-
said client is causing said first server to execute a transaction when said first connection fails; and
said client causes said second server to complete execution of said transaction after said client connects to said second server.
-
-
9. The method of claim 1 wherein:
-
the first connection between the first server and the client constitutes a session;
the method includes the steps ofmaintaining values that reflect a state of said session at both said client and said first server, and communicating said values to said second server after failure of said first connection.
-
-
10. The method of claim 1 wherein:
-
said client is causing said first server to execute a transaction when said first connection fails; and
said client causes said resource to be rolled back to a savepoint, wherein said savepoint represents an intermediate point in the execution of said transaction.
-
-
11. The method of claim 10 further comprising the step of said client causing said second server to complete the execution of said transaction from said save point after said client connects to said second server.
-
12. The method of claim 1 wherein:
-
said client is causing said first server to execute a database instruction when said first connection fails; and
the method further includes the steps of said client calculating a checksum based on results returned by said first server;
said client using said checksum to determine whether to cause said second server to continue executing said database instruction from where said database instruction was interrupted when said first server failed.
-
-
13. The method of claim 12 further comprising the step of said client using said checksum to complete the execution of said database instruction from where said database instruction was interrupted when said first connection failed after said client connects to said second server.
-
14. The method of claim 1 wherein the step of detecting that the first connection has failed includes the step of detecting that the first server has failed.
-
15. The method of claim 1 further comprises the step of:
after automatically connecting said client with said second sever, said client accessing said resource through said second server.
-
16. A computer-readable medium having stored thereon sequences of instructions for recovering after failure of a first connection that was established between a client and a first server for accessing a resource, the sequences of instructions including instructions for performing the steps of:
-
detecting that the first connection between said first server and said client has failed;
after detecting the first connection has failed, selecting a second server that has access to said resource; and
automatically connecting said client with said second server to establish a second connection for accessing said resource. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
said step of detecting that said first connection between said first server and said client has failed includes the step of detecting that the first connection between a database server application that has access to the resource and a database client application has failed;
said step of automatically connecting said client with the second server includes the step of automatically connecting said database client application with a second database server application to establish a second connection for accessing said resource.
-
-
18. The computer-readable medium of claim 17 wherein the step of detecting that said first connection between said database client application and said first server has failed includes the step of detecting that the first server has failed to respond within a predetermined period of time.
-
19. The computer-readable medium of claim 16 wherein the step of detecting that a connection between said first server and said client has failed includes the steps of:
-
detecting that said first connection between a database client application and said first server has failed; and
notifying said application that said first connection has failed and that access to said resource through said first server has been lost.
-
-
20. The computer-readable medium of claim 19 wherein the step of detecting that said first connection between said database client application and said first server has failed includes the steps of:
-
said client initiating a callback request when making said first connection between said client and said first server; and
said client responding to said callback request when said first connection between said client and said first server fails.
-
-
21. The computer-readable medium of claim 16 wherein the sequences of instructions further include instructions for performing the step of said client causing said resource to be rolled back to a valid state after connecting to said second server.
-
22. The computer-readable medium of claim 16 wherein:
-
said first server is executing a select command when said first connection fails; and
the sequences of instructions further include instructions for performing the step of said client causing said second server to complete execution of said select command after said client is connected to said second server.
-
-
23. The computer-readable medium of claim 16 wherein:
-
said client is causing said first server to execute a transaction when said first connection fails; and
said client causes said second server to complete execution of said transaction after said client connects to said second server.
-
-
24. The computer-readable medium of claim 16 wherein:
-
the first connection between the first server and the client constitutes a session;
the sequences of instructions further includes instructions for performing the steps of maintaining values that reflect a state of said session at both said client and said first server; and
communicating said values to said second server after failure of said first connection.
-
-
25. The computer-readable medium of claim 16 wherein the step of detecting that the first connection has failed includes the step of detecting that the first server has failed.
-
26. The computer-readable medium of claim 16 further comprising instructions for performing the step of:
after automatically connecting said client with said second sever, said client accessing said resource through said second server.
-
27. A method for completing a transaction after failure of a first connection that was established between a client and a first server for accessing a resource, the method comprising the steps of:
-
performing a first portion of the transaction on the first server;
detecting that the first connection between said first server and said client has failed;
after detecting that the first connection between said first server and said client has failed, automatically establishing a second connection between said client and a second server that has access to said resource; and
performing a second portion of the transaction on the second server to complete the transaction, wherein performance of the first portion of the transaction includes performance of at least some operations that are not performed by the second portion of the transaction. - View Dependent Claims (28, 29, 30)
the step of performing a first portion of the transaction includes the step of initiating a select command when said first server fails; and
the method further comprises the step of said client causing said second server to complete execution of said select command after said client is connected to said second server.
-
-
29. The method of claim 27 wherein:
-
the first connection between the first server and the client constitutes a session, the method includes the steps of maintaining values that reflect a state of said session at both said client and said first server; and
communicating said values to said second server after failure of said first connection.
-
-
30. The method of claim 27 wherein:
-
the step of performing the fist portion of the transaction includes the step of maintaining a savepoint that represents an intermediate point in the execution of said transaction;
the step of automatically establishing the second connection includes the step of causing said resource to be rolled back to the savepoint; and
the step of performing the second portion of the transaction includes the step of causing said second server to complete the execution of the transaction from said savepoint after said client connects to said second server.
-
-
31. A method for recovering after failure of a first connection that was established between a client and a first server for accessing a resource, wherein
said first connection constitutes a session between said client and said first server, the method comprising the steps of: -
executing commands sent by said client to said first server using said session, wherein said session has a state that changes in response to said first server executing said commands; and
prior to failure of the first connection, establishing a second connection between the client and a second server that has access to said resource; and
pre-parsing on said second server, without executing on said second server, commands sent by said client to said first server.
-
-
32. A computer-readable medium having stored thereon sequences of instructions for completing a transaction after failure of a first connection that was established between a client and a first server for accessing a resource, the sequences of instructions including instructions for performing the steps of:
-
performing a first portion of the transaction on the first server;
detecting that the first connection between said first server and said client has failed;
after detecting that the first connection between said first server and said client has failed, automatically establishing a second connection between said client and a second server that has access to said resource; and
performing a second portion of the transaction on the second server to complete the transaction, wherein performance of the first portion of the transaction includes performance of at least some operations that are not performed by the second portion of the transaction. - View Dependent Claims (33, 34, 35)
the step of performing a first portion of the transaction includes the step of initiating a select command when said first server fails; and
the computer-readable medium further comprising instructions for performing the step of said client causing said second server to complete execution of said select command after said client is connected to said second server.
-
-
34. The computer-readable medium of claim 32 wherein:
-
the first connection between the first server and the client constitutes a session;
the computer-readable medium further including instructions for performing the steps of maintaining values that reflect a state of said session at both said client and said first server; and
communicating said values to said second server after failure of said first connection.
-
-
35. The computer-readable medium of claim 32 wherein:
-
the step of performing the first portion of the transaction includes the step of maintaining a savepoint that represents an intermediate point in the execution of said transaction;
the step of automatically establishing the second connection includes the step of causing said resource to be rolled back to the savepoint; and
the step of performing the second portion of the transaction includes the step of causing said second server to complete the execution of the transaction from said savepoint after said client connects to said second server.
-
-
36. A computer-readable medium having stored thereon sequences of instructions for recovering after failure of a first connection that was established between a client and a first server for accessing a resource, wherein said first connection constitutes a session between said client and said first server, the sequences of instructions including instructions for performing the steps of:
-
executing commands sent by said client to said first server using said session, wherein said session has a state that changes in response to said first server executing said commands; and
prior to failure of the first connection, establishing a second connection between the client and a second server that has access to said resource; and
pre-parsing on said second server, without executing on said second server, commands sent by said client to said first server.
-
-
37. A method for recovering after failure of a first connection that was established between a client and a first server for accessing a resource, the method comprising the steps of:
-
prior to failure of the first connection, initiating a first transaction on the first server, wherein the transaction causes a first set of data to be sent to an application executing on said client;
detecting that the first connection between said first server and said client has failed, wherein the failure of the first connection causes the first transaction to be interrupted; and
after detecting the first connection has failed, selecting a second server that has access to said resource;
automatically connecting said client with said second server to establish a second connection for accessing said resource;
initiating a second transaction, wherein the second transaction is based on the first transaction; and
sending a second set of data to the application, where the second set of data causes the failure to be transparent to the application.
-
Specification