IP Library Granted Patent US 12,210,453
Granted Patent B2
US 12,210,453 · App. 18/345,243 · Granted Jan 28, 2025

Technologies for configurable caching, deduplication, and rate limit handling

Inventors: Charles D. Fico (Indianapolis, IN); Stefan Brinton (Indianapolis, IN); Chad Slappey (Indianapolis, IN); Hanna Wade (Indianapolis, IN)
Assignee: Genesys Cloud Services, Inc.
G06F12/0646G06F12/0891G06F12/123
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 12,210,453
App. No.
18/345,243
Granted
Jan 28, 2025
Kind
B2
Abstract

A method for configurable caching, deduplication, and rate limit handling of user interface data requests according to an embodiment includes receiving a data request initiated by a user interface element of a user interface, determining whether a deduplication cache includes a deduplication entry associated with the data request, determining whether a main cache includes a cache entry associated with the data request in response to determining that the deduplication cache does not include the deduplication entry, determining whether the data request is associated with a rate-limited group of application programming interface endpoints in response to determining that the main cache does not include the cache entry or determining that the cache entry has expired, and making the data request to a backend system after a predefined server retry period associated with the rate-limited group has elapsed in response to determining that the data request is associated with the rate-limited group.

Claims (46)

1. A method for configurable caching, deduplication, and rate limit handling of user interface data requests, the method comprising:

receiving a data request initiated by a user interface element of a user interface;

determining whether a deduplication cache includes a deduplication entry associated with the data request;

determining whether a main cache, different from the deduplication cache, includes a cache entry associated with the data request in response to determining that the deduplication cache does not include the deduplication entry;

determining whether the data request is associated with a rate-limited group of application programming interface endpoints in response to one of (i) determining that the main cache does not include the cache entry associated with the data request or (ii) determining that the cache entry associated with the data request has expired; and

making the data request to a backend system after a predefined server retry period associated with the rate-limited group has elapsed in response to determining that the data request is associated with the rate-limited group.

2. The method of claim 1 , wherein the deduplication entry indicates that a previous data request identical to the data request initiated by the user interface element of the user interface was made within a threshold period of time.

3. The method of claim 1 , further comprising determining whether the data request is associated with a predefined maximum cache age in response to determining that the main cache includes the cache entry associated with the data request.

4. The method of claim 3 , further comprising determining whether the cache entry associated with the data request has expired based on a creation time of the cache entry and the predefined maximum cache age in response to determining that the data request is associated with the predefined maximum cache age.

5. The method of claim 3 , further comprising determining whether the cache entry associated with the data request has expired based on an expiration time of the cache entry defined by the cache entry in response to determining that the data request is not associated with the predefined maximum cache age.

6. The method of claim 1 , further comprising making the data request to the backend system immediately in response to determining that the data request is not associated with any rate-limited group.

7. The method of claim 1 , further comprising:

receiving an error associated with the data request in response to a failure to fulfill the data request;

determining whether the error associated with the data request is a retriable error;

determining whether a predefined retry limit has been reached in response to determining that the error associated with the data request is the retriable error; and

retrying the data request in response to determining that the predefined retry limit has not been reached.

8. The method of claim 7 , wherein retrying the data request comprises retrying the data request after the predefined server retry period in response to determining that the retriable error is a 429 error.

9. The method of claim 7 , wherein the predefined retry limit is a maximum number of retry attempts that can be made.

10. The method of claim 1 , wherein determining whether the data request is associated with the rate-limited group of application programming interface endpoints comprises determining whether an application programming interface endpoint to which the data request is directed is included in the rate-limited group of application programming interface endpoints.

11. The method of claim 1 , wherein the deduplication cache is configured to store one or more promises, wherein each of the one or more promises is associated with a previous respective data request.

12. The method of claim 1 , wherein the deduplication cache is configured to store data returned to previous data requests with a configurable timeout.

13. The method of claim 1 , wherein the main cache is configured to store data returned in response to previous data requests.

14. A system for configurable caching, deduplication, and rate limit handling of user interface data requests, the system comprising:

a deduplication cache;

a main cache different from the deduplication cache;

at least one processor; and

