IP Library Granted Patent US 11,748,029
Granted Patent B2
US 11,748,029 · App. 16/523,512 · Granted Sep 5, 2023

Protecting writes to shared storage in a distributed search system

Inventors: Ilan Ginzburg (Saint Pancrasse, FR); Yonik Seeley (Branchburg, NJ)
Assignee: Salesforce, Inc.
G06F3/0659G06F3/0604G06F3/067G06F16/2272G06F16/2379
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,748,029
App. No.
16/523,512
Granted
Sep 5, 2023
Kind
B2
Abstract

System and methods are described for a server computing node including a processing device and a memory device. The processing device executes instructions stored in the memory device to receive a request to update a data object in a shared storage of a distributed computing system; get a current version identifier (ID) of the data object; get the data object identified by the current version ID from the shared storage; update the data object; write the updated data object to shared storage using a unique new version ID; and cause the conditional update of the current version ID of the data object to the new version ID.

Claims (54)

1. A server computing node, comprising:

a processor; and

a memory coupled to the processor, the memory having instructions stored thereon that, in response to execution by the processor, cause the processor to:

process, by a first node of a plurality of nodes that are part of a current quorum that determines which node of the plurality of nodes becomes an elected leader node, a request to update a first data object in a shared storage of a distributed computing system, the request being received from a computing device, wherein the first node is considered as a first leader node within the distributed computing system and a second node of the plurality of nodes is a second leader node within the distributed computing system, wherein the first leader node was previously elected as a current leader node and the second leader node is elected as the current leader node, wherein the first leader node and the second leader node control writes to data within the distributed computing system;

obtain, by the first leader node, a current version identifier (ID) of the first data object from a coordinator;

obtain, by the first leader node, the first data object identified by the current version ID from the shared storage;

update by the first leader node, responsive to the request, a local copy of the first data object such that an updated local copy of the first data object is generated;

write, by the first leader node, the updated local copy of the first data object to the shared storage using a new version ID such that the shared storage includes two versions of the first data object, the two versions including the first data object and a second data object having the new version ID; and

responsive to determining that no other update to the first data object in the shared storage has taken place since the current version ID has been obtained, cause, by the first leader node, a conditional update of the current version ID of the first data object, maintained by the coordinator, to the new version ID.

2. The server computing node of claim 1 , the memory having instructions stored thereon that, in response to execution by the processor, further cause the processor to:

determine the current version ID of the first data object by obtaining the current version ID of the first data object from a coordinator;

wherein causing the conditional update of the current version ID of the first data object includes instructing the coordinator to perform the conditional update.

3. The server computing node of claim 1 , the memory having instructions stored thereon that, in response to execution by the processor, further cause the processor to:

obtain a current internal coordinator generation value associated with the current version ID; and

conditionally update the current version ID of the first data object to the new version ID if an internal coordinator generation value stored in association with the current version ID matches the current internal coordinator generation value.

4. The server computing node of claim 2 , the memory having instructions stored thereon that, in response to execution by the processor, further cause the processor to:

if a version ID of the first data object stored in a database is equal to the current version ID, updating the version ID stored in the database with the new version ID.

5. The server computing node of claim 1 , the computing device being an application server of the distributed computing system.

6. The server computing node of claim 1 , wherein the updated local copy of the first data object stored in the shared storage includes a catalog of other data objects stored in the shared storage that defines a current state of a search index.

7. A computer-implemented method of operating a server computing node of a plurality of server computing nodes comprising:

processing, by the server computing node of the plurality of server computing nodes that are part of a current quorum that determines which server computing node of the plurality of server computing nodes becomes an elected leader node, a request to update a first data object in a shared storage of a distributed computing system, the request being received from a computing device, wherein the server computing node is considered as a first leader node within the distributed computing system and a second node is a second leader node within the distributed computing system, wherein the first leader node was previously elected as a current leader node and the second leader node is elected as the current leader node, wherein the first leader node and the second leader node control writes to data within the distributed computing system;

obtaining, by the first leader node, a current version identifier (ID) of the first data object from a coordinator;

obtaining, by the first leader node, the first data object identified by the current version ID from the shared storage;

updating by the first leader node, responsive to the request, a local copy of the first data object such that an updated local copy of the first data object is generated;

