IP Library Granted Patent US 11,960,363
Granted Patent B2
US 11,960,363 · App. 17/020,254 · Granted Apr 16, 2024

Write optimized, distributed, scalable indexing store

Inventors: Apurv Gupta (Bangalore, IN); Akshat Agarwal (Delhi, IN); Manvendra Singh Tomar (Bengaluru, IN); Anshu Avinash (Bengaluru, IN)
Assignee: Cohesity, Inc.
G06F11/1464G06F11/0772G06F11/1435G06F11/1451G06F11/1469
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,960,363
App. No.
17/020,254
Granted
Apr 16, 2024
Kind
B2
Abstract

A mechanism for storing indexing updates is described. A secondary storage system is configured to store a backup of a primary storage system. A plurality of different indexing updates of a data repository associated with the secondary storage system is received. An indexing update may include metadata and/or updates to the metadata for a data item in the backup. The indexing updates may be obtained from an indexing process. At least a portion of the indexing updates are sent for storage in an intermediate store. An indication to commit the indexing updates is received. In response, the indexing updates including the at least the portion of the indexing updates are requested to be committed. The indexing updates batched together into a batch to be committed to a metadata store.

Claims (58)

1. A method, comprising:

receiving a batch of a plurality of different indexing updates of a data repository associated with a secondary storage system configured to perform a backup of a primary storage system;

sending at least a first portion of the batch of the plurality of different indexing updates for storage, wherein the batch of the plurality of different indexing updates is associated with a session identifier, wherein the at least the first portion of the batch of the plurality of different indexing updates are stored in an intermediate store for temporary storage, wherein a metadata store manager commits the first portion of the batch of the plurality of different indexing updates from the intermediate store to a first data bucket of a metadata store in response to an occurrence of at least one commitment factor, wherein the at least one commitment factor is associated with a particular fraction of the intermediate store being full;

receiving a second portion of the batch of the plurality of different indexing updates;

sending the second portion of the batch of the plurality of different indexing updates for storage and a request to commit the second portion of the batch of the plurality of different indexing updates, wherein the metadata store manager determines that that the session identifier associated with the batch of the plurality of different indexing updates is invalid;

receiving from the metadata store manager an indication that the session identifier associated with the batch of the plurality of different indexing updates is invalid;

establishing a new communication session with the metadata store manager, wherein the new communication session is associated with a new session identifier; and

sending to the metadata store manager a request to commit the first portion and the second portion of the batch of the plurality of different indexing updates, wherein in response, the metadata store manager commits in a second data bucket of the metadata store the first portion and the second portion of the batch of the plurality of different indexing updates.

2. The method of claim 1 , wherein the request to commit the second portion of the plurality of different indexing updates is based on the session identifier associated with the batch.

3. The method of claim 2 , further comprising

in response to the indication, providing to an indexing client, a second indication that the commit of the second portion of the plurality of different indexing updates is not completed.

4. The method of claim 1 , wherein the sending the first portion of the batch of the plurality of indexing updates for storage further includes:

grouping the first portion of the batch of the plurality of different indexing updates into a group; and

sending the group for storage, wherein the group is stored in the intermediate store.

5. The method of claim 1 , further comprising associating at least the first portion of the batch of the plurality of different indexing updates corresponding to data items of a particular directory of the primary storage system with the first data bucket among a plurality of data buckets of the metadata store, the first data bucket corresponding to the particular directory.

6. The method of claim 5 , wherein associating at least the first portion of the batch of the plurality of different indexing updates with the first data bucket includes associating at least the first portion of the batch of the plurality of different indexing updates with a key corresponding to the first data bucket.

7. The method of claim 1 , further comprising determining a key for each of the plurality of different indexing updates based on a filename path of a corresponding primary storage system file of the corresponding indexing update.

8. The method of claim 7 , wherein the key for each of the plurality of different indexing updates is configured to allow viewing at the metadata store of a filename of the corresponding primary storage system file of the corresponding indexing update.

9. The method of claim 1 , further comprising receiving from an indexing client at a metadata store client, the indication to perform the commit of the second portion of the plurality of different indexing updates,

wherein the receiving the batch of the plurality of different indexing updates includes receiving the batch of the plurality of different indexing updates from the indexing client at the metadata store client,

wherein the sending the at least the first portion of the batch of the plurality of different indexing updates further includes sending the at least the first portion from the metadata store client to the metadata store manager, and

wherein the sending the request to commit the second portion of the plurality of different indexing updates further includes the metadata store client sending a request to commit to the metadata store manager.

10. The method of claim 1 , wherein the request to commit the second portion of the plurality of different indexing updates further includes requesting replication of at least the second portion of the plurality of different indexing updates to multiple locations of the metadata store.

11. The method of claim 1 , wherein the commitment factor further includes a particular time interval expiring.

12. A system, comprising:

a hardware processor configured to:

receive a batch of a plurality of different indexing updates of a data repository associated with a secondary storage system configured to perform a backup of a primary storage system;

send at least a first portion of the batch of the plurality of different indexing updates for storage, wherein the batch of the plurality of different indexing updates is associated with a session identifier, wherein the at least the first portion of the batch of the plurality of different indexing updates are stored in an intermediate store for temporary storage wherein a metadata store manager commits the first portion of the batch of the plurality of different indexing updates from the intermediate store to a first data bucket of a metadata store in response to an occurrence of at least one commitment factor, wherein the at least one commitment factor is associated with a particular fraction of the intermediate store being full;