at least one memory comprising a plurality of instructions stored thereon that, in response to execution by the at least one processor, causes the system to:

receive a data request initiated by a user interface element of a user interface;

determine whether the deduplication cache includes a deduplication entry associated with the data request;

determine whether the main cache includes a cache entry associated with the data request in response to a determination that the deduplication cache does not include the deduplication entry;

determine whether the data request is associated with a rate-limited group of application programming interface endpoints in response to a determination that one of (i) the main cache does not include the cache entry associated with the data request or (ii) the cache entry associated with the data request has expired; and

make the data request to a backend system after a predefined server retry period associated with the rate-limited group has elapsed in response to a determination that the data request is associated with the rate-limited group.

15. The system of claim 14 , wherein the deduplication entry indicates that a previous data request identical to the data request initiated by the user interface element of the user interface was made within a threshold period of time.

16. The system of claim 14 , wherein the plurality of instructions further causes the system to:

determine whether the data request is associated with a predefined maximum cache age in response to a determination that the main cache includes the cache entry associated with the data request;

determine whether the cache entry associated with the data request has expired based on a creation time of the cache entry and the predefined maximum cache age in response to a determination that the data request is associated with the predefined maximum cache age; and

determine whether the cache entry associated with the data request has expired based on an expiration time of the cache entry defined by the cache entry in response to a determination that the data request is not associated with the predefined maximum cache age.

17. The system of claim 14 , wherein the plurality of instructions further causes the system to:

receive an error associated with the data request in response to a failure to fulfill the data request;

determine whether the error associated with the data request is a retriable error;

determine whether a predefined retry limit has been reached in response to a determination that the error associated with the data request is the retriable error; and

retry the data request in response to a determination that the predefined retry limit has not been reached.

18. The system of claim 17 , wherein to retry the data request comprises to retry the data request after the predefined server retry period in response to a determination that the retriable error is a 429 error.

19. The system of claim 17 , wherein the predefined retry limit is a maximum number of retry attempts that can be made.

20. The system of claim 14 , wherein the deduplication cache is configured to store one or more promises, wherein each of the one or more promises is associated with a previous respective data request; and

wherein the main cache is configured to store data returned in response to previous data requests.

Assignments (4)
NOTICE OF SUCCESSION OF SECURITY INTERESTS AT REEL/FRAME 067718/0823 Recorded Feb 4, 2025
From: BANK OF AMERICA, N.A., AS RESIGNING AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR AGENT
Reel/Frame 070098/0300 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2024
From: WADE, HANNA
To: GENESYS CLOUD SERVICES, INC.
Reel/Frame 069487/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2024
From: FICO, CHARLES D.; BRINTON, STEFAN; SLAPPEY, CHAD
To: GENESYS CLOUD SERVICES, INC.
Reel/Frame 068369/0798 →
SECURITY AGREEMENT Recorded Jun 11, 2024
From: GENESYS CLOUD SERVICES, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 067718/0823 →
Continuity (1)
Related Publication 20250004942A1 · Jan 2, 2025
References Cited (14)
US 7908436B1 · Srinivasan · 2011 [cited by examiner]
US 11403212B1 · Singha · 2022 [cited by examiner]
US 20140304464A1 · Bert · 2014 [cited by examiner]
US 20150134625A1 · Lentini et al. · 2015 [cited by applicant]
US 20150372910A1 · Janakiraman · 2015 [cited by examiner]
US 20190068622A1 · Lin et al. · 2019 [cited by applicant]
US 20190107953A1 · Garg et al. · 2019 [cited by applicant]
US 20190227941A1 · Chang et al. · 2019 [cited by applicant]
US 20190392150A1 · Shevade · 2019 [cited by examiner]
US 20200137097A1 · Zimmermann et al. · 2020 [cited by applicant]
US 20210124687A1 · Meiri et al. · 2021 [cited by applicant]
US 20220035734A1 · Harel et al. · 2022 [cited by applicant]
US 20230054696A1 · Kappes et al. · 2023 [cited by applicant]
The International Search Report and Written Opinion regarding co-pending PCT application, having application No. PCT/US2024/026158, issued on Jul. 24, 2024. [cited by applicant]