Long upload time detection and management

By designing a content management system, receiving and analyzing synchronous content messages from client devices, detecting atypical synchronization conditions and reminding users, the problem of synchronous status management of content items in cloud storage services is solved and the risk of data loss is reduced.

CN112424764BActive Publication Date: 2025-05-06MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN201980047250.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-07-16
Filing Date
2019-06-18
Publication Date
2025-05-06
Estimated Expiration
2039-06-18

AI Technical Summary

Technical Problem

Existing cloud storage services are difficult to effectively manage synchronization status during the content item synchronization process, resulting in users misjudgment of content items being synchronized, increasing the risk of data loss.

Method used

A content management system is designed to detect atypical synchronization conditions by receiving synchronous content messages from client devices, and transmit synchronization status messages to client devices to remind users of potential synchronization extensions.

Benefits of technology

The system can effectively manage users' awareness of synchronization status, reduce the risk of data loss, and ensure that users can take timely measures to complete synchronization operations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN112424764B_ABST
    Figure CN112424764B_ABST
Patent Text Reader

Abstract

A system and method for detecting and managing atypical synchronization sessions for electronic content. The system is configured to determine whether a pending or ongoing synchronization session between a client device and a cloud storage service is associated with a condition that will delay the synchronization process. The proposed system and method can significantly improve the ability to protect its documents and reduce the possibility of data loss.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Cloud storage accounts allow users to store their electronic content items or files in an online storage account that can be accessed from any computing device with a network connection. Some of the better known examples of cloud storage service providers include Microsoft Google and Through these types of services, users can upload content items (such as pictures, songs, documents, and other electronic content) from a computing device to an online storage account. These items can then be accessed from different computing devices. In some cases (such as Microsoft's ), the service provides the means to store, synchronize and share various file types with other people and across multiple computing devices, as well as the possibility to synchronize system settings, visual customizations, themes, application settings and browser tabs, history and saved passwords across different devices.

[0002] Once content has been stored in an online storage account, the user can access its content items. However, it is time-consuming to synchronize the content items themselves. As an example, the user may store or add many content items to the client device on the client device, which may require extra time to synchronize. Conventional content item synchronization methods are designed to queue up the content items, and then synchronize them once. Usually, a queue is formed based on a simple directory search to identify unsynchronized content items. Unfortunately, in many cases, the user may not know the synchronization state of its content items, and mistakenly assumes that the items still in the queue have been uploaded and protected online. Therefore, it remains an important field to reduce data loss and provide users with new and improved ideas for improving the tool for such upload management. Summary of the invention

[0003] According to a first aspect of the present disclosure, a content management system includes: one or more processors; and one or more computer-readable media including instructions, wherein when the instructions are executed by the one or more processors, the one or more processors are caused to: receive at least a first synchronization content message from a client device via a communication network, wherein the first synchronization content message can be configured to convey the synchronization progress of a first synchronization content set including at least a first electronic content item. The first synchronization content message includes information about the amount of data remaining to be synchronized. The instructions also cause the one or more processors to determine that the synchronization of the first synchronization content set has a possibility of being extended, and the determination is based at least in part on the detection of an atypical synchronization condition associated with the information of the first synchronization content message. In addition, the instructions cause the one or more processors to: transmit a first message to a client device via a communication network, wherein the first message indicates that the synchronization of the first synchronization content set has a possibility of being extended.

[0004] According to a second aspect of the present disclosure, a content management system includes: a synchronization content set tracking module, which is configured to receive at least a first synchronization content message from a client device through a communication network, wherein the first synchronization content message can be configured to convey the synchronization progress of a first synchronization content set including at least one electronic content item, wherein the first synchronization content message includes information about the amount of data remaining to be synchronized. The system also includes a synchronization status manager, which is configured to: determine that the synchronization of the first synchronization content set has a possibility of being extended, the determination is based at least in part on the detection of an atypical synchronization status associated with the information of the first synchronization content message; and transmit a synchronization status message to the client device through the communication network, wherein the synchronization status message indicates that the synchronization of the first synchronization content set has a possibility of being extended.

[0005] According to a third aspect of the present disclosure, a method includes: receiving at least a first synchronization content message from a client device via a communication network, wherein the first synchronization content message can be configured to convey the synchronization progress of a first synchronization content set including at least a first electronic content item. The first synchronization content message includes information about the amount of data remaining to be synchronized. In addition, the method includes: determining that the synchronization of the first synchronization content set has a possibility of being extended, and the determination is at least partially based on the detection of an atypical synchronization condition associated with the information of the first synchronization content message. In addition, the method includes: transmitting a first message to the client device via the communication network, wherein the first message indicates that the synchronization of the first synchronization content set has a possibility of being extended.

[0006] This summary is provided to introduce some concepts in a simplified form, which are further described in the detailed description below. This summary is neither intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that address any or all of the disadvantages noted in any part of this disclosure. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] The accompanying drawings depict one or more implementations according to the present teachings by way of example only and not limitation. In the accompanying drawings, like reference numerals refer to the same or similar elements. In addition, it should be understood that the accompanying drawings are not necessarily drawn to scale.

[0008] Figure 1A is a conceptual illustration of how a content synchronization environment may be implemented, and Figure 1B is a conceptual diagram depicting an example of a content management system architecture;

[0009] Figure 2 is a schematic illustration of an implementation of a message conveying characteristics of a synchronized content set;

[0010] Figure 3 is a schematic illustration of an implementation of transmitting a message from a client device to a cloud storage service;

[0011] Figure 4A and Figure 4B is a conceptual diagram illustrating an implementation of a distributed computing environment for managing content synchronization;

[0012] Figure 5 is a representation of a device display having an implementation for synchronizing a client application and a client file directory;

[0013] Figure 6 is a representation of a device display having an implementation of a synchronization client application and a progress panel;

[0014] Figure 7 is a flow chart illustrating an implementation of a method for detecting an atypical synchronization event;

[0015] Figure 8 is a representation of a device display having an implementation of a notification of an atypical synchronization condition;

[0016] Fig. 9A and Fig. 9B is a sequence depicting an example of a response to the detection of an atypical synchronization condition;

[0017] Fig.10 is a flow chart illustrating an implementation of a process for detecting an atypical synchronization condition;

[0018] Fig.11 is a block diagram of an exemplary computing device that may be used to provide implementations of the mechanisms described herein; and

[0019] Fig.12 is a block diagram illustrating components of an exemplary machine configured to read instructions from a machine-readable medium. DETAILED DESCRIPTION

[0020] In the detailed description below, many specific details are set forth by way of example in order to provide a thorough understanding of the relevant teachings. However, it should be apparent that the present teachings can be practiced without such details. In other cases, in order to avoid unnecessarily obscuring various aspects of the present teachings, known methods, processes, components and / or circuits have been described at a relatively high level without details.

[0021] The following description discloses a system and method for managing electronic content items that are queued for synchronization between a content management system and a client device and that may be associated with a delayed, extended, or otherwise longer-than-normal upload or download process. The system is configured to receive information about the electronic content items and determine whether synchronization will require a longer-than-normal synchronization session. After such a determination, a notification can be sent to the client device to alert the user that an extended upload or download time may be required to complete synchronization of the electronic content item with a cloud server. Such proactive notifications by the content management system can warn the user of potential data loss conditions and help minimize the possibility of incomplete synchronization sessions.

[0022] For the purpose of this description, content management system (CMS) refers to a system by which a user can store content items and perform various content management tasks (such as retrieving, modifying, browsing and / or sharing content items) and enable a user to access the content from multiple client devices. Typically, a user can interact with CMS by one or more client devices connected to a network. CMS can support connections from various client devices, such as desktop computers, mobile computers, mobile communication devices (such as mobile phones, smart phones, tablet computers, etc.), smart TVs, gaming devices, set-top boxes and / or any other network-supported computing devices. CMS can be configured to accept connections from multiple client devices and interact with them simultaneously. Typically, a user interacts with a client-side application installed on a client device or via a third-party application (such as a web browser application), and is configured to communicate with CMS.

[0023] For the purpose of this application, the term "electronic content item" or "content item" includes any digital data that can be presented (e.g., visually or audibly), including but not limited to: electronic documents, media streams, web pages, hypertext documents, images, digital video or video recordings, digital audio or audio recordings, animations, digital messages, markup language documents (such as hypertext markup language (HTML) or extensible markup language (XML) documents), tables with blank components to accept input data, or data describing the application of a GUI and other digital data. In addition, "items" used in this article can include any folders, files, directories, or data objects on an electronic device. As an example, an item can refer to a directory "folder", which can include documents, photos, music files, and video files.

[0024] Additionally, the terms "software application," "software," or "application" refer to a computer program that performs useful work, typically unrelated to the computer itself. Some non-limiting examples of software applications include: word processors, spreadsheets, accounting systems, and telecommunication programs, as well as gaming software, utility and productivity tools, mobile applications, presentation graphics, and other productivity software. These are non-limiting examples, and any other electronic content editing or collaboration application may benefit from the disclosed implementations. Therefore, specific references to software applications by name throughout the specification should not be construed as limiting the use of the proposed systems and methods.

[0025] In addition, "synchronization" refers to uploading content items from a client device to a CMS via a communication network, or alternatively downloading content items from a content management system to a client device via a communication network, so that content is synchronized on both the client device and the content management system. It should be understood that, for simplicity, the examples described in this article will present situations where uploading occurs. However, all references to "upload" and examples of synchronization based on uploading proposed in the following description should be understood to also cover situations where synchronization events involve downloading electronic content. For example, a client device can be configured to synchronize content items stored on a client device with an associated account on the CMS by uploading content items stored on the client device to a linked content management system. The client device can also be configured to synchronize content items by downloading content items stored on a linked content management system to a client device.

[0026] In some cases, the time spent on an upload (or download) may be longer than expected. This may occur for a variety of reasons, such as slow network or processor speeds, excessive or "bulky" content item size, interruptions during upload, network connection problems, software incompatibility, authorization or authentication issues, and other such obstacles. Current service providers do not provide a means to determine whether a particular segment or item in a client upload session is taking longer than normally expected. Instead, the services typically engage in uploads as individual transactions without the broader context of the size of each or all files to be synchronized in a pending session.

