BACKGROUND OF THE DISCLOSURE

On-demand content collaboration tools provide the ability for users to manipulate a shared resource on-demand and also keep content and metadata synchronized (i.e., “synced”) with a server computer. This means that whenever a user performs an action on a personal computer, the action needs to be pushed to and synchronized with the server computer. For example, in a cloud environment, file system actions on an MS Windows® client such as create, delete, move, rename, update, etc., need to be synced with the cloud platform in a time sensitive manner.

BRIEF DESCRIPTION OF THE DISCLOSURE

Aspects of this disclosure provide a system, method and program product for synchronizing actions taken with respect to shared resources in a collaborative environment. In one example, file system related actions taken on one or more client devices are synchronized with a cloud computing system using a polytree queue.

A first aspect of the disclosure provides a system having a memory and a processor coupled to the memory. The processor is configured to receive data from a plurality of client devices, in which the data is indicative of at least one action associated with a shared resource accessible by the plurality of client devices. The processor is further configured to insert a plurality of actions as nodes into a polytree queue, wherein actions that do not depend on other actions in the polytree queue are inserted as root level nodes, and actions that depend on other actions in the polytree queue are inserted as child nodes. In addition, the processor is configured to execute the nodes in the polytree queue to synchronize the data from the plurality of client devices with the shared resource, wherein root level nodes are scheduled for immediate concurrent execution, and execution of child nodes is delayed until parent nodes of an associated child node are executed.

A second aspect of the disclosure provides a method that includes receiving data from a client device, the data being indicative of actions associated with a shared resource accessible by a plurality of client devices. The method further includes inserting the actions as nodes into a polytree queue, wherein actions that do not depend on other actions in the polytree queue are inserted as root level nodes, and actions that depend on other actions in the polytree queue are inserted as child nodes. The method also includes executing nodes in the polytree queue to synchronize data from the client device with the shared resource, wherein root level nodes are scheduled for immediate concurrent execution, and execution of child nodes is delayed until parent nodes of an associated child node are executed.

A third aspect of the disclosure provides a computer program product stored on a computer readable medium, which when executed by a processor, synchronizes client device data. The program product includes program code for receiving data from a client device, the data being indicative of actions associated with a shared resource accessible by a plurality of client devices. Also included is program code for inserting the actions as nodes into a polytree queue, wherein actions that do not depend on other actions in the polytree queue are inserted as root level nodes, and actions that depend on other actions in the polytree queue are inserted as child nodes. Further included is program code for executing nodes in the polytree queue to synchronize the client device with the shared resource, wherein root level nodes are scheduled for immediate concurrent execution, and execution of child nodes is delayed until parent nodes of an associated child node are executed.

The illustrative aspects of the present disclosure are designed to solve the problems herein described and/or other problems not discussed.

