IP Library › Granted Patent US 12,566,706
Granted Patent B2
US 12,566,706 · App. 18/600,971 · Granted Mar 3, 2026

Providing rolling updates of distributed systems with a shared cache

Inventor: Bill Ataras (Portland, OR)
Assignee: Roku, Inc.
G06F12/084G06F8/65G06F8/656G06F12/0873G06F16/9574G06F2212/1008G06F2212/1048G06F2212/163G06F2212/282G06F2212/313G06F2212/314G06F2212/62
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,566,706
App. No.
18/600,971
Granted
Mar 3, 2026
Kind
B2
Abstract

Disclosed herein are system, apparatus, article of manufacture, method, and/or computer program product embodiments for providing rolling updates of distributed systems with a shared cache. An embodiment operates by receiving a data item key corresponding to a request from a user profile operating on a computing device and receiving a version identifier corresponding to a first version of an application operating on the computing device. It is determined that a shared cache includes a first value and second value for the data item key. A key component is generated corresponding to the user profile. Both the generated key component and the data item key are provided to the shared cache, and the first value of the data item as stored in the shared cache is received. The first value of the first version of the data item is updated.

Claims (84)

1 . A system for providing uninterrupted service to a plurality of computing devices using a shared cache memory, comprising:

one or more memories; and

at least one processor each coupled to at least one of the memories and configured to perform operations comprising:

determining that a data item in the shared cache memory is shared by both a first computing device and a second computing device of the plurality of computing devices;

receiving a data item key corresponding to a request to update the data item from a user profile operating on the first computing device;

receiving a version identifier corresponding to a first version of a platform application operating on the first computing device;

determining that the shared cache memory includes a first value for the data item key corresponding to the first version of the platform application operating on the first computing device, and a second value for the data item key corresponding to a second version of the platform application operating on the second computing device, wherein both the first value for the data item key and the second value for the data item key include an identical version agnostic identifier comprising a username corresponding to the user profile, and a unique version specific identifier corresponding to which version of the platform application is being used, wherein both the version agnostic identifier and the unique version specific identifier are used to access data from the shared cache memory, wherein the first value for the data item key corresponds to a login attribute for a user associated with the username;

generating a key component comprising the unique version specific identifier appended to the version agnostic identifier corresponding to the user profile;

providing the key component to the shared cache memory;

receiving a first value of the data item as stored in the shared cache memory responsive to providing the key component to the shared cache memory;

receiving a cache update request for the first value of the data item, the cache update request including the key component and a new value for the data item;

updating the first value of the data item for a first version of the data item in the shared cache memory to the new value for the data item responsive to the cache update request, wherein a second value of the data item for a second version of the data item is unchanged in the shared cache memory by the updating; and

isolating the first version of the data item from the second version of the data item in the shared cache memory,

wherein the isolation of the first version of the data item from the second version of the data item in the shared cache memory enables a hardware update to the first computing device or the second computing device, or a software update to the platform application operating on the first computing device or the platform application operating on the second computing device in a rolling fashion, so that each of the first computing device, the second computing device, the platform application operating on the first computing device, and the platform application operating on the second computing device continue to concurrently operate and use the shared cache memory after said hardware or software update.

2 . The system of claim 1 , wherein:

the first version of the data item is associated with the data item key for identifying the first version of the data item cached in the shared cache memory, and

the second version of the data item is associated with a second data item key for identifying the second version of the data item cached in the shared cache memory.

3 . The system of claim 1 , wherein:

the first version of the data item includes a first attribute-value pair identifying a first datastore property and the first value of the data item for the first version of the data item,

the second version of the data item includes a second attribute-value pair identifying a second datastore property and the second value of the data item for the second version of the data item, and

the first datastore property and the first value of the data item for the first version of the data item are equivalent to the second datastore property and the second value of the data item for the second version of the data item.

4 . The system of claim 1 , wherein:

the first version of the platform application is configured to at least receive a request to access the data item from a first version of a media player, wherein the request from the first version of the media player includes the version agnostic identifier; and

the second version of the platform application is configured to at least receive a request to access the data item from a second version of the media player, wherein the request from the second version of the media player includes the version agnostic identifier.

5 . The system of claim 1 , wherein:

the first version of the platform application is further configured to at least transmit a first cache write request to a shared cache application to request caching of the first version of the data item in the shared cache memory, in response to the request to access the data item from a first version of a media player, and

the second version of the platform application is further configured to at least transmit a second cache write request to the shared cache application to request caching of the second version of the data item in the shared cache memory, in response to a request to access the data item from a second version of the media player.

6 . The system of claim 5 , wherein:

the first cache write request includes the first version of the data item and a first data item key generated based on combining the version agnostic identifier and a first version specific identifier associated with the first version of the data item, and

the second cache write request includes the second version of the data item and a second data item key generated based on combining the version agnostic identifier and a second version specific identifier associated with the second version of the data item.

7 . The system of claim 6 , wherein the shared cache application is further configured to:

receive an active versions request from the first version of the platform application to retrieve a collection of version specific identifiers, wherein the collection of version specific identifiers includes the second version specific identifier and excludes the first version specific identifier.