[0027] End users may be unaware of these potential complexities and subsequently take steps that render the user's content items vulnerable to attack. Although the user mistakenly believes that their content items are securely backed up, they may engage in behavior that may result in data loss. As a result, users of electronic devices may experience reduced functionality and / or problems in synchronizing the latest and / or correct version of data from online storage systems. As will be discussed below, it is therefore very important to provide users with mechanisms for preventing such data loss and access to information that allow users to remain aware of synchronization status in real time.

[0028] In order to better introduce the system and method to readers, Figure 1A A method for implementing an electronic content synchronization management system (in Figure 4A and Figure 4B 1. A high-level example of a representative computing environment ("environment") 150 (schematically illustrated in FIG. 1 ). In various implementations, environment 150 can include one or more computing device end users, or simply "users." One or more users can interact with or manipulate data presented via a user device. Figure 1A and Figure 1B The various features and activities illustrated in the drawings are given further details and examples in conjunction with the following figures.

[0029] As an example, in Figure 1A 1 shows a first user 110. In this case, the first user 110 is accessing a sync client application ("sync client") 100 on a first device 120. The first device 120 may be a personal computer, such as a desktop or laptop computer, a mobile device, or any other computer system with a file system. The first device 120 executes a program such as Microsoft Mac or other operating systems, and includes memory, storage, network interfaces, and Figure 1AOther computer hardware is not shown for clarity. The first device 120, via its operating system, creates, modifies, and / or deletes files on its storage system with the modifications described herein. In addition, as further described below, the first device 120 includes one or more synchronization folders. Figure 1A In the figure, only one device is shown, but any number of devices can share synchronized folders via the synchronization service. For example, the first device 120 can be connected to a server or an online or cloud-based computing storage service ("cloud storage service") 190. When the first user 110 adds or modifies electronic content via the first device 120, various content or files can be updated or saved in the cloud storage through the network connection.

[0030] Thus, in this example, the first device 120 allows the first user 110 to create, modify, and delete files on the client's local file system, and allows those actions to be synchronized with the same version of the file on the host system and / or one or more other client computers. In some implementations, a user can create a folder and designate it for synchronization. The content of the file is partially managed by the sync client 100 to maintain the desired synchronization frequency or synchronization level. Typically, a user can create a shared sync folder through a native control for the sync client 100 or via a web server.

[0031] For the purposes of this description, "native controls" refer to mechanisms for delivering content to application users through a client application. For example, native controls may include pop-up windows presented to a user via a native application user interface (UI), interactive buttons or other objects that may be presented to a user through a native application UI, and mechanisms native to a particular application for presenting content associated with a native control.

[0032] exist Figure 1A, the synchronization client 100 can be understood as providing a UI configured to allow the first user 110 to select a folder or content to be shared. Therefore, the first user 110 is using the first device 120 to upload or synchronize one or more electronic content available in a storage component associated with the first device 120 (illustrated here by the memory stick 122). For the purpose of this particular example, the electronic content set includes a first electronic content item ("first item") 102 and a second electronic content item ("second item") 104. The size of the first item 102 is significantly smaller than the size of the second item 104. This is represented by the values ​​shown on each content item icon, where the first item 102 is 100 megabytes (MB) and the second item is 100 gigabytes (GB), making the size of the second item 104 1000 times that of the first item 102. It should be understood that these values ​​are for example purposes only, and the electronic content being synchronized can vary in size and type.

[0033] Thus, in this example, the first user 110 adds two new files from the memory stick 122 to the sync folder via the sync client 100 on the first device 120. The operating system can send a message indicating that changes have occurred to the sync folder, as well as the location (path) of the folder or file within the folder that has changed. When the folder is synchronized, the data associated with each item is transferred to the cloud storage service 190. Because each item includes a different amount of data, the time required to upload or otherwise update each item can also vary greatly.

[0034] In many cases, the average user is unaware of the issues that will cause synchronization to be prolonged or associated with a time difference that is delayed. As a result, the user may engage in behavior that prevents the completion of the upload(s), or may fail to perform certain actions necessary to complete the upload(s). For purposes of this application, an atypical synchronization condition or an atypical upload and an atypical download refers to a detection condition or the presence of a condition that may trigger a determination or prediction that the synchronization of electronic content between a cloud storage device and a client device will experience a delay (e.g., due to a slow network connection or synchronization of an overly large file), or is otherwise identified as being prolonged. In other words, identification of an atypical synchronization condition refers to a situation in which the system may predict that the time required for an upload or download will exceed the time typically expected relative to an average or standard synchronization session.

[0035] In some implementations, the "overtime" time can be estimated in part by reference to an average of previous synchronization durations for the current user or client device and the expected network speed of the current client device based on previous synchronization events. This information can also be collected for other users and devices so that a standard duration for synchronization is determined by reference to individual-level and community-level synchronization data. Thus, the expected or standard duration of a synchronization session can be determined with reference to various factors, as will be described below. In addition, in some implementations, the parameters that trigger the synchronization delay can be selected by the user and / or can be based on default values ​​provided or generated by the CMS.

[0036] exist Figure 1A , the first item 102 is illustrated as being uploaded (see first symbol 152), and the upload is successfully completed, as shown in the path to the cloud storage service 190. However, with respect to the second item 104, the upload state can be different. When the second item 104 is being uploaded (see second symbol 154), if the first user 110 is still unaware of the fact that the second item 104 has not yet been fully synchronized and does not provide the connection time required to complete the upload-for example, by closing or turning off the first device 120 (see third symbol 142)-then the upload may be interrupted or otherwise fail (see fourth symbol 144). As another example, the user can manually close the local provider software associated with the first device 120, or the software can be terminated unexpectedly (for example, "crash") before the synchronization process is completed. In such a case, the system will not be able to complete the synchronization operation. In addition, the software-being closed or terminated-may not be able to warn or notify the user of the first device 120 that the synchronization session has ended prematurely.

[0037] However, if the first user 110 is preemptively alerted or notified (see fifth symbol 162) that the time required for the upload of this particular file is extended or abnormal (see sixth symbol 164), he or she may choose to leave the device powered on (see seventh symbol 172). The device may then continue to transfer data for an extended period of time (e.g., overnight, as represented by eighth symbol 174). With this additional time, the second item 104 is able to be successfully synchronized, as shown by the path to the cloud storage service 190. Therefore, by detecting content items that may be associated with upload speed obstacles or that may be associated with delays, and providing users with information about key file characteristics and / or upload status, users are able to more thoughtfully engage with their electronic content storage devices and maintain a more accurate and up-to-date understanding of their uploaded content. Reference will be made to Figure 4A and Figure 4B To present additional details about the components of the system.

[0038] Next reference Figure 1B, illustrates an example of a shared folder and file synchronization architecture, referred to herein as a content management architecture ("architecture") 130. In various implementations, the architecture 130 can include at least one network 106, including but not limited to a public network such as the Internet, a private network such as an institutional and / or personal intranet, and / or some combination of private and public networks.

[0039] The environment includes a file synchronization server 108, which will refer to Figure 4B This is discussed in more detail. The file synchronization server 108 may include or have access to a remote file system 112, in which a plurality of folders, subfolders, files, or combinations thereof may be stored. The plurality of folders, subfolders, and files may include a plurality of shared or synchronized folders, shared subfolders, shared files, shared sub-level files, and shared shortcuts. More specifically, the plurality of shared folders, shared subfolders, shared files, shared sub-level files, and shared shortcuts may include a plurality of remote instances of synchronized folders, a plurality of remote instances of synchronized subfolders, and a plurality of remote instances of synchronized files. As will be described with reference to Figure 4B As discussed in more detail, the server may also include modules configured to implement various functions and features related to synchronizing shared folders and files, such as a remote synchronization module 114 and an atypical synchronization identification module 116 .

[0040] In addition, in different implementations, the architecture 130 can include a first client computing device 124, a second client computing device 126, and an Nth client computing device 128. The client computing devices can include conventional client type devices, as well as desktop computer type devices, mobile type devices, dedicated type devices, embedded type devices, and / or wearable type devices. As an example, the client computing devices can include: computer navigation type client computing devices, such as satellite-based navigation systems, including global positioning system (GPS) devices and other satellite-based navigation system devices; telecommunication devices, such as mobile phones, tablet computers, mobile phone tablet hybrid devices, personal data assistants (PDAs), laptop computers, other mobile computers, wearable computers, implanted computing devices, desktop computers, personal computers, automotive computers, network-enabled televisions, thin clients, terminals, game consoles, gaming devices, workstations, media players, personal video recorders (PVRs), television set-top boxes, digital video recorders (DVRs), cameras, integrated components contained in computing devices, appliances, or any other type of computing device configured to receive user input.

[0041] Furthermore, an entity such as a user may be associated with each or any client computing device. Figure 1BDetails regarding the Nth client computing device 128 are also illustrated. It can be appreciated that the first client computing device 124 and the second client computing device 126 can be configured in the same manner as the Nth client computing device 128 and can include all or any combination of components described herein in connection with the Nth client computing device 128.

[0042] In different implementations, the Nth client computing device 128 may include, for example, a local shared folder and file synchronization module 132, and a synchronization content message module 134. Figure 4A and Figure 4B 136, wherein a plurality of folders, subfolders, files, or combinations thereof may be stored. The plurality of folders, subfolders, and files may include a plurality of locally synchronized folders, locally synchronized subfolders, locally synchronized files, locally synchronized sub-level files, and locally synchronized shortcut keys. More specifically, the plurality of locally synchronized folders, subfolders, files, sub-level files, and shortcut keys may include a plurality of local instances of a shared synchronized folder, a plurality of local instances of a shared synchronized subfolder, and a plurality of local instances of a shared synchronized file.

[0043] To provide further context for the use and application of the systems described herein, Figure 2 Non-limiting examples of characteristics or aspects of a synchronization characterization message ("message") 200 are presented that may be incorporated, added, or otherwise included before, during, and / or after the transfer of data from a synchronization client 290 to a cloud storage service 291. In different implementations, the system can use one or more of these or other upload set (or download set) characteristics, attributes, or parameters to determine whether an upload should be designated as having the possibility of being extended. For purposes of this application, "sync content set" will be used to refer to content items that are queued for synchronization in a pending synchronization session. The session can be initiated automatically at predetermined intervals or following a particular triggering event, or can be initiated manually by a user (see Figure 5-8 ), and can contain one file, one folder, or multiple folders or directories. A queue refers to the sequence of uploads or downloads (e.g., which item is synchronized first, which item is synchronized later). Although two or more items are sometimes synchronized simultaneously, it is understood that the items will generally be uploaded or downloaded in a sequence or order associated with the order of the synchronization queue.

[0044] Although a number of synchronized content set characteristics are identified below, it should be understood that in different implementations, a message can include only one, some, or none of the following information. Figure 2 In the example of , message 200 carries multiple signals or sub-messages ("sub-messages") 202 that can provide an indication of how large the scheduled or current synchronized content set size is. In some implementations, sub-message 202 can include a first message characteristic 210 that indicates details of the upload event, including, but not limited to: (a) whether the synchronized content set has begun transferring data for a content item; (b) whether the synchronized content set has completed transferring its content item data; (c) synchronized content set transfer progress; and / or (d) information about client device or application shutdown or power state, pause or disconnect, and resume upload / download, and other upload / download event details.

[0045] In different implementations, the message 200 can also be configured to provide additional information. For example, the second message characteristic 220 can communicate the time to start uploading. The third message characteristic 230 can communicate the number of files that have been uploaded in the current synchronized content set. Similarly, the fourth message characteristic 240 can communicate the number of bytes that have been uploaded in the set. It can be understood that in most cases, during the first message transmission, the values ​​of both the third message characteristic 230 and the fourth message characteristic 240 will be zero. However, in some implementations, if an upload or synchronization session is being "restarted" or reestablished after premature termination or suspension, the first message transmission values ​​for the third message characteristic 230 and the fourth message characteristic 240 can be non-zero.

[0046] Additionally, the fifth message characteristic 250 can communicate the number of files remaining or to be uploaded in the current sync content set. The sixth message characteristic 260 can communicate the number of bytes remaining or to be uploaded in the current sync content set. It can be appreciated that the values ​​of both the fifth message characteristic 250 and the sixth message characteristic 260 will be zero during the final message transmission.

[0047] Other relevant upload message characteristics may include: a seventh message characteristic 270, which indicates the upload speed perceived by the client for the current synchronized content set (which will have a value of zero during the first message transmission); and an eighth message characteristic 280, which indicates the upload rate configured in the client device for the current synchronized content set. For example, the rate can be a default value, can be specified to automatically increase or decrease as controlled by processor speed, network connection, (one or more) file size and other factors, can be limited or unlimited, or can be configured or adjusted in other ways. In other implementations, information about the type of connection or device, the size or speed of other network traffic, the time of day, the location of the device, and other such factors may also be transmitted by the message 200. In other implementations, the information can take the form of a state or stage assigned to the data synchronization state, such as a download state, an upload state, an idle state, a transfer progress state, a cached state and / or an error state, for example for each content item and / or other data unit.

[0048] In some implementations, the server can also be configured to receive other types of information from the client device. For example, various heuristics or criteria can be included in the message and evaluated by the service to help determine the likelihood of a prolonged synchronization, including but not limited to: (a) whether one or more content items in the upload set take longer than expected to synchronize; (b) whether there are unexpected gaps or intervals between save points; (c) whether the estimated synchronization time exceeds a predefined threshold; (d) the type of computing device used for the client upload; (e) detection of a large number of file deletions in the user's storage account, and other such information.

[0049] In some implementations, the system can include provisions for maintaining or updating information provided to the cloud storage service. For example, in order to cause the information carried by message 200 to continue to be updated, the first message can be followed by a plurality of additional messages carrying updated information that can be sent at regular or, in some cases, irregular intervals.

[0050] exist Figure 3 , a set of messages 300 transmitted between a client device 302 and a cloud storage service 304 are schematically illustrated by a series of arrows. In this example, the client sends an initial or first message 310 immediately before starting synchronization of a synchronization content set. In addition, a final message 380 is sent immediately after the end or completion of the synchronization.

[0051] Between these two messages, a plurality of additional messages can be transmitted; in this example, a second message 320, a third message 330, a fourth message 340, a fifth message 350, a sixth message 360, and a seventh message 370 are shown being transmitted during synchronization of the synchronized content set. In some implementations, the system can be configured to generate or transmit such intervening messages at substantially regular intervals. For example, when there is a pending upload in the synchronized content set, messages may be sent every 10 minutes, half an hour, two hours, six hours, or any other interval. This is represented by approximately equal intervals between the first message 310 and the second message 320, the second message 320 and the third message 330, the third message and the fourth message 340, the fifth message 350 and the sixth message 360, the sixth message 360 ​​and the seventh message 370, and the seventh message 370 and the final message 380.

[0052] However, it should be understood that in some implementations, additional messages may be sent at other times or at different intervals (i.e., irregular intervals). This is represented by the relatively small interval depicted between the fourth message 340 and the fifth message 350. For example, such irregular transmissions may occur when the client application is stopped or interrupted before the upload is complete, when the client application is paused and / or resumed, when the connection speed changes, when the value for the upload message characteristic undergoes a significant change, and / or when the user takes any other action that affects the upload.

[0053] In order to provide greater clarity with respect to the disclosed implementations, reference is made to Figure 4A and Figure 4B The sequence of FIG. 4 presents an example of a content management system (“system”) including a synchronization client system 410 and a synchronization server system 400. Note that although Figure 4A and Figure 4B The description of discusses an example of upstream synchronization of content items from the sync client system 410 to the sync server system 400, and the features and characteristics described can be applied to produce similar effects for downstream synchronization of content items to ensure that the content items are fully and effectively received at the sync client system 410. In addition, all features and functions described elsewhere in this specification can be implemented by Figure 4A and Figure 4B The system described in is implemented.

[0054] exist Figure 4A, an implementation of a sync client system 410 for monitoring synchronization progress and transmitting synchronization content messages to a sync server system 400 is depicted. The sync client system 410 may include any of the features described for the sync client application 100, the client computing device 128, the sync client 290, and the sync client 302. The sync client system 410 includes a sync item identification module 408 configured to identify one or more new sync items 412, etc., each sync item 412 identifying a content item 440 or a portion of a content item 440 contained in a client content storage 438 to be synchronized from the sync client system 410 to the sync server system 400. For example, in response to a content item 440 being created or modified, a corresponding new sync item 412 is generated. The new sync item 412 is provided to a pending sync item module 416, which may be configured to add the new sync item 412 to a pending sync item queue 420. The pending sync item queue 420 is configured to determine an order for synchronizing the pending sync items. For example, the pending synchronization item queue 420 may be configured to select a next synchronization item from among the pending synchronization items.

[0055] The synchronization client system 410 includes a synchronization set identification module 414, which is configured to receive the new synchronization item 412 identified by the synchronization item identification module 408 and identify a synchronization set 418 for the new synchronization item 412. For example, in response to determining that there is no active synchronization set 418 (the term "active" refers to the synchronization set 418 including one or more synchronization items that have not yet been fully synchronized) corresponding to one or more new synchronization items 412, an active synchronization set 418 is instantiated. In the event that there is an active synchronization set 418 corresponding to the new synchronization item 418, the new synchronization item 418 is added to the synchronization set 418. In some implementations, multiple synchronization sets 418 can be active at the same time. For example, individual new synchronization items 412 can be selectively added to different active synchronization sets 418. In some implementations, each synchronization set 418 has a respective pending item queue 420. The sync client system 410 is configured to track the progress of sync items contained in each sync set 418, such as but not limited to: sync items that have been transferred, sync items that are currently being transferred, sync items waiting to begin transfer, and associated data sizes.

[0056] The sync client system 410 includes a data transfer module 442 that is configured to retrieve sync items from the pending item queue 420, obtain data for corresponding portions of content items 440 from the client content storage 438, and transmit the data in upstream content item data messages 446 to the sync server system 400 via the network(s) 402. The use of the network(s) 402 by the data transfer module 442 is performed in accordance with various transmission parameters 444. For example, the transmission parameters 444 may specify a maximum upstream (from the sync client system 410 to the sync server system 400) transmission rate, a maximum downstream transmission rate, a payload size for the upstream content item data messages 446 (such as content items transmitted via multiple content item data messages 446 for respective portions of a content item), a number of parallel transmissions, network connection parameters, and / or network selection from a plurality of available networks. Although not described herein, the transmission parameters 444 may be used to transmit the data to the sync server system 400 in a manner that is consistent with the embodiments of the present invention. Figure 4A 4 , but the data transmission module 442 may additionally be configured to receive downstream content item data messages for downstream synchronization.

[0057] The data transfer module 442 is also configured to provide data transfer metrics 436 regarding the transmission of the content item data message 446. For example, the data transfer metrics 436 may identify synchronization items that have completed synchronization, identify incomplete synchronization items, indicate the amount of data of the content item that has been transferred within a time period, indicate the currently achieved upload speed, and / or indicate the average achieved upload speed within a time period. In some implementations, the pending synchronization item module 416 is configured to obtain and process the data transfer metrics 436 to determine the status of the relevant synchronization items.

[0058] The sync client system 410 includes a sync set monitoring module 424 that is configured to monitor the status of the sync set 418 and report the status of the sync set 418 to the sync server system 400. In some implementations, the sync set monitoring module 424 is configured to transmit an initial sync content message 426 in response to determining that the new sync set 418 is active, which is similar to the case with a sync set monitoring module 424 that is configured to monitor the status of the sync set 418 and report the status of the sync set 418 to the sync server system 400. Figure 3 In some implementations, the sync set identification module 414 is configured to transmit an initial sync content message 426 in response to activating the new sync set 418. The sync set monitoring module 424 is configured to obtain and process data transfer metrics 436 to track the progress of the sync set 418. The sync set monitoring module 424 is configured to periodically transmit sync content messages 428 based on the data transfer metrics 436, as in Figure 2 As discussed in relation to message 200, and as discussed in Figure 3400. The sync client system 410 notifies the sync server system 400 of the new sync set 418 and its synchronization progress over time, as discussed above with respect to the second message 320, the third message 330, the fourth message 340, the fifth message 350, the sixth message 360, and the seventh message 370 in FIG. 400. By using the initial sync content message 426 and the sync content message 428, the sync client system 410 notifies the sync server system 400 of the new sync set 418 and its synchronization progress over time. Note that although the sync set identification module 414, the pending sync item module 416, and the sync set monitoring module 424 are in Figure 4A are shown as separate modules, but in some examples they may be combined into a single module.

[0059] With respect to messages received from the synchronization server system 400, in some implementations, a synchronization status message 454 (indicating, for example, detection of an atypical condition associated with synchronization of the synchronization set 418) can be received from the synchronization server system 400 by a synchronization status processor 460 included in the synchronization client system 410. In some implementations, the condition indicated by the synchronization status message 454 can be stored as a current synchronization status 462, and the synchronization status processor 460 is configured to respond to a device event 458 obtained from the device event detector 456. For example, in response to a device event 458 indicating that a power state is about to change (such as shutting down or transitioning to a sleep state), and the current synchronization status 462 indicates that a long synchronization is in progress, the synchronization status processor 460 can interrupt the change in power state. In some implementations, the synchronization status processor 460 is configured to transmit a corresponding device event message 464 to the synchronization server system 400 in response to the device event 458.

[0060] The sync status processor 460 is configured to perform various actions in the sync client system 410 in response to receiving a sync status message 454 from the sync server system 400, receiving a client command message 466 from the sync server system 400, and / or a device event 458. In some examples, in response to a client command message 466 requesting a diagnostic procedure to be executed, the sync status processor 460 invokes a diagnostic module 468. Depending on the requested diagnostic procedure, the diagnostic module 468 may collect and analyze system performance information (such as, but not limited to, processor load and / or other running processes) and / or network performance information.

[0061] In some examples, the sync status handler 460 is configured to invoke a transmission parameter adjuster 448, which is configured to adjust the transmission parameters 444. For example, in response to a sync status message 454 or a client command message 466 requesting a change in the transmission parameters 448, the sync status handler 460 can change the transmission parameters 444 related to, for example, a maximum upstream transmission rate, a maximum downstream transmission rate, and / or a change to a different network.

[0062] In some examples, the synchronization status processor 460 is configured to call a user message generator 472, which is configured to present an information message to a user of the synchronization client system 410 via a display device 474. In addition, the user message generator 472 can be configured to present a corresponding information message to a user of the synchronization client system 410 via a display device 474 in response to a user notification 476 received from the synchronization server system 400.

[0063] Reference now Figure 4B , synchronization server system 400 and Figure 4A The synchronization server system 400 may include any of the features described for the file synchronization server 108, the cloud storage service 190, the cloud storage service 292, and the cloud storage service 304. Figure 4B The device event message 464, diagnostic data 470, initial sync content message 426, sync content message 428, and content item data message 446 shown in FIG. 4 can be represented by the device event message 464, diagnostic data 470, initial sync content message 426, sync content message 428, and content item data message 446 as shown in FIG. Figure 4A Generated and provided by the synchronization client system 410 depicted in .

[0064] The synchronization server system 400 includes a content data receiver 450 configured to receive content item data messages 446 for synchronization items and create, modify and / or delete individual user content items 452 maintained in a server content storage device 455. The server content storage device 455 can implement version control to retain previous versions of user content items that are modified or deleted. The content data receiver 450 is configured to generate client transmission metrics 432 about receiving content item data messages 446 from the synchronization client system 410 based on the content item data messages 446 received from the synchronization client system 410. For example, the client transmission metrics 432 can identify synchronization items for which synchronization has been completed, identify new synchronization items, indicate the amount of content item data that has been transferred in a time period, indicate the currently achieved upload speed, and / or indicate the average achieved upload speed in a time period.

[0065] The sync server system 400 is configured to maintain a sync history 406 based on client transmission metrics 432. The sync history 406 stores information about synchronization activities of multiple users of the sync server system 400. The sync history 406 includes a user sync history 422 of synchronization activities for a user account associated with the sync client system 410. Similar user account sync histories may be stored in the sync history 406 for other user accounts associated with the sync client system 410. The user sync history 422 includes a client sync history 430 of synchronization activities for the sync client system 410. Similar client sync histories may be included in the user sync history 422 for other sync client systems associated with the user account of the user sync history 422. The information included in the client sync history 430 includes, for example, an average upstream data transfer rate achieved by the sync client system 410 for previously completed sync sets.

[0066] The sync server system 400 includes a sync set tracker 409 configured to maintain a sync set state 404 for each sync set identified by a sync client system 410 in a corresponding initial sync content message 426. The sync set tracker 409 is configured to receive and process sync content messages 428 to update the sync set state 404. In some implementations, the sync set tracker 409 is configured to update the sync set state 404 based on client transmission metrics 432. For example, in the case where only a first sync set has been identified by the sync client system 410 and is pending for the sync client system 410, the upstream content item data message 446 received from the sync client system 410 can be assumed to be for the first sync set and used to determine the number of content items received, the amount of upstream data received, and the upstream data transfer rate achieved for the sync set, and update the sync set state 404 accordingly. In some examples, the sync set state 404 can also maintain information from the transmission parameters 444, such as the maximum upstream data transfer rate.

[0067] The sync server system 400 includes a sync duration estimator 494 configured to estimate the amount of time remaining for a pending sync set to complete its synchronization based on a sync set state 404 maintained by a sync set tracker 409. The estimated amount of time remaining for the sync set can be calculated based on at least the remaining amount of data to be transmitted for the sync set and the upstream data transfer rate achieved for the sync set. The sync server system 400 also includes a standard sync duration calculator 490 configured to provide a standard sync duration to the sync client system 410 based on upstream data transmission characteristics indicated by the sync history 406. In some examples, the standard sync duration includes synchronization statistics, such as a mean, median, variance, and / or standard deviation value for the sync duration and / or a data size for a completed sync set.

[0068] The synchronization server system 400 includes a synchronization status manager 480, which is configured to determine whether a pending synchronization set has a possibility of being extended based on an estimated amount of remaining time provided by a synchronization duration estimator 494 and a standard synchronization duration provided by a standard synchronization duration calculator 490. In some examples, when the estimated amount of remaining time exceeds a predetermined margin (such as 20%) of the standard synchronization duration, it is determined that the pending synchronization set has a possibility of being extended. In other implementations, the margin can be configurable. For example, the margin can be initially filled with a default value, but can also be dynamically configured by or from the synchronization service. In response to determining that the pending synchronization set has a possibility of being extended, the synchronization status manager 480 can send a synchronization status message 454 to the synchronization client system 410. In some examples, the synchronization status manager 480 can issue a client command message 466, such as in response to a device event message 464.

[0069] The synchronization server system 400 includes a synchronization progress indicator monitor 496 that is configured to determine when an abnormal condition 498 has occurred based on the synchronization set status 404 and the client transmission metrics 432. Figure 7 An example of a synchronization progress indicator monitor 496 is discussed. The synchronization server system 400 includes a diagnostic data analyzer 492 that is configured to analyze received diagnostic data in response to the diagnostic data message 470 and, in some cases, issue a client command message 466. For example, the diagnostic data analyzer 492 can issue a client command message 466 requesting a specified change in the transmission parameters 444.

[0070] The synchronization server system 400 may include a user notification module 478 configured to identify various notification channels indicated by the user account data 482 for a user account associated with the synchronization client system 410 and issue one or more corresponding user notifications 476. Figure 4A As illustrated in , user notifications 476 may be transmitted to the synchronization client system 410 and processed by the user message generator 472. In some examples, the user notifications 476 may be sent to other devices associated with the user account, such as other synchronization client systems. For example, the synchronization client system 410 may be implemented on a desktop computer system, while another synchronization client system is implemented on a mobile device such as a smart phone. Other examples of user notifications 476 include, but are not limited to, emails, direct messages via social media channels, instant messaging messages, and / or mobile device text messages. The synchronization status manager 480 may be configured to use the user notification module 478 to issue the user notifications 476.

[0071] Reference now Figure 5-8 The sequence of , illustrates one implementation of the proposed system. Figure 5 , the device display 500 presents an interface for the synchronization client application 510. For simplicity, Figure 5 The sync client application 510 in illustrative embodiment includes a user interface shown here as a sync folder 512 (labeled as "OneDrive"), and the user also simultaneously opens or otherwise accesses a catalog of electronic content ("catalog") 514 currently stored on a client device (labeled as "Desktop"). In other implementations, the sync client application 510 may include any other user interface configured to facilitate synchronization of electronic content.

[0072] In some cases, the synchronization client application 510 can be configured to synchronize any changes to the content in the folder and its subfolders specified by it, such as new, deleted, modified, copied or moved files or folders. In different implementations, the synchronization client application 510 can be a separate software application and / or can be integrated with an existing content management application in the operating system. Figure 5 An example of client software integrated with an existing content management application is presented, enabling a user to manipulate content directly in a local folder (sync folder 512) while a background process monitors changes in the local folder and synchronizes those changes to the cloud storage device. In other implementations, the background process can also identify content that has been updated and synchronize those changes to the local folder. In some implementations, the sync client application 510 can be configured to provide notifications of synchronization operations.

[0073] In other implementations, the user may store content items in a location on their client device other than within a designated sync folder of the sync client application 510. For example, the user may access a content management application, such as a music or photo library, that stores content items in a location other than a designated sync folder. The client device can be configured to identify the location of these content items by searching the client device's memory for files associated with a designated file extension that indicates that the file is a content item to be synchronized. In some other implementations, the client device can perform a complete or partial search of an accessible storage device of the client device, such as a local hard drive or memory stick, to identify the location of the content item.

[0074] After identifying the content item in the memory, the client device can be configured to import the content item into the content management system. In some implementations, this can include creating a copy of the content item and then storing it in a designated synchronization folder, thereby synchronizing the content item with the content management system. In some other implementations, the content item can instead be uploaded directly from the identified location to the content management system without storing a copy of the content item in the designated synchronization folder.

[0075] As in Figure 5 , during various user interactions with the sync client application 510, the user may choose to modify the content in the sync folder 512. As an example, the user may select or otherwise specify one or more content items 550 to be copied or moved from the directory 514 to the sync client application 510. As the user makes changes to the folders and their contents on the client device, those changes can be propagated to the synchronized version on the host server. In this example, the user is adding a new file to the sync folder 512. Upon detecting the new file, the CMS selected by the user can initiate an upload.

[0076] exist Figure 6 In some implementations, the CMS can be configured to display or otherwise provide synchronization status information for each content item when a new file upload occurs. One possible representation of the synchronization status information is in Figure 6600, which can also be used as a type of user interface. The progress panel 600 can provide a summary of the status of the content items collectively and / or individually, and can provide an indication of the current save status of the document (e.g., "Uploading"; "Upload in progress"; "Upload failed"; "Upload paused"; "Upload error"; "Offline sync" and other status indicators). Indications or current status labels for the content items can be displayed in a generally user-friendly list in the progress panel 600, so that the user can easily identify the upload status of each document. In some implementations, the upload status indicator can be interactive so that when selected, the user can see additional synchronization status details and / or be provided with an opportunity to make some modifications to the document metadata or path. In one implementation, the indication of the current status can be substantially minimal so that the indication does not distract the user.

[0077] exist Figure 6 , five content items are shown, along with a corresponding synchronization status indicator for each item. This information can be refreshed periodically by the system or by the user. In this case, the first content item 610, the second content item 620, and the third content item 630 each include an indicator confirming that they have been successfully uploaded and an indicator that the synchronization of the content item has recently occurred. The "uploaded" or "saved" synchronization status indicator informs the user that the content item is the latest in its endpoint cloud storage device. In other words, the document is considered to have been saved and backed up. It can be understood that the status indicator can be represented in various formats, which can include various icons, texts, animations, symbols, graphics, etc. In addition, in one implementation, a visual representation of the synchronization status may not be shown.

[0078] Two additional content items are also listed in the progress panel 600 - a fourth content item 640 and a fifth content item 650. The fourth content item 640 and the fifth content item 650 include a status indicator indicating that the document has not been successfully uploaded (if the document is a new item). If the document is being updated (rather than a new file), the status indicator can indicate that the content item includes changes that have not yet been synchronized with the version in the cloud storage device.

[0079] As above relative to Figure 3 and Figure 4A-4B As discussed, in different implementations, various synchronized content set attributes or characteristics can be delivered to the CMS service provider before upload, while upload occurs, and / or after upload is complete. When this type of information is available to the CMS service provider, intelligent assessments and predictions about synchronization can be made (e.g., see Figure 4A and Figure 4B ). Now refer to Figure 7 , shows an implementation of a decision tree. Figure 7 In the embodiment of the present invention, the synchronization progress identification module (SCIM) 710 is capable of receiving a series of messages 700, which are configured to transmit information related to the current and expected upload status of a specified content item. Therefore, one or more of the previously described synchronized content set features (see Figure 3 and Figure 4A-4B ) can be used to determine whether the current set of synchronized content is associated with an abnormal or atypical condition 760, which may increase the likelihood of upload delays and / or correspond to an increased likelihood of a prolonged synchronization session. The term "atypical condition" or "abnormal condition" refers to any condition or circumstance that is associated with a substantial likelihood of delayed upload / download or a delayed synchronization session.

[0080] For clarity, in Figure 7 Only four decision paths are depicted in the decision tree of . However, it should be understood that SCIM 710 can consider a variety of factors to help determine whether an upload is associated with (one or more) atypical conditions. In addition, in the event that the value of only the first path or only the second path is not able to produce a determination of an atypical condition, the results based on the values ​​from two or more paths (e.g., the first path and the second path) can be combined to produce a determination of an atypical condition.

[0081] exist Figure 7 , a first path 720 evaluates whether the upload speed is below a certain specified value, a second path 730 evaluates whether the upload duration is currently considered to be longer than a standard time, a third path 740 evaluates whether the upload is not proceeding as expected, and a fourth path 750 evaluates whether the synchronization or the synchronization client has experienced any interruptions, and whether the duration and / or frequency of the interruptions are greater than a specified threshold. In this example, if one or more of these paths indicate that there is a problem with the upload, the SCIM 710 can determine that (one or more) atypical conditions 760 are occurring or may occur. In one implementation, the system can then generate an estimate of how long it will take for the synchronized content set to complete synchronization (see upload duration estimation module 770). The server can then proceed to send a notification 780 to the user or generate other messages or instructions, depending on the settings of the client application.

[0082] In some implementations, notification 780 can be automatically generated and transmitted via email and / or through any upload service endpoint (sync client messaging, text message, mobile device alert, app notification, automated phone call, web browser communication, etc.). In some implementations, notification 780 can include information such as the current upload speed and / or an estimate of when the upload should be completed. The notification can help the user identify potential data loss situations where the user may have incorrectly assumed that a successful upload to the cloud has occurred. Figure 8 is an example of a notification 800 presented to a user via a device display 500, notifying the user of a potential delay in synchronization of files in a synchronization content collection. Figure 8 , notification 800 is a floating dialog window, but it can be appreciated that in other implementations, any other type of notification UI can be included, such as a pop-up window, a floating menu, a dialog box or callout, a window or a drop-down menu extending from the desktop or application menu, or any other application communication or presentation method.

[0083] Notification 800 includes a general message 810 ("Upload Notification") and a plurality of options 850. In some implementations, notification 800 can also include an indication of which portions of the synchronized content set are associated with atypical conditions, if there are specific portions that have been determined to cause delays (see file identification 820).

[0084] In this example, the illustrated options 850 include a first option 852 (“View Details”) that can provide additional information about the delay or the atypical conditions that caused the delay, and / or suggestions on how to minimize the delay or protect data, and a second option 854 (“Settings”) by which the user can adjust various thresholds associated with the triggering conditions (see Figure 7 ), change the type or frequency of notifications, or modify other related features as preferred. A third option 856 ("Pause") can provide a shortcut to instruct the system to pause the synchronization, and a fourth option 858 ("Refresh") can submit a request to reset or reinitialize the synchronization and current status information. In addition, a fifth option 860 ("Estimated Time") can be selected to display the estimated remaining duration of the synchronization, and a sixth option 862 ("Remaining Files") can indicate the number and / or names of content items that have not yet been synchronized.

[0085] In other implementations, notification 800 can be more concise and simply alert the user with a message that displays an estimated time for a longer-than-normal synchronization and / or requests that the user keep the device "on" until the synchronization is complete. In another example, notification 800 can present a description of the abnormal or atypical condition and suggest steps or actions that the user can take to facilitate the synchronization, such as leaving the device on overnight or other user "down time", ensuring that the process is not paused, removing or reducing any upload rate constraints, and / or moving the device to a location where a faster network is available, etc. In some implementations, notification 800 can provide a warning to the user to suppress re-imaging of the device or other operations that may compromise or delete data if their device continues to not synchronize. As another example, notification 800 can indicate that the synchronization client progress is below expectations or below a specified threshold, and / or provide the user with an opportunity to utilize service provider-based help or support coaching or walkthroughs to resolve the issue.

[0086] The system can also be configured to respond when it is determined that an atypical condition has occurred via a mechanism other than the generation of a user notification. In some cases, the CMS can respond alternatively or additionally with automatic intervention of the client device's operating system. As a first example, in some implementations, the CMS can automatically initiate client diagnostics to test client device bandwidth, data transmission routes used, and other such factors. This type of response can enable the system to quickly and unobtrusively further investigate and determine whether (one or more) problems are easily resolved by the service provider or user. Information collected via diagnostics can also be used to improve upload durations in future synchronization events.

[0087] As another example, depending on the synchronization content set characteristic that triggers the determination, a signal or instruction can be automatically transmitted to the synchronization client, the signal or instruction initiates a (forced) restart of the synchronization client, thereby clearing the cause of the synchronization delay and returning the synchronization to the speed that could have been expected. As a third example, it can also depend on the synchronization content set characteristic that triggers the determination, and a message can be automatically sent to the synchronization client, instructing the client device to switch to a mode that allows the synchronization client to access and use additional computing resources of the client device, thereby increasing the upload speed. In other words, the client device can reallocate its processor utilization to facilitate the upload of content items. Therefore, although the operating system may run relatively slowly for other computing activities, the synchronization will be completed faster. In addition, in some implementations, while the synchronization is pending, the service can automatically transmit a signal to prevent or block any update, recovery and / or refresh of the client device. In another example, the transmitted signal can be configured to prevent the synchronization client from shutting down while the synchronization is in progress. In addition, in some cases, the service can automatically transmit a signal that is configured to search for a faster connection available to the client device and switch networks when possible, or request the user to do so. In one implementation, the service can initiate a dynamic shift in bandwidth to accommodate individual file sizes or entire sets of synchronized content. Thus, bandwidth can be increased when larger or bulky files begin to synchronize, and bandwidth can be decreased when smaller files are synchronized. Similarly, if a large number of files are to be synchronized, bandwidth can be increased, while specifying a small number of content items to synchronize can be associated with either unchanged bandwidth or a decrease in bandwidth.

[0088] Additionally, in some other implementations, the system may generate responses that more directly participate in the synchronization process. Fig. 9A and Fig. 9B , it can be seen that in one implementation, the CMS can send a message to the sync client to reorder the content items based on the attributes of the sync content set. Some examples of such attributes include the time of the last update and / or modification for (one or more) specific content items in the set, (one or more) item size, and (one or more) item type. In other implementations, any of the attributes described above with reference to the previous figures can be used.

[0089] exist Fig. 9A and Fig. 9B An example is shown in , where smaller and / or recently created or modified files of a first type are depicted as being automatically moved forward in the upload queue so that they "skip" or jump ahead of older and larger files of a second type that are also queued for upload in the sync content set. Fig. 9A, the upload queue 950 is sorted so that the first file 910 is scheduled or arranged to be uploaded before the second file 920. The first file 910 is significantly larger than the second file 920. Fig. 9B In the lower sequence shown in , the "priority" associated with the second file 920 has been modified to better suit the characteristics of the synchronized content set identified by the system.

[0090] In different implementations, the first file 910 can be larger in size or can be associated with synchronization delays. As a specific example, the second file 920 can be a small (~10MB) file that was recently written. File, which has been automatically moved forward in the upload queue 950, so that it has "jumped over" or jumped ahead of the 1GB video file (first file 910) from two days ago that was also queued for upload in the synchronized content set. Re-prioritization of the queue of content items in the synchronized content set can be an automatic mechanism by which the CMS can quickly back up content items that would otherwise remain pending in a substantially static or slow queue. Therefore, rather than requiring these smaller content items to wait for the successful upload completion of the larger or problematic (one or more) content items that have been marked or otherwise determined to be associated with upload delays, the queue can be updated to improve efficiency and synchronize the smaller content items with minimal or no delay before the portions associated with the atypical characteristics. In some cases, managing the upload queue can also include pausing and unpausing the upload queue based on the identification of atypical conditions and corresponding synchronization delays, and / or allowing the user to re-prioritize the queue when certain files are considered priority.

[0091] Thus, in various implementations, the client device can include means for (re)prioritizing content items queued for synchronization to the content management system in order to optimize the upload process and maximize protection of the greatest number of content items. Content items can be prioritized in the queue based on their relative size, relative file type, relative synchronization state, and / or creation time. Other factors may also play a role in determining whether content items should be reordered, including, but not limited to: identification of work content (rather than personal documents or other classifications), the proportion of changes made to the data comprising the modified content item relative to another content item that has been minimally modified, and / or whether the content item has been marked as having high importance, etc.

[0092] Thus, in some implementations, if the characteristics of the synchronized content set transmitted to the cloud service indicate that one or more content items are disproportionately larger in size relative to one or more other content items, the smaller content item(s) can be re-prioritized and can be automatically moved or relocated to be synchronized before the larger file(s). In some implementations, the mechanism can be configured to automatically assign a higher priority to smaller and / or recently created content items, thereby ensuring that they will be synchronized as quickly as possible, while larger content items are uploaded after the smaller content items are successfully synchronized. As an example, the service can include an algorithm or machine learning model that is configured to automatically re-order items based on size or a history of synchronization reliability.

[0093] In different implementations, it can be appreciated that two or more synchronization sessions can occur simultaneously. In other words, a first synchronization content set ("first set") can be specified or identified for synchronization, and data associated with the content items of the first set can begin to be transmitted from the client device to the cloud storage service. A second synchronization content set ("second set") can also be specified for synchronization at the same time, and data associated with the content items of the second set can begin to be transmitted. Therefore, portions of the content from the first synchronization content set and the second synchronization content set can overlap or be synchronized during or around the same time period. In some implementations, the CMS can be configured to receive two or more synchronization content messages, wherein each message carries or transmits information for each content set. In other implementations, content from two or more synchronization content sets can be merged to produce a collective synchronization content set, thereby allowing a single message (communicating information associated with the data of the two content sets) to be sent to the cloud storage service.

[0094] In other implementations, there may be data transfer for content that occurs in a bidirectional manner. For example, data for a first set of content may be uploaded while data for a second set of content may be downloaded. The CMS can be configured to receive messages regarding both sets of content and continue to detect whether an atypical condition exists and determine the likelihood of an extended synchronization for each set of content. Additionally, in one implementation, in response to determining that the synchronization has a likelihood of being extended, the bandwidth for the uploaded content can be increased (e.g., by correspondingly reducing the bandwidth for the downloaded content), thereby prioritizing the backup of the content items on the client device.

[0095] Fig.10 is a flow chart illustrating an implementation of a method 1000 for determining whether extended synchronization is possible. Fig.10In an example of , a first step 1010 includes receiving at least a first synchronization content message from a client device, for example, via a communication network. The first synchronization content message can be understood as including or conveying a synchronization progress of a first synchronization content set, wherein the first synchronization content set includes one or more electronic content items. In one implementation, the first synchronization content message includes information about the amount of data remaining to be synchronized. A second step 1020 includes determining that synchronization of the first synchronization content set has a possibility of being extended. In some implementations, the determination can be based at least in part on detection of an atypical synchronization condition associated with information provided in the first synchronization content message. A third step 1030 includes sending a first message to the client device indicating that synchronization of the first synchronization content set has a possibility of being extended.

[0096] In other implementations, additional steps may be included. For example, in some implementations, it is determined that the synchronization of the first synchronization content set has a possibility of being extended based on a comparison with a standard synchronization duration obtained at least in part with reference to a previous synchronization event for a client device or a device associated with a user and / or a user account. In some implementations, the standard synchronization duration can be obtained at least in part by reference to a previous synchronization event, and the previous synchronization event is associated with or occurs in a device that is identified or otherwise determined to be similar to the client device in terms of, for example, configuration, network, processor, and / or other aspects. In another implementation, it is determined that the synchronization of the first synchronization content set has a possibility of being extended based on a comparison with a standard synchronization duration obtained at least in part with reference to previous synchronization events for multiple users of the synchronization service. In some cases, the first synchronization content message also includes information about the network speed for the client device, and / or the first synchronization content message also includes information about the number of remaining electronic content items to be synchronized, wherein whether the synchronization has a possibility of being extended is also determined based on the number of remaining electronic content items to be synchronized.

[0097] In addition, in some implementations, the method can further include the step of receiving sequence information for the synchronization, wherein the sequence information identifies a sequence in which each electronic content item in the first synchronization content set is scheduled to be synchronized relative to each other, and the sequence information indicates that the first content item in the first synchronization content set will be synchronized before the second content item in the first synchronization content set. The method can also include: confirming that the first content item has a significantly larger size than the second content item; and automatically reordering the sequence in which the electronic content items are scheduled to be synchronized so that the second content item is scheduled for synchronization before the first content item is scheduled to be synchronized.

[0098] Other implementations of the method include automatically initiating a restart of the client device, and / or detecting a network connection available to the client device, and automatically switching the client device from a first network connection to a relatively faster second network connection. These can occur in response to determining that synchronization has the potential to be prolonged.

[0099] In another example, the method can also include: receiving a signal indicating that the client device is about to shut down; automatically preventing the client device from shutting down; and sending a second message to the client device, suggesting that the shutdown of the client device be postponed until the synchronization is completed. In some implementations, the method can include: receiving a signal indicating that the power state of the client device is about to change; and automatically interrupting the change of the power state in response to determining that the synchronization has the possibility of being extended, thereby preventing the client device from entering a suspended state or a powered-off state. In addition, in some cases, the synchronization content message can include information about the time of day for the client device, and the server can transmit to the user a notification or user element for display that suggests, recommends, or requests the client device to remain in a powered-on state that allows synchronization to continue at night in response to determining that the synchronization has the possibility of being extended.

[0100] In some implementations, the method can include automatically initiating a diagnostic tool on the client device to determine a possible cause of the extended synchronization in response to determining that the synchronization has a likelihood of being extended, and / or automatically reallocating computing resources of the client device so that computing resources used for synchronization are increased in response to determining that the synchronization has a likelihood of being extended, thereby reducing a planned duration for the synchronization.

[0101] As previously mentioned, the ability to provide users with a mechanism to better manage the synchronization of electronic content can significantly improve workflow efficiency and protect user data. By detecting situations that can lead to potential data loss, users can take actions that can better protect content items. By using this system, despite the presence of atypical synchronization conditions, users can continue to reliably access and maintain the latest version of their electronic content from different devices. In addition, by providing notifications to users in response to determining (one or more) atypical conditions, users are provided with the opportunity to remain aware of the status of their electronic content, particularly in the case where the user may still not be aware of the duration of synchronization that requires extension. This type of content management system can help users have more confidence in the security and access of their electronic content, and / or reduce the possibility of experiencing data loss.

[0102] In this paper, the combination Figure 1A-10The detailed examples of systems, devices, and techniques described herein are used to illustrate the present disclosure and its benefits. Such examples of use should not be interpreted as limiting the logical process implementation of the present disclosure, nor should variations of the user interface methods and those described herein be considered outside the scope of the present disclosure. In some implementations, the various modules may be implemented in Figure 1A-10 The various features described in the above, each module may also be referred to as and / or include logic, components, units and / or mechanisms. The module may constitute a software module (eg, code embodied on a machine-readable medium) or a hardware module.

[0103] In some examples, the hardware module can be implemented mechanically, electronically, or in any appropriate combination thereof. For example, the hardware module may include a dedicated circuit or logic configured to perform certain operations. For example, the hardware module may include a dedicated processor, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The hardware module may also include a programmable logic or circuit temporarily configured by software to perform certain operations, and may include a portion of machine-readable medium data and / or instructions for such configuration. For example, the hardware module may include software contained within a programmable processor configured to execute a software instruction set. It will be appreciated that, driven by cost, time, support, and engineering considerations, it is decided to mechanically implement the hardware module in a dedicated and permanently configured circuit or in a temporarily configured circuit (e.g., configured by software).

[0104] Therefore, the phrase "hardware module" should be understood to cover a tangible entity that can perform certain operations, and can be configured or arranged in a physical manner as a physical structure, a permanent configuration (e.g., hard wiring) and / or a temporary configuration (e.g., programming) to operate or perform certain operations described in this article in a certain way. As used in this article, a "hardware-implemented module" refers to a hardware module. Considering an example in which a hardware module is temporarily configured (e.g., programmed), each hardware module in the hardware module does not need to be configured or instantiated at any one time. For example, in the case where a hardware module includes a programmable processor configured by software to be a special-purpose processor, the programmable processor can be configured as a special-purpose processor (e.g., including different hardware modules) that is different at different times. Software can configure one or more specific processors accordingly, for example, to constitute a specific hardware module at one time, and to constitute different hardware modules at different times. A hardware module implemented using one or more processors can be referred to as "processor-implemented" or "computer-implemented".

[0105] A hardware module can provide information to other hardware modules, or receive information from other hardware modules. Therefore, the described hardware modules can be considered to be communicatively coupled. In the case where multiple hardware modules exist simultaneously, communication can be achieved by signal transmission (e.g., through appropriate circuits and buses) between two or more hardware modules. In implementations in which multiple hardware modules are configured or instantiated at different times, for example, communication between such hardware modules can be achieved by storing and retrieving information in a memory device accessible to multiple hardware modules. For example, one hardware module can perform an operation and store the output in a memory device, and then another hardware module can access the memory device to retrieve and process the stored output.

[0106] In some examples, at least some operations of the method can be performed by one or more processors or processor-implemented modules. In addition, one or more processors can also support the execution of related operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some of the operations can be performed by multiple computers and / or between multiple computers (as an example of a machine including a processor), where these operations can be accessed via a network (e.g., the Internet) and / or via one or more software interfaces (e.g., application program interface (API)). The execution of certain operations can be distributed between processors, not only residing within a single computer, but deployed across multiple machines. A processor or a processor-implemented module can be located in a single geographic location (e.g., in a home or office environment or a server farm), or can be distributed across multiple geographic locations.

[0107] Fig.11 1 is a block diagram 1100 illustrating an exemplary software architecture 1102, portions of which may be used in conjunction with the various hardware architectures described herein, which may implement any of the features described above. Fig.11 is a non-limiting example of a software architecture, and it will be appreciated that many other architectures may be implemented to facilitate the functionality described herein. The software architecture 1102 may be implemented in a system such as Figure 1A1070, a processor, a memory, and an input / output (I / O) component. A representative hardware layer 1104 is illustrated and can represent, for example, the device 120 of FIG. 1 . The representative hardware layer 1104 includes a processing unit 1106 and associated executable instructions 1108. The executable instructions 1108 represent executable instructions of the software architecture 1102, including implementations of the methods, modules, etc. described herein. The hardware layer 1104 also includes a memory / storage device 1110, which also includes executable instructions 1108 and accompanying data. The hardware layer 1104 may also include other hardware modules 1112. The instructions 1108 maintained by the processing unit 1108 may be part of the instructions 1108 maintained by the memory / storage device 1110.

[0108] The exemplary software architecture 1102 can be conceptualized as layers, each providing various functions. For example, the software architecture 1102 may include layers and components such as an operating system (OS) 1114, a library 1116, an architecture 1118, an application 1120, and a presentation layer 1144. In operation, the application 1120 and / or other components within the layer may invoke API calls 1124 to other layers and receive corresponding results 1126. The illustrated layers are representative in nature, and other software architectures may include additional layers or different layers. For example, some mobile or dedicated operating systems may not provide the architecture / middleware 1118.

[0109] OS1114 can manage hardware resources and provide public services. OS1114 can include, for example, kernel 1128, service 1130 and driver 1132. Kernel 1128 can act as an abstraction layer between hardware layer 1104 and other software layers. For example, kernel 1128 can be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. Service 1130 can provide other public services for other software layers. Driver 1132 can be responsible for controlling the underlying hardware layer 1104 or interfacing with it. For example, driver 1132 can include display driver, camera driver, memory / storage device driver, peripheral device driver (e.g., via universal serial bus (USB)), network and / or wireless communication driver, audio driver, etc., depending on the hardware and / or software configuration.

[0110] The library 1116 may provide a general infrastructure that can be used by the application 1120 and / or other components and / or layers. The library 1116 generally provides functions for other software modules to perform tasks, rather than directly interacting with the OS 1114. The library 1116 may include a system library 1134 (e.g., a C standard library), which may provide functions such as memory allocation, string manipulation, file operations, etc. In addition, the library 1116 may include an API library 1136, such as a media library (e.g., supporting the presentation and manipulation of image, sound and / or video data formats), a graphics library (e.g., an OpenGL library for rendering 2D and 3D graphics on a display), a database library (e.g., SQLite or other relational database functions), and a web library (e.g., WebKit, which may provide web browsing functions). The library 1116 may also include various other libraries 1138, thereby providing many functions for the application 1120 and other software modules.

[0111] The framework 1118 (sometimes also referred to as middleware) provides a higher-level common infrastructure that can be used by applications 1120 and / or other software modules. For example, the framework 1118 can provide various graphical user interface (GUI) functions, advanced resource management, or advanced location services. The framework 1118 can provide a wide range of other APIs for applications 1120 and / or other software modules.

[0112] Applications 1120 include built-in applications 1140 and / or third-party applications 1142. Examples of built-in applications 1140 may include, but are not limited to, contact applications, browser applications, location applications, media applications, messaging applications, and / or game applications. Third-party applications 1142 may include any application developed by an entity other than the vendor of a particular platform. Applications 1120 may use the functionality available via OS 1114, library 1116, architecture 1118, and presentation layer 1144 to create a user interface for a user interface.

[0113] Some software architectures use virtual machines, as illustrated by virtual machine 1148. Virtual machine 1148 provides an execution environment in which applications / modules can run as if they were on a hardware machine such as Fig.10 The virtual machine 1148 may be hosted by a host OS (e.g., OS 1114) or a hypervisor and may have a virtual machine monitor 1146 that manages the operation of the virtual machine 1148 and interoperation with the host operating system. A software architecture that may be different from the software architecture 1102 external to the virtual machine is executed within the virtual machine 1148, such as an OS 1150, a library 1152, an architecture 1154, an application 1156, and / or a presentation layer 1158.

[0114] Fig.121 is a block diagram illustrating components of an exemplary machine 1200, which is configured to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any of the features described herein. The exemplary machine 1200 is in the form of a computer system within which instructions 1216 (e.g., in the form of software components) for causing the machine 1200 to perform any of the features described herein can be executed. In this way, the instructions 1216 can be used to implement the modules or components described herein. The instructions 1216 cause the unprogrammed and / or unconfigured machine 1200 to operate as a specific machine configured to perform the described features. The machine 1200 can be configured to operate as a standalone device, or can be coupled (e.g., networked) to other machines. In a network deployment, the machine 1200 can operate in the capacity of a server machine or a client machine in a server-client network environment, or as a node in a peer-to-peer or distributed network environment. The machine 1200 may be embodied as, for example, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a gaming and / or entertainment system, a smart phone, a mobile device, a wearable device (e.g., a smart watch), and an Internet of Things (IoT) device. Furthermore, while only a single machine 1200 is illustrated, the term "machine" includes a collection of machines that individually or collectively execute instructions 1216.

[0115] The machine 1200 may include a processor 1210, a memory 1230, and I / O components 1250, which may be communicatively coupled via, for example, a bus 1202. The bus 1202 may include multiple buses that couple various elements of the machine 1200 via various bus technologies and protocols. In an example, the processor 1210 (including, for example, a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, or a suitable combination thereof) may include one or more processors 1212a to 1212n, which may execute instructions 1216 and process data. In some examples, one or more processors 1210 may execute instructions provided or identified by one or more other processors 1210. The term "processor" includes a multi-core processor that includes cores that can execute instructions simultaneously. Although Fig.12 Multiple processors are shown, but machine 1200 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors each with a single core, multiple processors each with multiple cores, or any combination thereof. In some examples, machine 1200 may include multiple processors distributed among multiple machines.

[0116] The memory / storage 1230 may include a main memory 1232, a static memory 1234 or other memory, and a storage unit 1236, both of which can be accessed by the processor 1210, such as via the bus 1202. The storage unit 1236 and the memory 1232, 1234 store instructions 1216 that embody any one or more of the functions described herein. The memory / storage 1230 may also store temporary, intermediate and / or long-term data for the processor 1210. The instructions 1216 may also reside, in whole or in part, in the memory 1232, 1234, in the storage unit 1236, in at least one processor 1210 (e.g., in a command buffer or cache memory), buffered in a memory of at least one I / O component 1250, or any suitable combination thereof during execution. Therefore, the memory 1232, 1234, the storage unit 1236, the memory in the processor 1210, and the memory in the I / O component 1250 are examples of machine-readable media.

[0117] As used herein, "machine-readable medium" refers to a device capable of temporarily or permanently storing instructions and data that cause the machine 1200 to operate in a specific manner. As used herein, the term "machine-readable medium" itself does not cover transient electrical or electromagnetic signals (such as on a carrier wave propagating through the medium); therefore, the term "machine-readable medium" can be considered to be tangible and non-transitory. Non-limiting examples of non-transitory tangible machine-readable media can include, but are not limited to: non-volatile memory (such as flash memory or read-only memory (ROM)), volatile memory (such as static random access memory (RAM) or dynamic RAM), cache memory, cache memory, optical storage media, magnetic storage media and devices, network-accessible or cloud storage devices, other types of storage devices, and / or any suitable combination thereof. The term "machine-readable medium" applies to a single medium or a combination of multiple media for storing instructions (e.g., instructions 1216) for execution by the machine 1200, such that the instructions, when executed by one or more processors 1210 of the machine 1200, cause the machine 1200 to perform one or more features described herein. Thus, a “machine-readable medium” may refer to a single storage device, as well as a “cloud-based” storage system or storage network that includes multiple storage devices or devices.

[0118] I / O components 1250 may include various hardware components suitable for receiving input, providing output, generating output, transmitting information, exchanging information, capturing measurements, etc. The specific I / O components 1250 included in a particular machine will depend on the type and / or function of the machine. For example, a mobile device such as a mobile phone may include a touch input device, while a headless server or IoT device may not include such a touch input device. Fig.12 The specific examples of I / O components illustrated in the figure are not limiting, and other types of components may be included in the machine 1200. The grouping of the I / O components 1250 is only to simplify the discussion, and the grouping is not limiting. In various examples, the I / O components 1250 may include a user output component 1252 and a user input component 1254. The user output component 1252 may include, for example, a display component (e.g., a liquid crystal display (LCD) or a projector) for displaying information, an acoustic component (e.g., a speaker), a tactile component (e.g., a vibration motor or a force feedback device), and / or other signal generators. The user input component 1254 may include, for example, an alphanumeric input component (e.g., a keyboard or a touch screen), a pointing component (e.g., a mouse device, a touch pad, or another pointing instrument), and / or a tactile input component (e.g., a physical button or touch screen that provides the location and / or force of a touch or touch gesture), which is configured to receive various user inputs, such as user commands and / or selections.

[0119] In some examples, I / O components 1250 may include biometric components 1256 and / or position components 1262, as well as a variety of other environmental sensor components. Biometric components 1256 may include, for example, components for detecting body expressions (e.g., facial expressions, vocal expressions, hand or body gestures, or eye tracking), measuring biosignals (e.g., heart rate or brain waves), and identifying people (e.g., via voice-based, retinal, and / or facial identification). Position components 1262 may include, for example, position sensors (e.g., global positioning system (GPS) receivers), altitude sensors (e.g., barometric pressure sensors from which altitude can be derived), and / or orientation sensors (e.g., magnetometers).

[0120] The I / O components 1250 may include a communication component 1264 that implements various techniques operable to couple the machine 1200 to network(s) 1270 and / or device(s) 1280 via respective communication couplings 1272 and 1282. The communication component 1264 may include one or more network interface components or other suitable devices that interface with the network(s) 1270. The communication component 1264 may include, for example, components suitable for providing wired communication, wireless communication, cellular communication, near field communication (NFC), Bluetooth communication, Wi-Fi, and / or communication via other modalities. The device(s) 1280 may include other machines or various peripherals (e.g., via USB coupling).

[0121] In some examples, the communication component 1264 can detect the identifier or include a component suitable for detecting the identifier. For example, the communication component 1264 can include a radio frequency identification (RFID) tag reader, an NFC detector, an optical sensor (e.g., a one-dimensional or multi-dimensional barcode or other optical code), and / or an acoustic detector (e.g., a microphone to identify an audio signal of a tag). In some examples, location information can be determined based on information from the communication component 1262, such as, but not limited to: a geographic location via an Internet Protocol (IP) address, a location via Wi-Fi, cellular, NFC, Bluetooth, or other wireless station identification and / or signal triangulation.

[0122] Although various implementations have been described, the description is intended to be exemplary rather than restrictive, and it should be understood that more implementations and embodiments within the scope of the implementation are possible. Although many possible combinations of features are shown in the drawings and discussed in this detailed description, many other combinations of the disclosed features are also possible. Unless explicitly limited, any feature of any implementation can be combined or replaced with any other feature or element in any other implementation. Therefore, it will be understood that any feature shown and / or discussed in this disclosure can be implemented together in any appropriate combination. Therefore, unless according to the attached claims and their equivalents, the implementation is not limited. Similarly, various modifications and changes can be made within the scope of the attached claims.

[0123] Although the foregoing has described what is considered to be the best mode and / or other examples, it should be understood that various modifications may be made therein, and the subject matter disclosed herein may be implemented in various forms and examples, and these teachings may be applied to many applications, only some of which are described herein. The appended claims are intended to claim any and all applications, modifications, and variations that fall within the true scope of the present teachings.

[0124] Unless otherwise specified, all measurements, values, levels, positions, amplitudes, sizes and other specifications set forth in this specification (including the appended claims) are approximate and not exact. They are intended to have a reasonable range consistent with the functions to which they are related and the customary practices in the fields to which they are related.

[0125] The scope of protection is limited only by the claims that follow. When interpreted in light of this specification and the subsequent prosecution history, the scope is intended and should be interpreted to be consistent with the ordinary meaning of the language used in the claims and to encompass all structural and functional equivalents. Nevertheless, none of the claims is intended to cover subject matter that does not meet the requirements of Sections 101, 102, or 103 of the Patent Act, nor should they be interpreted in such a manner. Any unintended coverage of such subject matter is not claimed.

[0126] Except as stated immediately above, nothing stated or shown is intended or should be construed as disabling any component, step, feature, object, benefit, advantage, or equivalent to be contributed to the public, regardless of whether or not recited in the claims.

[0127] It will be understood that the terms and expressions used in this article have the common meaning consistent with the respective inquiry and research field about its corresponding, unless the specific meaning is set forth in addition in this article. Relation terms such as first and second etc. can be used only to distinguish an entity or action from another entity or action, without requiring or implying any actual such relationship or order between these entities or actions. The term "include", "comprise" or any other variation thereof is intended to cover non-exclusive inclusion, so that the process, method, article or device including a series of elements not only include these elements, but also can include other elements that are not clearly listed or inherent to such process, method, article or device. In the absence of other constraints, the element starting with "one" or "an" does not exclude the presence of other identical elements in the process, method, article or device including the element.

[0128] An abstract of the disclosure is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing detailed description, it can be seen that in order to streamline the disclosure, various features are grouped together in various examples. The method of the present disclosure should not be interpreted as reflecting the following intention: the claims require more features than those expressly recited in each claim. On the contrary, as reflected in the attached claims, the inventive subject matter lies in less than all the features of a single disclosed example. Therefore, the following claims are hereby incorporated into the detailed description, wherein each claim independently serves as a separately claimed subject matter.

Claims

1. A content management system, comprising: one or more processors; as well as One or more computer-readable media comprising instructions that, when executed by the one or more processors, cause the one or more processors to: receiving at least a first synchronization content message from a client device over a communications network, the first synchronization content message being configurable to convey synchronization progress of a first synchronization content set including at least a first electronic content item, wherein the first synchronization content message includes information regarding an amount of data remaining to be synchronized; determining that synchronization of the first synchronization content set has a likelihood of being prolonged compared to a standard synchronization duration based on a previous synchronization event with the client device, the determination being based at least in part on detection of an atypical synchronization condition associated with the information of the first synchronization content message; as well as A first message is transmitted to the client device over the communication network, the first message indicating that the synchronization of the first synchronized content set has a possibility of being prolonged.

2. The system according to claim 1, wherein: The instructions further cause the one or more processors to: receiving, via the first synchronization content message, sequence information for the synchronization, the sequence information identifying a sequence in which each electronic content item in the first synchronization content set is scheduled to be synchronized relative to each other, the sequence information indicating that a first content item in the first synchronization content set is to be synchronized before a second content item in the first synchronization content set; confirming that the first content item has a substantially larger size than the second content item; as well as The sequence in which the electronic content items are scheduled to be synchronized is automatically reordered such that the second content item is scheduled for synchronization before the first content item is scheduled to be synchronized.

3. The system according to claim 1, wherein: The instructions further cause the one or more processors to: receiving a signal indicating that a power state of the client device is about to change; and The change in power state is automatically interrupted in response to the determination that the synchronization has a likelihood of being prolonged, thereby preventing the client device from entering a suspended state or a powered-off state.

4. The system according to claim 1, wherein: The instructions further cause the one or more processors to automatically reallocate computing resources of the client device such that computing resources used for the synchronization are increased in response to the determination that the synchronization has a likelihood of being prolonged, thereby reducing a planned duration for the synchronization.

5. The system according to claim 1, wherein: The determination that the synchronization of the first synchronized content set has a likelihood of being extended is based on a comparison with a standard synchronization duration obtained at least in part with reference to a previous synchronization event for the client device.

6. A content management system comprising: a sync content set tracking module configured to receive at least a first sync content message from a client device over a communication network, the first sync content message being configurable to convey a synchronization progress of a first sync content set including at least one electronic content item, wherein the first sync content message includes information regarding an amount of data remaining to be synchronized; A synchronization status manager configured to: determining that synchronization of the first synchronization content set has a likelihood of being extended compared to a standard synchronization duration based on a previous synchronization event with the client device, the determination being based at least in part on detection of an atypical synchronization condition associated with the information of the first synchronization content message; and A synchronization status message is transmitted to the client device over the communication network, the synchronization status message indicating that the synchronization of the first synchronization content set has a possibility of being prolonged.

7. The system of claim 6, further comprising a standard synchronization duration calculator configured to: provide a standard synchronization duration based at least in part on reference to a previous synchronization event for the client device, in, The synchronization status manager is configured to determine that the synchronization of the first synchronized content set has a likelihood of being extended based on a comparison with the standard synchronization duration.

8. The system according to claim 6, wherein: The system is further configured to automatically reallocate computing resources of the client device such that computing resources used for the synchronization are increased in response to the determination that the synchronization has a likelihood of being prolonged, thereby reducing a scheduled duration for the synchronization.

9. The system according to claim 6, wherein: The system is also configured to automatically: receiving a signal indicating that a power state of the client device is about to change; and The changing of the power state is interrupted in response to the determination that the synchronization has a likelihood of being prolonged, thereby preventing the client device from entering a suspended state or a powered off state.

10. A method comprising: receiving at least a first synchronization content message from a client device over a communications network, the first synchronization content message being configurable to convey synchronization progress of a first synchronization content set including at least a first electronic content item, wherein the first synchronization content message includes information regarding an amount of data remaining to be synchronized; determining that synchronization of the first synchronization content set has a likelihood of being extended compared to a standard synchronization duration based on a previous synchronization event with the client device, the determination being based at least in part on detection of an atypical synchronization condition associated with the information of the first synchronization content message; and A first message is transmitted to the client device over the communication network, the first message indicating that the synchronization of the first synchronized content set has a possibility of being prolonged.

11. The method according to claim 10, wherein: The determining that the synchronization of the first synchronized content set has a likelihood of being extended is based on a comparison with a standard synchronization duration obtained at least in part with reference to previous synchronization events for a plurality of users of a synchronization service.

12. The method according to claim 10, wherein: The first sync content message also includes information regarding the number of electronic content items remaining to be synchronized; and The determining that the synchronization has a likelihood of being prolonged is further based on the number of electronic content items remaining to be synchronized.

13. The method according to claim 10, further comprising: Responsive to the determination that the synchronization has a likelihood of being prolonged, a reboot of the client device is automatically initiated.

14. The method according to claim 10, wherein: The first synchronization content message also includes information about the network speed for the client device, and the method also includes: detecting a network connection available to the client device, and automatically switching the client device from the first network connection to a relatively faster second network connection in response to the determination that the synchronization has the possibility of being prolonged.

15. The method according to claim 10, further comprising: In response to the determination that the synchronization has a likelihood of being prolonged, a diagnostic tool on the client device is automatically initiated to determine a possible cause of the prolonged synchronization.

Citation Information

Patent Citations

  • System and Method to Synchronize OSGi Bundle Inventories Between an OSGi Bundle Server and a Client

    US20080189419A1