# US 12,111,794 B2 · Replication barriers for dependent data transfers between data stores

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,111,794 B2
- Document ID: US12111794B2
- Status: Granted
- Kind: B2
- Application number: 16/702,333
- Filed: 2019-12-03
- Published: 2021-06-03
- Granted: 2024-10-08
- Earliest claimed: 2019-12-03
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Carl D'Halluin; Thomas Demoor
- Web page: https://patentgrep.com/patent/US12111794B2

## CPC

- G06F 16/1844: {Management specifically adapted to replicated file systems}
- G06F 16/1734: {Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs}
- G06F 16/1824: {implemented using Network-attached Storage [NAS] architecture (distributed or networked storage systems G06F3/067; protocols for distributed storage of data in a network H04L67/1097)}
- G06F 16/1858: {Parallel file systems, i.e. file systems supporting multiple processors}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 11/1443: {Transmit or communication errors}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Example distributed storage systems, replication managers, and methods provide replication barriers for dependent data transfers between data stores. An object data store may include a barrier object and be configured to identify dependencies between a dependency set of data objects and the barrier object. When replicating data objects to another data store, the dependency set of data objects may be transferred first, delaying the transfer of the barrier object while the dependency set is being transferred.

## Claims

### Claim 1

A system, comprising:
at least one processor;
at least one memory;
an operations log, stored in the at least one memory, configured to store a plurality of time-based log operation entries for completed storage operations targeting a first plurality of data objects in a first object data store, wherein the first plurality of data objects includes a dependency set of data objects;
a barrier engine, stored in the at least one memory for execution by the at least one processor, configured to:
identify, based on timestamps in the plurality of time-based log operation entries for the dependency set of data objects, a dependency between the dependency set of data objects and a barrier object in the first plurality of data objects;
identify the barrier object in the operations log; and
set, in a time-based operations log entry for the barrier object in the operations log, a barrier object identifier value; and
a replication manager, stored in the at least one memory for execution by the at least one processor, configured to transfer the first plurality of data objects from the first object data store to a second object data store by:
transferring the dependency set of data objects to the second object data store;
determining, responsive to the barrier object identifier value in the operations log, the barrier object;
delaying, while the replication manager is transferring the dependency set of data objects to the second object data store, the transfer of the barrier object to the second object data store; and
releasing the barrier object responsive to completion of transferring the dependency set of data objects, wherein the timestamps for the dependency set of data objects are earlier than a timestamp for the barrier object in the plurality of time-based log operation entries.

### Claim 2 (depends on 1)

The system of claim 1, wherein the replication manager is further configured to use a plurality of replication engines operating in parallel to transfer the first plurality of data objects.

### Claim 3 (depends on 2)

The system of claim 2, wherein:
at least one later data object from the plurality of data objects:
has a first time value later than a second time value of the barrier object; and
is not included in the dependency set of data objects; and
the plurality of replication engines is configured to transfer the at least one later data object before the barrier object.

### Claim 4 (depends on 1)

The system of claim 1, wherein the barrier object comprises a snapshot of the dependency set of data objects.

### Claim 5 (depends on 4)

The system of claim 4, wherein the barrier engine is further configured to generate the barrier object based on the dependency set of data objects.

### Claim 6 (depends on 1)

The system of claim 1, wherein:
the first object data store is further configured to include a plurality of dependency sets in the first plurality of data objects over an operating period;
the barrier engine is further configured to identify a plurality of barrier objects for the plurality of dependency sets at predetermined intervals during the operating period; and
the replication manager is further configured to transfer each dependency set of the plurality of dependency sets prior to transferring each corresponding barrier object of the plurality of barrier objects.

### Claim 7 (depends on 1)

The system of claim 1, wherein the barrier engine is further configured to receive a dependent object identifier for the barrier object from a client application.

### Claim 8 (depends on 1)

The system of claim 1, wherein the barrier engine is further configured to identify a dependent object identifier from metadata for the barrier object.

### Claim 9 (depends on 1)