8 . The system of claim 1 , wherein a version identifier identifying the first version of the data item comprises a version specific identifier received from a media player.

9 . The system of claim 1 , wherein the key component further comprises a user date-of-birth attribute and a user name attribute different from the username.

10 . The system of claim 1 , wherein the first value of the data item corresponds to information unique to identifying the user.

11 . The system of claim 1 , the operations further comprising:

removing the second value for the data item key from the shared cache memory.

12 . A computer-implemented method for providing uninterrupted service to a plurality of computing devices using a shared cache memory, comprising:

determining, by at least one processor, that a data item in the shared cache memory is shared by both a first computing device and a second computing device of the plurality of computing devices;

receiving a data item key corresponding to a request to update the data item from a user profile operating on the first computing device;

receiving a version identifier corresponding to a first version of a platform application operating on the first computing device;

determining that the shared cache memory includes a first value for the data item key corresponding to the first version of the platform application operating on the first computing device, and a second value for the data item key corresponding to a second version of the platform application operating on the second computing device, wherein both the first value for the data item key and the second value for the data item key include an identical version agnostic identifier comprising a username corresponding to the user profile, and a unique version specific identifier corresponding to which version of the platform application is being used, wherein both the version agnostic identifier and the unique version specific identifier are used to access data from the shared cache memory, wherein the first value for the data item key corresponds to a login attribute for a user associated with the username;

generating a key component comprising the unique version specific identifier appended to the version agnostic identifier corresponding to the user profile;

providing the key component to the shared cache memory;

receiving a first value of the data item as stored in the shared cache memory responsive to providing the key component to the shared cache memory;

receiving a cache update request for the first value of the data item, the cache update request including the key component and a new value for the data item;

updating the first value of the data item for a first version of the data item in the shared cache memory to the new value for the data item responsive to the cache update request, wherein a second value of the data item for a second version of the data item is unchanged in the shared cache memory by the updating; and

isolating the first version of the data item from the second version of the data item in the shared cache memory,

wherein the isolation of the first version of the data item from the second version of the data item in the shared cache memory enables a hardware update to the first computing device or the second computing device, or a software update to the platform application operating on the first computing device or the platform application operating on the second computing device in a rolling fashion, so that each of the first computing device, the second computing device, the platform application operating on the first computing device, and the platform application operating on the second computing device continue to concurrently operate and use the shared cache memory after said hardware or software update.

13 . The computer-implemented method of claim 12 , wherein:

the first version of the data item is associated with the data item key for identifying the first version of the data item cached in the shared cache memory, and

the second version of the data item is associated with a second data item key for identifying the second version of the data item cached in the shared cache memory.

14 . The computer-implemented method of claim 12 , wherein:

the first version of the data item includes a first attribute-value pair identifying a first datastore property and the first value of the data item for the first version of the data item,

the second version of the data item includes a second attribute-value pair identifying a second datastore property and the second value of the data item for the second version of the data item, and

the first datastore property and the first value of the data item for the first version of the data item are equivalent to the second datastore property and the second value of the data item for the second version of the data item.

15 . The computer-implemented method of claim 12 , wherein:

the first version of the platform application is configured to at least receive a request to access data item information from a first version of a media player, wherein the request from the first version of the media player includes the version agnostic identifier; and

the second version of the platform application is configured to at least receive a request to access the data item information from a second version of the media player, wherein the request from the second version of the media player includes the version agnostic identifier.

16 . The computer-implemented method of claim 12 , wherein:

the first version of the platform application is further configured to at least transmit a first cache write request to a shared cache application to request caching of the first version of the data item in the shared cache memory, in response to the request to access data item information from a first version of a media player, and

the second version of the platform application is further configured to at least transmit a second cache write request to the shared cache application to request caching of the second version of the data item in the shared cache memory, in response to a request to access the data item information from a second version of the media player.

17 . The computer-implemented method of claim 16 , wherein:

the first cache write request includes the first version of the data item and a first data item key generated based on combining the version agnostic identifier and a first version specific identifier associated with the first version of the data item, and

the second cache write request includes the second version of the data item and a second data item key generated based on combining the version agnostic identifier and a second version specific identifier associated with the second version of the data item.

18 . The computer-implemented method of claim 17 , further comprising:

receiving an active versions request from the first version of the platform application to retrieve a collection of version specific identifiers, wherein the collection of version specific identifiers includes the second version specific identifier and excludes the first version specific identifier.

19 . The computer-implemented method of claim 12 , wherein a version identifier identifying the first version of the data item comprises a version specific identifier received from a media player.

20 . The computer-implemented method of claim 12 , wherein the key component further comprises a user date-of-birth attribute and a user name attribute different from the username.

21 . A non-transitory computer-readable medium having instructions stored thereon that, when executed by at least one computing device, cause the at least one computing device to perform operations for providing uninterrupted service to a plurality of computing devices using a shared cache memory, comprising:

determining that a data item in the shared cache memory is shared by both a first computing device and a second computing device of the plurality of computing devices;

receiving a data item key corresponding to a request to update the data item from a user profile operating on a first computing device;

