# US 11,442,900 B2 · Sharing resources among remote repositories utilizing a lock file in a shared file system or a node graph in a peer-to-peer system

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

- Number: US 11,442,900 B2
- Document ID: US11442900B2
- Status: Granted
- Kind: B2
- Application number: 16/288,480
- Filed: 2019-02-28
- Published: 2019-06-27
- Granted: 2022-09-13
- Earliest claimed: 2014-08-20
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Barry P. Gower; Larry R. Hamann; Andrew S. Myers; Seth R. Peterson; Davanum M. Srinivas; Donald R. Woods
- Web page: https://patentgrep.com/patent/US11442900B2

## CPC

- G06F 16/1774: {Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files}
- G06F 16/182: Distributed file systems
- G06F 16/951: Indexing; Web crawling techniques
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method, system and computer program product for sharing resources among remote repositories. In a shared file system, a resource identifier and metadata are created for a resource, where the resource identifier is stored in a lock file in a shared volume accessible by the remote repositories. The lock file is then released in response to distributing the associated resource to the remote repositories. Alternatively, in a peer-to-peer system, a request is received to create, read, update or delete a resource stored in a content repository. A resource name, a resource version and/or a resource fingerprint are received in connection with the request to create, read, update or delete the resource in the content repository. A determination is then made as to whether the received resource name, resource version and/or resource fingerprint matches the respective resource name, resource version and/or resource fingerprint stored in a node graph for the resource.

## Claims

### Claim 1

A computer program product for sharing resources among remote repositories, the computer program product comprising a computer readable storage medium having program code embodied therewith, the program code comprising the programming instructions for:
receiving a request to create, read, update or delete a resource in a content repository;
receiving one or more of a resource name, a resource version and a resource fingerprint in connection with said request to create, read, update or delete said resource in said content repository; and
determining if one or more of said received resource name, said received resource version and said received resource fingerprint match a respective one or more of a resource name, a resource version and a resource fingerprint stored in a node graph stored in a local repository, wherein said node graph comprises a hierarchical tree of nodes.

### Claim 2 (depends on 1)

The computer program product as recited in claim 1, wherein the program code further comprises the programming instructions for:
detecting a repository joining a collection of repositories; and
replicating said node graph for said repository joining said collection of repositories.

### Claim 3 (depends on 1)

The computer program product as recited in claim 1, wherein the program code further comprises the programming instructions for:
detecting a repository leaving a collection of repositories; and
deleting a copy of said node graph and associated resource in said leaving repository.

### Claim 4 (depends on 1)

The computer program product as recited in claim 1, wherein the program code further comprises the programming instructions for:
determining if said resource version in said node graph stored in said local repository matches a version of said resource in a copy of said node graph stored in said content repository in response to receiving a request to read said resource in said content repository by a consumer.

### Claim 5 (depends on 4)

The computer program product as recited in claim 4, wherein the program code further comprises the programming instructions for:
retrieving a latest version of said resource via a pluggable replication transport in response to said resource version in said node graph stored in said local repository not matching said version of said resource in said copy of said node graph stored in said content repository; and
returning said retrieved latest version of said resource to said consumer.

### Claim 6 (depends on 1)

The computer program product as recited in claim 1, wherein the program code further comprises the programming instructions for:
receiving a submission of a fingerprint for said resource from a producer of said resource in response to receiving a request to update said resource in said content repository; and
determining if said received fingerprint matches said resource fingerprint in said node graph stored in said local repository.

### Claim 7 (depends on 6)

The computer program product as recited in claim 6, wherein the program code further comprises the programming instructions for:
creating a node lock to generate a coordinated resource version;
updating said resource in said content repository and said node graph stored in both said local repository and said content repository;
releasing said node lock in response to updating said resource in said content repository and said node graph stored in both said local repository and said content repository; and
notifying other content repositories of said updating of said resource via a pluggable notification mechanism.

### Claim 8 (depends on 1)

The computer program product as recited in claim 1, wherein the program code further comprises the programming instructions for:
determining if said resource name exists in a node graph stored in said local repository in response to receiving a request to create said resource in said content repository.

### Claim 9 (depends on 8)