The system of claim 1, wherein the barrier engine is further configured to:
remove, responsive to the replication manager completing transfer of the dependency set of data objects, the barrier object identifier value from the time-based operation log entry for the barrier object.

### Claim 10

A computer-implemented method, comprising:
storing a first plurality of data objects in a first object data store, wherein the first plurality of data objects includes a dependency set of data objects;
identifying, based on timestamps in time-based log operation entries for the dependency set of data objects, a dependency between the dependency set of data objects and a barrier object in the first plurality of data objects;
identifying the barrier object in an operations log, wherein the operations log stores a plurality of time-based log operation entries for completed storage operations targeting the first plurality of data objects in the first object data store;
setting, in a time-based operations log entry for the barrier object in the operations log, a barrier object identifier value; and
transferring the first plurality of data objects from the first object data store to a second object data store by:
transferring the dependency set of data objects to the second object data store;
determining, responsive to the barrier object identifier value in the operations log, the barrier object;
delaying, while transferring the dependency set of data objects to the second object data store, the transfer of the barrier object to the second object data store; and
releasing the barrier object responsive to completion of transferring the dependency set of data objects, wherein the timestamps for the dependency set of data objects are earlier than a timestamp for the barrier object in the time-based log operation entries.

### Claim 11 (depends on 10)

The computer-implemented method of claim 10, wherein transferring the dependency set of data objects to the second object data store includes using a plurality of replication engines operating in parallel to transfer the dependency set of data objects.

### Claim 12 (depends on 11)

The computer-implemented method of claim 11, wherein:
at least one later data object from the first plurality of data objects:
has a first time value later than a second time value of the barrier object; and
is not included in the dependency set of data objects; and
the plurality of replication engines transfers the at least one later data object before the barrier object.

### Claim 13 (depends on 10)

The computer-implemented method of claim 10, wherein the barrier object comprises a snapshot of the dependency set of data objects.

### Claim 14 (depends on 13)

The computer-implemented method of claim 13, further comprising:
generating the barrier object based on the dependency set of data objects.

### Claim 15 (depends on 10)

The computer-implemented method of claim 10, further comprising:
storing a plurality of dependency sets in the first data store over an operating period;
identifying a plurality of barrier objects for the plurality of dependency sets at predetermined intervals during the operating period; and
transferring each dependency set of the plurality of dependency sets prior to transferring each corresponding barrier object of the plurality of barrier objects.

### Claim 16 (depends on 10)

The computer-implemented method of claim 10, further comprising:
receiving a dependent object identifier for the barrier object from a client application.

### Claim 17 (depends on 10)

The computer-implemented method of claim 10, further comprising:
detecting a dependent object identifier from metadata for the barrier object.

### Claim 18 (depends on 10)

The computer-implemented method of claim 10, further comprising:
detecting a dependent object identifier from a data object name for the barrier object.

### Claim 19 (depends on 10)

The computer-implemented method of claim 10, further comprising:
removing, responsive to completing transfer of the dependency set of data objects, the barrier object identifier value from the time-based log operation entry for the barrier object.

### Claim 20

A system, comprising:
at least one processor;
at least one memory;
an operations log, stored in the at least one memory, configured to store a plurality of time-based log operation entries for completed storage operations targeting a plurality of data objects in a first object data store, wherein the plurality of data objects includes a dependency set of data objects;
means for identifying, based on timestamps in the plurality of time-based log operation entries for the dependency set of data objects, a dependency between the dependency set of data objects and a barrier object in the plurality of data objects;
means for identifying the barrier object in the operations log;
means for setting, in a time-based operations log entry for the barrier object in the operations log, a barrier object identifier value; and
means for transferring the plurality of data objects from the first object data store to a second object data store by:
transferring the dependency set of data objects to the second object data store;
determining, responsive to the barrier object identifier value in the operations log, the barrier object;
delaying, while transferring the dependency set of data objects to the second object data store, the transfer of the barrier object to the second object data store; and
releasing the barrier object responsive to completion of transferring the dependency set of data objects, wherein the timestamps for the dependency set of data objects are earlier than a timestamp for the barrier object in the plurality of time-based log operation entries.