receive a second portion of the batch of the plurality of different indexing updates;

send the second portion of the batch of the plurality of different indexing updates for storage and a request to commit the second portion of the plurality of different indexing updates, wherein the metadata store manager determines that that the session identifier associated with the batch of the plurality of different indexing updates is invalid;

receive from the metadata store manager an indication that the session identifier associated with the batch of the plurality of different indexing updates is invalid;

establish a new communication session with the metadata store manager, wherein the new communication session is associated with a new session identifier; and

send to the metadata store manager a request to commit the first portion and the second portion of the batch of the plurality of different indexing updates, wherein in response, the metadata store manager commits in a second data bucket of the metadata store the first portion and the second portion of the batch of the plurality of different indexing updates; and

a memory coupled to the hardware processor and configured to provide the hardware processor with instructions.

13. The system of claim 12 , wherein the request to commit the second portion of the plurality of different indexing updates is based on the session identifier associated with the batch.

14. The system of claim 13 , wherein the hardware processor is further configured to

in response to the indication, provide to an indexing client a second indication that the commit is not completed.

15. The system of claim 12 , wherein to send the at least the first portion of the batch of the plurality of indexing updates for storage the hardware processor is further configured to:

group the first portion of the batch of the plurality of different indexing updates into a group; and

send the group for storage, wherein the group is stored in the intermediate store.

16. The system of claim 12 , wherein the hardware processor is further configured to associate at least the first portion of the batch of the plurality of different indexing updates corresponding to data items of a particular directory of the primary storage system with the first data bucket among a plurality of data buckets of the metadata store, the first data bucket corresponding to the particular directory.

17. The system of claim 16 , wherein the hardware processor is configured to associate the at least the first portion of the batch of the plurality of different indexing updates with the first data bucket by being configured to associate the at least the first portion of the batch of the plurality of different indexing updates with a key corresponding to the first data bucket.

18. The system of claim 12 , wherein the hardware processor is further configured to determine a key for each of the plurality of different indexing updates based on a filename path of a corresponding primary storage system file of the corresponding indexing update.

19. The system of claim 18 , wherein the key for each of the plurality of different indexing updates is configured to allow viewing at the metadata store of a filename of the primary storage system file corresponding to the each of the plurality of different indexing updates.

20. The system of claim 12 , wherein to receive the batch of the plurality of different indexing updates the hardware processor is further configured to receive the batch of the plurality of different indexing updates from an indexing client at a metadata store client,

wherein to send the at least the first portion of the batch of the plurality of different indexing updates the hardware processor is further configured to send the at least the first portion from the metadata store client to the metadata store manager,

wherein to receive the indication to perform the commit the hardware processor is further configured to receive the indication to perform the commit from an indexing client at the metadata store client, and

wherein to send the request the commit the second portion of the plurality of different indexing updates, the hardware processor is further configured to send the request to commit from the metadata store client to the metadata store manager.

21. The system of claim 12 , wherein to request the commit of the second portion of the plurality of different indexing updates, the hardware processor is configured to:

request replication of at least the second portion of the plurality of different indexing updates to multiple locations of the metadata store.

22. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving a batch of a plurality of different indexing updates of a data repository associated with a secondary storage system configured to perform a backup of a primary storage system;

sending at least a first portion of the batch of the plurality of different indexing updates for storage, wherein the batch of the plurality of different indexing updates is associated with a session identifier, wherein the at least the first portion of the batch of the plurality of different indexing updates are stored in an intermediate store for temporary storage, wherein a metadata store manager commits the first portion of the batch of the plurality of different indexing updates from the intermediate store to a first data bucket of a metadata store in response to an occurrence of at least one commitment factor, wherein the at least one commitment factor is associated with a particular fraction of the intermediate store being full;

receiving a second portion of the batch of the plurality of different indexing updates;

sending the second portion of the batch of the plurality of different indexing updates for storage and a request to a commit the second portion of the plurality of different indexing updates, wherein the metadata store manager determines that the session identifier associated with the batch of the plurality of different indexing updates is invalid;

receiving from the metadata store manager an indication that the session identifier associated with the batch of the plurality of different indexing updates is invalid;

establishing a new communication session with the metadata store manager, wherein the new communication session is associated with a new session identifier; and

sending to the metadata store manager a request to commit the first portion and the second portion of the batch of the plurality of different indexing updates, wherein in response, the metadata store manager commits in a second data bucket of the metadata store the first portion and the second portion of the batch of the plurality of different indexing updates.

Assignments (4)
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Dec 10, 2024
From: FIRST-CITIZENS BANK & TRUST COMPANY (AS SUCCESSOR TO SILICON VALLEY BANK)
To: COHESITY, INC.
Reel/Frame 069584/0498 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
SECURITY INTEREST Recorded Sep 23, 2022
From: COHESITY, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 061509/0818 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 19, 2020
From: GUPTA, APURV; AGARWAL, AKSHAT; TOMAR, MANVENDRA SINGH; AVINASH, ANSHU
To: COHESITY, INC.
Reel/Frame 054484/0421 →
Continuity (2)
Provisional Application 62904561 · Sep 23, 2019
Related Publication 20210089407A1 · Mar 25, 2021
Cited By (1)
US 12,688,176