IP Library Granted Patent US 9,251,194
Granted Patent B2
US 9,251,194 · App. 13/559,337 · Granted Feb 2, 2016

Automatic data request recovery after session failure

Inventors: Matthew Alban Neerincx (Sammamish, WA); Luiz Fernando Federico Dos Santos (Lynnwood, WA); Oleg Ignat (Bellevue, WA); David Bruce Lomet (Redmond, WA); Quetzalcoatl Bradley (Monroe, WA); Raghu Ram (Redmond, WA); Chadwin James Mumford (Woodinville, WA); Peter Gvozdjak (Bellevue, WA); Balendran Mugundan (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F17/30348H04L67/142H04L69/40
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,251,194
App. No.
13/559,337
Granted
Feb 2, 2016
Kind
B2
Abstract

Techniques for recovering from session failures between clients and database servers are described herein. A session may be established between a client and a first database server to handle a database query for the client. A command of the session may be received by the first database server from the client. Data requested by the command may be retrieved. Prior to responding to the command, the data is spooled to a session state stored in a repository of the first database server, and the session state is replicated to one or more additional database servers. The session state stored in the repository of the first database server enables the first database server and client to recover from a failure of the session. The replicated session state enables the additional database server(s) to reestablish the session and respond to the command, instead of the first database server, if the session fails.

Claims (71)

1. A method in a database server, comprising:

establishing a first session with a client to handle a database query for the client;

receiving a command associated with the first session from the client, the command being a request for data;

retrieving the requested data;

spooling the data to a session state stored in a repository;

replicating the session state to at least one additional database server, the replicated session state enabling the at least one additional database server to respond to the command if the first session fails, the replicated session state including a session identifier, a command identifier, and the data; and

transmitting the data to the client in response to the command.

2. The method of claim 1 , further comprising:

detecting a failure in the first session due to a failure in a connection between the client and the database server during the first session or due to a failure in the database server.

3. The method of claim 1 , wherein if the first session fails, performing:

establishing a second session with the client;

receiving a re-transmission of the command from the client, the command including the command identifier;

determining that the command identifier received with the re-transmitted command matches the command identifier stored in the session state;

accessing the requested data in the session state stored in the repository; and

transmitting the requested data to the client in response to the retransmitted command.

4. The method of claim 3 , wherein said establishing a first session with a client to handle a database query for the client comprises:

generating the session identifier for the first session, and

storing the session identifier in the session state in the repository; and

said establishing a second session with the client comprises:

receiving the session identifier from the client in a communication transmitted to the database server to establish the second session, and

determining that the session identifier received in the communication matches the session identifier stored in the session state.

5. The method of claim 1 , wherein if the first session fails, performing:

establishing a second session with the client;

receiving a re-transmission of the command from the client with an indication of a portion of the requested data that was received by the client; and

transmitting to the client the data included in the session state other than the indicated portion.

6. The method of claim 5 , wherein said receiving a re-transmission of the command from the client with an indication of a portion of the requested data that was received by the client comprises:

receiving an indication of at least one row or at least one data packet received by the client.

7. The method of claim 1 , wherein said establishing a first session with a client to handle a database query for the client comprises:

establishing the first session with the client to perform an SQL (structured query language) SELECT query.

8. A method, comprising:

receiving a replicated session state from a first database server at a second database server, the replicated session state being a copy of a session state generated at the first database server to handle a database query for a client, the replicated session state including a session identifier, a command identifier, and data retrieved from a database at the first database server;

receiving a request at the second database server from a client to establish a session with the client due to a failure in a first session established between the client and the first database server;

determining that a session identifier included in the request matches the session identifier included in the replicated session state;

establishing a second session with the client at the second database server;

receiving a command associated with the second session from the client at the second database server;

determining that the command identifier included in the replicated session state matches a command identifier received with the command; and

transmitting the data from the second database server to the client in response to the command.

9. The method of claim 8 , wherein said receiving a command associated with the second session from the client comprises:

receiving an indication of at least one row or at least one data packet received by the client in response to an earlier transmission of the command to the first database server; and

wherein said transmitting the data to the client in response to the command comprises:

transmitting to the client the data included in the replicated session state other than the indicated at least one row or at least one data packet in response to the command.

10. A system, comprising:

a first database server that includes a memory having stored thereon instructions configured as:

a session manager that establishes a first session with a client to handle a database query for the client, and receives a command associated with the first session from the client, the command being a request for data,

an engine that retrieves the requested data, and

a response spooler that spools the retrieved data to a session state stored in a repository, and replicates the session state to at least one additional database server, the replicated session state enabling the at least one additional database server to respond to the command if the first session fails, the replicated session state including a session identifier, a command identifier, and the data; and

the first database server transmits the data to the client in response to the command; and

a processor configured to execute the instructions.

11. The system of claim 10 , wherein if the first session fails, the session manager establishes a second session with the client and receives a re-transmission of the command from the client;

the requested data is accessed in the session state stored in the repository; and

the first database server transmits the requested data to the client in response to the retransmitted command.

12. The system of claim 11 , wherein the session manager receives a session identifier from the client that identifies the first session, and the response spooler stores the received session identifier in the session state in the repository; and

the session manager receives the session identifier from the client in a communication transmitted to the first database server after the first session fails, determines that the session identifier received in the communication matches the session identifier stored in the session state, and resultantly enables the second session to be established.

13. The system of claim 10 , wherein if the first session fails, the session manager establishes a second session with the client and receives a re-transmission of the command from the client that includes an indication of a portion of the requested data that was already received by the client; and

the first database server transmits to the client the data included in the session state stored in the repository other than the indicated portion in response to the retransmitted command.

14. The system of claim 13 , wherein the portion of the requested data that was received by the client is indicated as at least one row or at least one data packet received by the client.

15. The system of claim 10 , wherein the first session is established with the client to perform an SQL (structured query language) SELECT query for an application associated with the client.

16. The system of claim 10 , further comprising:

a second database server that includes

a remote replicated session state handler that receives the replicated session state from the first database server and

a second session manager that receives a request from the client to establish a second session with the client due to the first session having failed, determines that a session identifier included in the request matches the session identifier included in the replicated session state, establishes the second session with the client at the second database server, receives a retransmission of the command from the client, and determines that the command identifier included in the replicated session state matches a command identifier received with the retransmitted command; and

the second database server transmits the data to the client in response to the retransmitted command.

17. The system of claim 16 , wherein the second command indicates at least one row or at least one data packet received by the client from the first database server; and

the second database server transmits to the client the data included in the replicated session state other than the indicated at least one row or at least one data packet in response to the retransmitted command.

18. A system, comprising:

a second database server that includes

a remote replicated session state handler that receives a replicated session state from a first database server, the replicated session state being a copy of a session state generated at the first database server to handle a database query for a client, the replicated session state including a session identifier, a command identifier, and data retrieved from a database at the first database server, and

a session manager that receives a request from the client to establish a session with the client due to a failure in a first session established between the client and the first database server, determines that a session identifier included in the request matches the session identifier included in the replicated session state, establishes a second session with the client at the second database server, receives a command associated with the second session from the client, and determines that the command identifier included in the replicated session state matches a command identifier received with the command; and

the second database server transmits the data to the client in response to the command.

19. The system of claim 18 , wherein the command indicates at least one row or at least one data packet received by the client in response to an earlier transmission of the command to the first database server; and

the second database server transmits to the client the data included in the replicated session state other than the indicated at least one row or at least one data packet in response to the command.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2013
From: NEERINCX, MATTHEW ALBAN; DOS SANTOS, LUIZ FERNANDO FEDERICO; IGNAT, OLEG; LOMET, DAVID BRUCE; BRADLEY, QUETZALCOATL; RAM, RAGHU; MUMFORD, CHADWIN JAMES; GVOZDJAK, PETER; MUGUNDAN, BALENDRAN
To: MICROSOFT CORPORATION
Reel/Frame 030746/0657 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2012
From: NEERINCX, MATTHEW ALBAN; DOS SANTOS, LUIZ FERNANDO FEDERICO; IGNAT, OLEG; LOMET, DAVID BRUCE; BRADLEY, QUETZALCOATL; RAM, RAGHU; MUMFORD, CHADWIN JAMES; GVOZDJAK, PETER
To: MICROSOFT CORPORATION
Reel/Frame 028652/0520 →
Continuity (1)
Related Publication 20140032964A1 · Jan 30, 2014