writing, by the first leader node, the updated local copy of the first data object to the shared storage using a new version ID such that the shared storage includes two versions of the first data object, the two versions including the first data object and a second data object having the new version ID; and

responsive to determining that no other update to the first data object in the shared storage has taken place since the current version ID has been obtained, causing, by the first leader node, a conditional update of the current version ID of the first data object, maintained by the coordinator, to the new version ID.

8. The computer-implemented method of claim 7 , further comprising:

determining the current version ID of the first data object by obtaining the current version ID of the first data object from a coordinator;

wherein causing the conditional update of the current version ID of the first data object includes instructing the coordinator to perform the conditional update.

9. The computer-implemented method of claim 8 , further comprising:

obtaining a current internal coordinator generation value associated with the current version ID; and

conditionally update the current version ID of the first data object to the new version ID if an internal coordinator generation value stored in association with the current version ID matches the current internal coordinator generation value.

10. The computer-implemented method of claim 8 , further comprising:

if a version ID of the first data object stored in a database is equal to the current version ID, updating the version ID stored in the database with the new version ID.

11. The computer-implemented method of claim 7 , wherein the updated local copy of the first data object stored in the shared storage includes a catalog of other data objects stored in the shared storage that defines a current state of a search index.

12. A computer program product comprising computer-readable program code capable of being executed by one or more processors when retrieved from a non-transitory computer-readable medium, the program code comprising computer-readable instructions configurable to cause:

processing, by a server computing node of a plurality of server computing nodes that are part of a current quorum that determines which server computing node of the plurality of server computing nodes becomes an elected leader node, a request to update a first data object in a shared storage of a distributed computing system, the request being received from a computing device, wherein the server computing node is considered as a first leader node within the distributed computing system and a second node is a second leader node within the distributed computing system, wherein the first leader node was previously elected as a current leader node and the second leader node is elected as the current leader node, wherein the first leader node and the second leader node control writes to data within the distributed computing system;

obtaining, by the first leader node, a current version identifier (ID) of the first data object from a coordinator;

obtaining, by the first leader node, the first data object identified by the current version ID from the shared storage;

updating by the first leader node, responsive to the request, a local copy of the first data object such that an updated local copy of the first data object is generated;

writing, by the first leader node, the updated local copy of the first data object to the shared storage using a new version ID such that the shared storage includes two versions of the first data object, the two versions including the first data object and a second data object having the new version ID; and

responsive to determining that no other update to the first data object in the shared storage has taken place since the current version ID has been obtained, causing, by the first leader node, a conditional update of the current version ID of the first data object, maintained by the coordinator, to the new version ID.

13. The computer program product of claim 12 , the program code further comprising computer-readable instructions configurable to cause:

determining the current version ID of the first data object by obtaining the current version ID of the first data object from a coordinator;

wherein causing the conditional update of the current version ID of the first data object includes instructing the coordinator to perform the conditional update.

14. The computer program product of claim 13 , the program code further comprising computer-readable instructions configurable to cause:

obtaining a current internal coordinator generation value associated with the current version ID; and

conditionally updating the current version ID of the first data object to the new version ID if an internal coordinator generation value stored in association with the current version ID matches the current internal coordinator generation value.

15. The computer program product of claim 13 , the program code further comprising computer-readable instructions configurable to cause:

if a version ID of the first data object stored in a database is equal to the current version ID, updating the version ID stored in the database with the new version ID.

16. The computer program product of claim 12 , wherein the updated local copy of the first data object stored in the shared storage includes a catalog of other data objects stored in the shared storage that defines a current state of a search index.

17. The computer-implemented method of claim 7 , wherein data objects are not deleted by the node from the shared storage.

18. The computer-implemented method of claim 7 , wherein the data object is not deleted by the node from the shared storage after writing the updated local copy of the first data object to shared storage.

19. The computer-implemented method of claim 7 , wherein the server computing node not being the current leader node.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0427 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2019
From: GINZBURG, ILAN; SEELEY, YONIK
To: SALESFORCE.COM, INC.
Reel/Frame 050003/0843 →
Continuity (1)
Related Publication 20210026561A1 · Jan 28, 2021