US 11,748,029 B2
Protecting writes to shared storage in a distributed search system
Ilan Ginzburg, Saint Pancrasse (FR); and Yonik Seeley, Branchburg, NJ (US)
Assigned to Salesforce, Inc., San Francisco, CA (US)
Filed by Salesforce, Inc., San Francisco, CA (US)
Filed on Jul. 26, 2019, as Appl. No. 16/523,512.
Prior Publication US 2021/0026561 A1, Jan. 28, 2021
Int. Cl. G06F 3/06 (2006.01); G06F 16/22 (2019.01); G06F 16/23 (2019.01)
CPC G06F 3/0659 (2013.01) [G06F 3/0604 (2013.01); G06F 3/067 (2013.01); G06F 16/2272 (2019.01); G06F 16/2379 (2019.01)] 19 Claims
OG exemplary drawing
 
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.