receiving a version identifier corresponding to a first version of a platform application operating on the first computing device;

determining that the shared cache memory includes a first value for the data item key corresponding to the first version of the platform application operating on the first computing device, and a second value for the data item key corresponding to a second version of the platform application operating on the second computing device, wherein both the first value for the data item key and the second value for the data item key include an identical version agnostic identifier comprising a username corresponding to the user profile, and a unique version specific identifier corresponding to which version of the platform application is being used, wherein both the version agnostic identifier and unique version specific identifier are used to access data from the shared cache memory, wherein the first value for the data item key corresponds to a login attribute for a user associated with the username;

generating a key component comprising the first version of the platform application operating on the first computing device appended to a user profile identifier corresponding to the user profile;

providing the key component to the shared cache memory;

receiving a first value of the data item as stored in the shared cache memory responsive to providing the key component to the shared cache memory;

receiving a cache update request for the first value of the data item, the cache update request including the key component and a new value for the data item;

updating the first value of the data item for a first version of the data item in the shared cache memory to the new value for the data item responsive to the cache update request, wherein a second value of the data item for a second version of the data item is unchanged in the shared cache memory by the updating; and

isolating the first version of the data item from the second version of the data item in the shared cache memory,

wherein the isolation of the first version of the data item from the second version of the data item in the shared cache memory enables a hardware update to the first computing device or the second computing device, or a software update to the platform application operating on the first computing device or the platform application operating on the second computing device in a rolling fashion, so that each of the first computing device, the second computing device, the platform application operating on the first computing device, and the platform application operating on the second computing device continue to concurrently operate and use the shared cache memory after said hardware or software update.

22 . The non-transitory computer-readable medium of claim 21 , wherein:

the first version of the data item is associated with the data item key for identifying the first version of the data item cached in the shared cache memory, and

the second version of the data item is associated with a second data item key for identifying the second version of the data item cached in the shared cache memory.

Assignments (2)
SECURITY INTEREST Recorded Sep 18, 2024
From: ROKU, INC.
To: CITIBANK, N.A.
Reel/Frame 068982/0377 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2024
From: ATARAS, BILL
To: ROKU, INC.
Reel/Frame 066763/0383 →
Continuity (4)
Continuation 18115856 · Mar 1, 2023
Continuation 16281885 · Feb 21, 2019
Continuation 14984292 · Dec 30, 2015
Related Publication 20240211404A1 · Jun 27, 2024
References Cited (33)
US 6216212B1 · Challenger et al. · 2001 [cited by applicant]
US 6510552B1 · Benayoun et al. · 2003 [cited by applicant]
US 6785769B1 · Jacobs · 2004 [cited by examiner]
US 6813690B1 · Lango et al. · 2004 [cited by applicant]
US 6918113B2 · Patel et al. · 2005 [cited by applicant]
US 7225208B2 · Midgley et al. · 2007 [cited by applicant]
US 7383289B2 · Kraft · 2008 [cited by applicant]
US 7523149B1 · Sridllaran et al. · 2009 [cited by applicant]
US 7644108B1 · Malmskog · 2010 [cited by applicant]
US 7739316B2 · Thompson et al. · 2010 [cited by applicant]
US 7792845B1 · Binns · 2010 [cited by applicant]
US 8131739B2 · Wu et al. · 2012 [cited by applicant]
US 8762980B1 · Sobel et al. · 2014 [cited by applicant]
US 9084105B2 · Luna et al. · 2015 [cited by applicant]
US 10229058B2 · Ataras · 2019 [cited by applicant]
US 11630775B2 · Ataras · 2023 [cited by applicant]
US 20040215714A1 · Dai · 2004 [cited by examiner]
US 20040255048A1 · Lev R an · 2004 [cited by applicant]
US 20060167956A1 · Chasen · 2006 [cited by examiner]
US 20090271472A1 · Scheifler · 2009 [cited by applicant]
US 20120173541A1 · Venkataramani · 2012 [cited by applicant]
US 20120203861A1 · Flack · 2012 [cited by examiner]
US 20140081652A1 · Klindworth · 2014 [cited by applicant]
US 20140215019A1 · Ahrens · 2014 [cited by examiner]
US 20150019676A1 · Fablet · 2015 [cited by examiner]
US 20150261622A1 · Vlachogiannis · 2015 [cited by examiner]
US 20150373191A1 · Shaw et al. · 2015 [cited by applicant]
US 20170192884A1 · Ataras · 2017 [cited by applicant]
US 20190188135A1 · Ataras · 2019 [cited by applicant]
US 20230205697A1 · Ataras · 2023 [cited by applicant]
International Search Report and Written Opinion of the International Searching Authority for International Application No. PCT/US2016/065625, mailed Feb. 21, 2017; 16 pages. [cited by applicant]
European Search Report directed to related European Application No. 16882282.3, mailed Jul. 25, 2019; 10 pages. [cited by applicant]
International Preliminary Report on Patentability directed to International Application No. PCT/US2016/065625, mailed Jul. 3, 2017; 11 pages. [cited by applicant]