IP Library › Granted Patent US 11,089,133
Granted Patent B1
US 11,089,133 · App. 15/821,690 · Granted Aug 10, 2021

Synchronizing data with delayed subscriptions

Inventors: Amit Patel (Fall City, WA); Rohan Deshpande (Seattle, WA); Lisa Meenhee Shon (Seattle, WA); Karthik Saligrama Shreeram (Seattle, WA); Christopher Nathan Dowling (Seattle, WA); Jeffrey H. Bailey (Seattle, WA); Antoine Francois Charles Boyer (Seattle, WA); Richard Threlkeld (New York, NY); Michael Paris (Seattle, WA); Michael B. Willingham (Seattle, WA); Mohit Srivastava (Issaquah, WA)
Assignee: Amazon Technologies, Inc.
H04L67/325G06F16/273H04L67/2809H04L67/2895H04L67/42
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 11,089,133
App. No.
15/821,690
Granted
Aug 10, 2021
Kind
B1
Abstract

A technology is provided for synchronizing data with delayed subscriptions. A request may be received at a data proxy for a data snapshot for an application that has been offline at the client. A subscription may be held for a pre-determined amount of time after the request for the snapshot. The data snapshot may be sent to the client. The data for the subscription may be sent after the pre-determined amount of time.

Claims (51)

1. A non-transitory machine readable storage medium having instructions embodied thereon, the instructions when executed cause a processor to perform processing, comprising:

accepting, at a data proxy hosted by a service provider environment, a network connection from a client to enable the client to come online after the client has been offline for a period of time after having been previously connected to the data proxy;

receiving, at the data proxy, a request from the client for a data snapshot for an application at the client, wherein the data snapshot includes data generated while the client was offline;

holding a subscription for update data for a pre-determined amount of time after the request for the data snapshot, wherein the update data for the subscription is generated during the pre-determined amount of time that occurs after the request for the data snapshot;

sending the data snapshot to the client; and

sending the update data for the subscription to the client after the pre-determined amount of time.

2. The non-transitory machine readable storage medium of claim 1 , further comprising:

tracking a time difference between the network connection and the request for the data snapshot; and

basing the pre-determined amount of time on the time difference between the network connection and the request for the data snapshot.

3. The non-transitory machine readable storage medium of claim 1 , further comprising:

receiving a mutation at the data proxy from the client, wherein the mutation is one of a plurality of mutations that were optimistically cached and serially ordered at the client while the client was offline.

4. The non-transitory machine readable storage medium of claim 1 ,

wherein the data for the subscription is sent using at least one of: Message Queue Telemetry Transport (MQTT) protocol, WebSocket protocol, or long polling.

5. A method, comprising:

receiving a request for a data snapshot for an application that has come online after the application has been offline for a period of time;

holding a subscription for update data for a pre-determined amount of time after the request for the data snapshot, wherein the update data is generated during the pre-determined amount of time that occurs after the request for the data snapshot;

sending the data snapshot to a client; and

sending the update data for the subscription to the client via a messaging service after the pre-determined amount of time.

6. The method of claim 5 , wherein the data snapshot includes data generated while the client was offline, and the update data for the subscription is generated after a network connection has been made.

7. The method of claim 5 , wherein the pre-determined amount of time is at least 10 seconds.

8. The method of claim 5 , further comprising:

tracking a time difference between a network connection being completed and the request for the data snapshot; and

basing the pre-determined amount of time on the time difference between the network connection being completed and the request for the data snapshot.

9. The method of claim 5 , wherein the update data for the subscription is sent using at least one of: Message Queue Telemetry Transport (MQTT) protocol, WebSocket protocol, or long polling.

10. The method of claim 5 , further comprising:

receiving a mutation at a data proxy from the client; and

applying the mutation to a data source via a data access resolver.

11. The method of claim 10 , wherein the mutation is one of a plurality of mutations that were stored in a cache at the client in a queue while the client was offline and were sent to the data proxy to be applied serially after a network connection is made.

12. The method of claim 10 , wherein the data proxy includes more than one version of a data schema and the mutation is handled by the data proxy using a version of the data schema employed by the client.

13. The method of claim 10 , further comprising:

receiving a conflict notification at the data proxy from the data access resolver for a conflict associated with the mutation at the data source; and

resolving the conflict at the data proxy using a pre-defined function defined in the data proxy.

14. The method of claim 10 , wherein the data source is a data store, and the data store comprises one of: an object data store, a key-value data store, a relational database, or a search service.

15. The method of claim 10 , wherein the data source is a code function that is a segment of program code executing on a code function service.

16. The method of claim 5 , wherein a messaging service is used to deliver messages to the client and the messaging service is based on a publish-subscribe model, wherein messages are sent to topics subscribed to by the client.

17. A system, comprising:

a data proxy;

at least one processor; and

a memory device including instructions to be executed by the at least one processor in order to:

accept, at a data proxy, a network connection from a client to enable the client to come online after the client has been offline for a period of time;

receive, at the data proxy, a request for a data snapshot for an application that has been offline;

hold a subscription for update data for a pre-determined amount of time after the request for the data snapshot, wherein the update data is generated during the pre-determined amount of time that occurs after the request for the data snapshot;

send the data snapshot to the client;

send the update data for the subscription after the pre-determined amount of time; and

receive a mutation from a queue for the client, wherein the mutation was generated at the client while the client was offline.

18. The system of claim 17 , the memory device including further instructions to be executed by the at least one processor in order to:

track a time difference between the network connection and the request for the data snapshot; and

base the pre-determined amount of time on the time difference between the network connection and the request for the data snapshot.

19. The system of claim 17 , wherein the mutation is one of a plurality of mutations that were optimistically cached and serially ordered at the client while the client was offline.

20. The system of claim 17 , the memory device including further instructions to be executed by the at least one processor in order to:

apply a plurality of mutations from the client in a serial order that was generated at the client.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2017
From: PATEL, AMIT; DESHPANDE, ROHAN; SHON, LISA MEENHEE; SALIGRAMA SHREERAM, KARTHIK; DOWLING, CHRISTOPHER NATHAN; BAILEY, JEFFREY H.; BOYER, ANTOINE FRANCOIS CHARLES; THRELKELD, RICHARD; PARIS, MICHAEL; WILLINGHAM, MICHAEL B.; SRIVASTAVA, MOHIT
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 044358/0097 →
Cited By (1)
US 12,248,458