The computer program product as recited in claim 8, wherein the program code further comprises the programming instructions for:
creating a node lock to generate a coordinated resource version in response to said resource name not existing in said node graph stored in said local repository;
creating said resource in said content repository and a corresponding node graph in both said local repository and said content repository;
releasing said node lock in response to creating said resource in said content repository and said corresponding node graph in both said local repository and said content repository; and
notifying other content repositories of said creating of said resource via a pluggable notification mechanism.

### Claim 10 (depends on 1)

The computer program product as recited in claim 1, wherein the program code further comprises the programming instructions for:
determining if said resource name and said resource fingerprint match said resource name and said resource fingerprint in said node graph stored in said local repository in response to receiving a request to delete said resource in said content repository.

### Claim 11

A system, comprising:
a memory for storing a computer program for sharing resources among remote repositories; and
a processor connected to said memory, wherein said processor is configured to execute the program instructions of the computer program comprising:
receiving a request to create, read, update or delete a resource in a content repository;
receiving one or more of a resource name, a resource version and a resource fingerprint in connection with said request to create, read, update or delete said resource in said content repository; and
determining if one or more of said received resource name, said received resource version and said received resource fingerprint match a respective one or more of a resource name, a resource version and a resource fingerprint stored in a node graph stored in a local repository, wherein said node graph comprises a hierarchical tree of nodes.

### Claim 12 (depends on 11)

The system as recited in claim 11, wherein the program instructions of the computer program further comprise:
detecting a repository joining a collection of repositories; and
replicating said node graph for said repository joining said collection of repositories.

### Claim 13 (depends on 11)

The system as recited in claim 11, wherein the program instructions of the computer program further comprise:
detecting a repository leaving a collection of repositories; and
deleting a copy of said node graph and associated resource in said leaving repository.

### Claim 14 (depends on 11)

The system as recited in claim 11, wherein the program instructions of the computer program further comprise:
determining if said resource version in said node graph stored in said local repository matches a version of said resource in a copy of said node graph stored in said content repository in response to receiving a request to read said resource in said content repository by a consumer.

### Claim 15 (depends on 14)

The system as recited in claim 14, wherein the program instructions of the computer program further comprise:
retrieving a latest version of said resource via a pluggable replication transport in response to said resource version in said node graph stored in said local repository not matching said version of said resource in said copy of said node graph stored in said content repository; and
returning said retrieved latest version of said resource to said consumer.

### Claim 16 (depends on 11)

The system as recited in claim 11, wherein the program instructions of the computer program further comprise:
receiving a submission of a fingerprint for said resource from a producer of said resource in response to receiving a request to update said resource in said content repository; and
determining if said received fingerprint matches said resource fingerprint in said node graph stored in said local repository.

### Claim 17 (depends on 16)

The system as recited in claim 16, wherein the program instructions of the computer program further comprise:
creating a node lock to generate a coordinated resource version;
updating said resource in said content repository and said node graph stored in both said local repository and said content repository;
releasing said node lock in response to updating said resource in said content repository and said node graph stored in both said local repository and said content repository; and
notifying other content repositories of said updating of said resource via a pluggable notification mechanism.

### Claim 18 (depends on 11)

The system as recited in claim 11, wherein the program instructions of the computer program further comprise:
determining if said resource name exists in a node graph stored in said local repository in response to receiving a request to create said resource in said content repository.

### Claim 19 (depends on 18)

The system as recited in claim 18, wherein the program instructions of the computer program further comprise:
creating a node lock to generate a coordinated resource version in response to said resource name not existing in said node graph stored in said local repository;
creating said resource in said content repository and a corresponding node graph in both said local repository and said content repository;
releasing said node lock in response to creating said resource in said content repository and said corresponding node graph in both said local repository and said content repository; and
notifying other content repositories of said creating of said resource via a pluggable notification mechanism.

### Claim 20 (depends on 11)

The system as recited in claim 11, wherein the program instructions of the computer program further comprise:
determining if said resource name and said resource fingerprint match said resource name and said resource fingerprint in said node graph stored in said local repository in response to receiving a request to delete said resource in said content repository.
