IP Library Granted Patent US 10,360,159
Granted Patent B1
US 10,360,159 · App. 14/104,434 · Granted Jul 23, 2019

System, method, apparatus, and computer program product for providing a cache mechanism

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 10,360,159
App. No.
14/104,434
Granted
Jul 23, 2019
Kind
B1
Abstract

Provided herein are systems, methods and computer readable media for providing an out of band cache mechanism for ensuring availability of data. An example system may include a client device configured to, in response to determining requested data is not available in a cache, access the requested data from a data source, transmit, to a cache mechanism, an indication that the requested data is unavailable in the cache, the indication configured to be placed in a queue as an element pointing to the requested data, a cache mechanism configured to receive an indication of requested data, determine whether an element, the element indicative of the requested data, exists in a queue, and in an instance in which the element is not present in the queue, placing the element in the queue, the queue being a list of elements, each indicative of requested data needing to be placed in the cache.

Claims (51)

1. A method for operating a cache mechanism comprising:

receiving an element, the element being an indication of requested data, the requested data having been (i) attempted to be accessed from a cache, subsequent to having been attempted to be accessed from the cache, (ii) determined to be not stored in the cache, and subsequent to having been attempted to be accessed from the cache and determined to be not stored in the cache, (iii) accessed from a data source; and

checking the element against the queue;

determining that the element exists in a queue, the queue being a list of elements, each having been checked against the queue, and each indicative of requested data needing to be placed in the cache but not yet in the cache and as such, if needed, having to be accessed from the data source until loaded into the cache; and

in an instance in which the element is not present in the queue, placing the element in the queue,

wherein the determination that the element exists in the queue occurs after the requested data has previously been (i) attempted to be accessed from the cache, subsequent to having been attempted to be accessed from the cache, (ii) determined to be not stored in the cache, and subsequent to having been attempted to be accessed from the cache and determined to be not stored in the cache, (iii) accessed from the data source.

2. The method of claim 1 further comprising:

popping the element from the queue;

causing the requested data indicated by the element to be loaded into the cache from the data source; and

in an instance in which the requested data is loaded into the cache, removing the element from the queue.

3. The method of claim 1 further comprising:

logging an enqueue event in response to placing the element in the queue.

4. The method of claim 1 ,

in an instance in which the element is present in the queue, the method further comprising:

logging a duplicate request.

5. The method of claim 2 ,

in an instance in which the requested data is not loaded into the cache, logging an error.

6. A device comprising processing circuitry configured to:

receive an element, the element being an indication of requested data, the requested data having been attempted to be accessed from a cache, subsequent to having been attempted to be accessed from the cache, determined to be not stored in the cache, and subsequent to having been attempted to be accessed from the cache and determined to be not stored in the cache, accessed from a data source; and

check the element against the queue;

determine whether the element exists in a queue, the queue being a list of elements, each having been checked against the queue, and each indicative of requested data needing to be placed in the cache but not yet in the cache and as such, if needed, having to be accessed from the data source until loaded into the cache; and

in an instance in which the element is not present in the queue, placing the element in the queue,

wherein the determination whether the element exists in the queue occurs after the requested data has previously been attempted to be accessed from the cache, subsequent to having been attempted to be accessed from the cache, determined to be not stored in the cache, and subsequent to having been attempted to be accessed from the cache and determined to be not stored in the cache, accessed from the data source.

7. The device of claim 6 further comprising processing circuitry configured to:

pop the element from the queue;

cause the requested data indicated by the element to be loaded into the cache from the data source; and

in an instance in which the requested data is loaded into the cache, remove the element from the queue.

8. The device of claim 6 further comprising processing circuitry configured to:

log an enqueue event in response to placing the element in the queue.

9. The device of claim 6 further comprising processing circuitry configured to:

in an instance in which the element is present in the queue, log a duplicate request.

10. The device of claim 7 further comprising processing circuitry configured to:

in an instance in which the requested data is not loaded into the cache, log an error.

11. A computer program product comprising at least one non-transitory computer-readable storage medium having computer-executable program code instructions stored therein, the computer-executable program code instructions comprising program code instructions for:

receiving an element, the element being an indication of requested data, the requested data having been attempted to be accessed from a cache, and, subsequent to having been attempted to be accessed from the cache, determined to be not stored in the cache, and subsequent to having been attempted to be accessed from the cache and determined to be not stored in the cache, accessed from a data source;

checking the element against the queue;

determining whether the element exists in a queue, the queue being a list of elements, each having been checked against the queue, and each indicative of requested data needing to be placed in the cache but not yet in the cache and as such, if needed, having to be accessed from the data source until loaded into the cache;

and

in an instance in which the element is not present in the queue, placing the element in the queue,

wherein the determination whether the element exists in the queue occurs after the requested data has previously been attempted to be accessed from the cache, subsequent to having been attempted to be accessed from the cache, determined to be not stored in the cache, and subsequent to having been attempted to be accessed from the cache and determined to be not stored in the cache, accessed from the data source.

12. The computer program product according to claim 11 , wherein the computer-executable program code instructions further comprise program code instructions for:

popping the element from the queue;

causing the requested data indicated by the element to be loaded into the cache from the data source; and

in an instance in which the requested data is loaded into the cache, removing the element from the queue.

13. The computer program product according to claim 11 , wherein the computer-executable program code instructions further comprise program code instructions for:

logging an enqueue event in response to placing the element in the queue.

14. The computer program product according to claim 11 , wherein the computer-executable program code instructions further comprise program code instructions for:

in an instance in which the element is present in the queue, the method further comprising:

logging a duplicate request.

15. The computer program product according to claim 12 , wherein the computer-executable program code instructions further comprise program code instructions for:

in an instance in which the requested data is not loaded into the cache, logging an error.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2024
From: GROUPON, INC.
To: BYTEDANCE INC.
Reel/Frame 068833/0811 →
RELEASE OF SECURITY INTEREST Recorded Feb 26, 2024
From: JPMORGAN CHASE BANK, N.A.
To: GROUPON, INC.; LIVINGSOCIAL, LLC (F/K/A LIVINGSOCIAL, INC.)
Reel/Frame 066676/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN INTELLECTUAL PROPERTY RIGHTS Recorded Feb 26, 2024
From: JPMORGAN CHASE BANK, N.A.
To: GROUPON, INC.; LIVINGSOCIAL, LLC (F/K/A LIVINGSOCIAL, INC.)
Reel/Frame 066676/0251 →
SECURITY INTEREST Recorded Jul 23, 2020
From: GROUPON, INC.; LIVINGSOCIAL, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 053294/0495 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2019
From: BLACK, STEVEN; SIEGRIST, STUART; MARKHAM, GILLIGAN
To: GROUPON, INC.
Reel/Frame 049361/0592 →
Cited By (1)
US 12,495,100