Atomic moves with lamport clocks in a content management system
First Claim
1. A method comprising:
- obtaining, via a content management system, a set of operations associated with a user account on the content management system, the set of operations comprising a request to move a content item from a source namespace to a destination namespace;
processing, via the content management system, an incoming move operation at the destination namespace and an outgoing move operation at the source namespace;
processing a delete operation and an add operation for the content item, the delete operation being processed at the source namespace and the add operation being processed at the destination namespace;
assigning a first lamport clock value to the incoming move operation and a second lamport clock value to the outgoing move operation, wherein the first lamport clock value is lower than the second lamport clock value;
assigning a third lamport clock value to the delete operation and a fourth lamport clock value to the add operation, wherein the third lamport clock value is higher than the second lamport clock value and lower than the fourth lamport clock value; and
serializing the incoming move operation, the outgoing move operation, the delete operation, and the add operation based on the first lamport clock value, the second lamport clock value, the third lamport clock value, and the fourth lamport clock value.
2 Assignments
0 Petitions
Accused Products
Abstract
A system can serialize moves and mounts across namespaces based on lamport clocks. In some examples, the system obtains a request to move a content item from a source namespace to a destination namespace. The system processes an incoming move at the destination and an outgoing move at the source. The system processes for the content item a delete at the source and an add at the destination. The system assigns a first clock to the incoming move and a second clock to the outgoing move, the first clock being lower than the second clock. The system assigns a third clock to the delete and a fourth clock to the add, the third clock being higher than the second clock and lower than the fourth clock. The system serializes the incoming and outgoing moves, the delete and the add based on the first, second, third and fourth clocks.
278 Citations
20 Claims
-
1. A method comprising:
-
obtaining, via a content management system, a set of operations associated with a user account on the content management system, the set of operations comprising a request to move a content item from a source namespace to a destination namespace; processing, via the content management system, an incoming move operation at the destination namespace and an outgoing move operation at the source namespace; processing a delete operation and an add operation for the content item, the delete operation being processed at the source namespace and the add operation being processed at the destination namespace; assigning a first lamport clock value to the incoming move operation and a second lamport clock value to the outgoing move operation, wherein the first lamport clock value is lower than the second lamport clock value; assigning a third lamport clock value to the delete operation and a fourth lamport clock value to the add operation, wherein the third lamport clock value is higher than the second lamport clock value and lower than the fourth lamport clock value; and serializing the incoming move operation, the outgoing move operation, the delete operation, and the add operation based on the first lamport clock value, the second lamport clock value, the third lamport clock value, and the fourth lamport clock value. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A non-transitory computer readable medium comprising instructions, the instructions, when executed by one or more processors, cause a content management system to:
-
detect a mount operation associated with a user account on the content management system, the mount operation mounting a namespace for the user account at a first path; identify a prior mount operation that mounts the namespace for the user account at a second path; determine that the mount operation and the prior mount operation create two paths to the namespace for the user account; identify an unmount operation for unmounting the namespace from the second path; assign a first lamport clock to the unmount operation, the first lamport clock being higher than a respective lamport clock associated with the prior mount operation; increment the first lamport clock to yield a second lamport clock; and assign the second lamport clock to the mount operation. - View Dependent Claims (12, 13, 14)
-
-
15. A content management system comprising:
-
one or more processors; and at least one non-transitory computer readable medium having stored therein instructions which, when executed by the one or more processors, cause the content management system to; obtain a set of operations associated with a user account on the content management system, the set of operations comprising a request to move a content item from a source namespace to a destination namespace; process an incoming move operation at the destination namespace and an outgoing move operation at the source namespace; process a delete operation and an add operation for the content item, the delete operation being processed at the source namespace and the add operation being processed at the destination namespace; assign a first lamport clock value to the incoming move operation and a second lamport clock value to the outgoing move operation, wherein the first lamport clock value is lower than the second lamport clock value; assign a third lamport clock value to the delete operation and a fourth lamport clock value to the add operation, wherein the third lamport clock value is higher than the second lamport clock value and lower than the fourth lamport clock value; and serialize the incoming move operation, the outgoing move operation, the delete operation, and the add operation based on the first lamport clock value, the second lamport clock value, the third lamport clock value, and the fourth lamport clock value. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification