Patent ID: 12244678

The technologies described herein will become more apparent to those skilled in the art from studying the Detailed Description in conjunction with the drawings. Embodiments or implementations describing aspects of the invention are illustrated by way of example, and the same references can indicate similar elements. While the drawings depict various implementations for the purpose of illustration, those skilled in the art will recognize that alternative implementations can be employed without departing from the principles of the present technologies. Accordingly, while specific implementations are shown in the drawings, the technology is amenable to various modifications.

DETAILED DESCRIPTION

The disclosed technology relates to content management systems having a zero recovery point objective (zero RPO) for storing electronic content during operational disruptions. RPO is a time-based measurement that describes the amount of time that can pass during an interruption before data loss exceeds that tolerance The zero RPO can refer to a reduced or minimal time period during which data is lost due to operational interruptions (e.g., the amount of electronic content lost is zero or almost zero). The disclosed systems are configured to transfer electronic content received from a client application to a data storage system in a manner that ensures that a minimal amount of electronic content is lost when the data storage system is temporarily non-operational. Having zero RPO is desirable, for example, for storing content with high importance such as legal content. For example, wireless service providers are required to store legal documents arising from transactions with clients. Such legal documents can include contract agreements, finance agreements, or lease agreements. Preventing loss of such legal documents due to operational failures can avoid economic loss as well as inconveniences to clients.

In one example, a system includes a server system in communication with a client application and a data storage system (e.g., a system of record). The server system can receive electronic content (e.g., an electronic legal document) from the client application and transmit the electronic content to the data storage system. In an instance that the data storage system is not able or available (e.g., inoperable) to store the electronic content (e.g., the operation of data storage is interrupted), the server system can receive a notification and instead temporarily store the electronic content to a data staging memory. Storing the electronic content temporarily to the data staging memory ensures that minimum or zero electronic content is lost due to interruptions at the data storage system. The data staging memory is configured to store the electronic content until the data storage is available and able to store the electronic content.

In another example, a server system associated with a wireless service provider for the management of content receives electronic content at a data flow adapter of the server system. The electronic content is to be stored at a data storage system. The server system transmits the electronic content from the data flow adapter to the data storage system via a real-time data adapter that is configured to automatically forward the received electronic content from the real-time data adapter to the data storage system. The server system then receives a first notification indicating that the data storage system is unable or unavailable for storing the electronic content. In response to receiving the first notification, the server system temporarily stores the electronic content at a data staging memory of the server system. The electronic content is stored at the data staging memory while the data storage system remains unable or unavailable. The server system causes a staging data adapter of the server system to poll the data staging memory for at least an indication that electronic content is awaiting at the data staging memory to be stored at the data storage system. The server system detects that there is electronic content stored at the data staging memory awaiting to be stored at the data storage system and causes the staging data adapter to move the electronic content from the data staging memory to the data storage system when the data storage system is available and able to store the electronic content.

In another example, a method includes receiving electronic content at a first adapter of a first server system. The electronic content is to be stored at a second server system. The method includes routing the electronic content from the first adapter to a data staging memory and temporarily storing the electronic content at the data staging memory until the second server system becomes ready to store the electronic content. The method includes causing a second data adapter of the first server system to poll the data staging memory for at least an indication that any electronic content is awaiting to be stored at the second server system. The method also includes causing the second data adapter to move the electronic content from the data staging memory to the second server system when the second server system is ready to store the electronic content.

In yet another example, a data ingestor polls, by a staging data adapter of the data ingestor, a data staging memory for at least an indication that any electronic content is awaiting to be stored at a data storage system. The data storage system can be separate and distinct from the data ingestor. The staging data adapter attempts to move the electronic content from the data staging memory to the data storage system. The staging data adaptor can receives a first notification indicating that the data storage system is unable or unavailable for storing the electronic content. In response to the first notification, the data ingestor continues to periodically attempt to move, by the staging data adapter, the electronic content from the data staging memory to the data storage system until the data storage system successfully receives and stores the electronic content. The staging data adapter thus causes the data storage system to store the electronic content when the data storage system is available and able to store the electronic content.

The description and associated drawings are illustrative examples and are not to be construed as limiting. This disclosure provides certain details for a thorough understanding and enabling description of these examples. One skilled in the relevant technology will understand, however, that the invention can be practiced without many of these details. Likewise, one skilled in the relevant technology will understand that the invention can include well-known structures or features that are not shown or described in detail, to avoid unnecessarily obscuring the descriptions of examples.

System Overview

FIG.1is a block diagram that illustrates a network system100. The system100includes an electronic device102that is communicatively coupled to network104via network access nodes106-1and106-2(referred to collectively as “network access nodes106”). The system100also includes an electronic device112communicatively coupled to the network104via the network access nodes106.

The electronic devices102and112can be any type of electronic devices that can communicate with a network node and/or with another electronic device in a cellular, computer, and/or mobile communications system. Examples of such electronic devices include smartphones, tablet computers, laptop computers, wireless devices capable of machine-to-machine (M2M) communication, wearable electronic devices, movable Internet of Things (IoT) devices, and any other handheld device that is capable of accessing the network(s)104. Although only two electronic devices are illustrated inFIG.1, the disclosed implementations can include any number of electronic devices.

The electronic devices102and112can store and transmit (e.g., internally and/or with other electronic devices over a network) signals, code (composed of software instructions), or data by using machine-readable media, such as non-transitory machine-readable media (e.g., machine-readable storage media such as magnetic disks, optical disks, read-only memory (ROM), flash memory devices, and phase change memory) and transitory machine-readable transmission media (e.g., electrical, optical, acoustical, or other forms of propagated signals, such as carrier waves or infrared signals).

The electronic devices102and112can include hardware such as one or more processors coupled to sensors and a non-transitory machine-readable media to store code and/or sensor data, user input/output (I/O) devices (e.g., a keyboard, a touchscreen, and/or a display), and network connections (e.g., an antenna) to transmit code and/or data using propagating signals. The coupling of the processor(s) and other components is typically through one or more busses and bridges (also referred to as bus controllers). Thus, a non-transitory machine-readable medium of a given electronic device typically stores instructions for execution on a processor(s) of that electronic device. One or more parts of an implementation of the present technology can be implemented using different combinations of software, firmware, and/or hardware.

The network access nodes106can be any type of network access node that can communicate with a wired or wireless device (e.g., electronic devices102and112) and/or with another network node. The network access nodes106can be a network device or apparatus. Examples of network access nodes include a base station (e.g., network access node106-1), an access point (e.g., network access node106-2), or any other type of network node such as a network controller, radio network controller (RNC), base station controller (BSC), a relay, transmission points, and the like.

The system100depicts different types of wireless access nodes106to illustrate that the electronic device102can access different types of networks through different types of network access nodes. For example, a base station (e.g., the network access node106-1) can provide access to a cellular telecommunications system of the network(s)104. An access point (e.g., the network access node106-2) is a transceiver that provides access to a computer system of the network(s)104.

The network(s)104can include any combination of private, public, wired, or wireless systems such as a cellular network, a computer network, the Internet, and the like. Any data communicated over the network(s)104can be encrypted or unencrypted at various locations or along different portions of the networks. Examples of wireless systems include Wideband Code Division Multiple Access (WCDMA), High Speed Packet Access (HSPA), Wi-Fi, Wireless Local Area Network (WLAN), and Global System for Mobile Communications (GSM), GSM Enhanced Data Rates for Global Evolution (EDGE) Radio Access Network (GERAN), 4G or 5G wireless wide area networks (WWAN), and other systems that can also benefit from exploiting the scope of this disclosure.

The system100further includes a manager server110and a content management system108. The manager server110can mediate a flow of data from the electronic devices102and112to the content management system108. In some implementations, the manager server110can include any number of server computers communicatively coupled to the electronic devices102and112via the network access nodes106. The manager server110can include combinations of hardware and/or software to process data, perform functions, communicate over the network(s)104, etc. For example, server computers of the manager server110can include a processor, memory or storage, a transceiver, a display, operating system and application software, and the like. Other components, hardware, and/or software included in the system100that are well known to persons skilled in the art are not shown or discussed herein for brevity. Moreover, although shown as being included in the network(s)104, the manager server110can be located anywhere in the system100to implement the disclosed technology.

The content management system108can store data generated by the electronic device102and/or electronic device112and communicated to the content management system108via the manager server110. The content management system108can include one or more network nodes that store data. In a distributed implementation (e.g., blockchain), network nodes of the content management system108can each store an identical copy of the data and be updated independently. Although shown in the network(s)104, content management system108can be located anywhere in the network system100.

In some implementations, the manager server110can receive electronic content from the electronic device102and/or the electronic device112to be stored at the content management system108. The manager server110causes the electronic content to be stored at the content management system108. The manager server110can cause the electronic content to be transmitted to the content management system108via various paths. For example, the manager server110can cause the electronic content to be transmitted to the content management system108in a real-time path or a data staging path. The real-time path is used to transmit the electronic content received from the electronic device102and/or the electronic device112in real-time or nearly real-time directly to the content management system108. However, in an instance where the content management system108is unable or unavailable to store the electronic content, the data staging path can be used. The data staging path includes storing the electronic content temporarily in a data staging memory until the content management system is available and able to store the electronic content. The various paths for transmitting the electronic content from the manager server110to the content management system108ensure that minimum or zero electronic content is lost in instances where the operation of the content management system108is interrupted.

In one implementation, the manager server110is associated with a store providing products or services to be purchased online or at physical stores. For example, a user of the electronic device102can do an online purchase or an online service agreement via the electronic device102. A legal document associated with the online purchase or service agreement can be communicated from the electronic device102to the manager server110for storing. The manager server110can further communicate the legal document to be stored at the content management system108.

FIG.2is a block diagram that illustrates a system200for managing electronic content. The system200includes a server system202, a client application204, and a content management system206(e.g., a system of record). The server system202is in communication with the client application204and content management system206. The server system202, the client application204, and the content management system206can be distinct and separate from each other. The content management system206can correspond to the content management system108and the server system202can correspond to the manager server110described with respect toFIG.1.

In some implementations, the server system202is a server system associated with a wireless service provider. The server system202can be configured to receive electronic content, such as electronic documents, from the client application204and cause the electronic content to be stored at the content management system206. In some implementations, the server system202includes two or more servers or server units (e.g., server units that are portions of a single server or server system) that are in communication with the client application204as well as the content management system206.

The content management system206is configured to store and manage electronic content. The content management system can include multiple servers for storing electronic content. The content management system206may further be configured to make the stored electronic content available for retrieval upon a request. The content management system206can include one or more databases as well as one or more data storage devices (e.g., collectively referred to herein as a data storage218). A database refers to an organized collection of structured information. Databases can be configured to store large volumes of data in a single collection thereby making the data readily accessible to move to another location. The databases can thereby support inserting, updating, and deleting data stored thereon. A data storage is a repository for persistently storing and managing collections of data that can include databases as well as simple files. As an example, the data storage218can include two databases and a data storage.

In some implementations, the content management system206is configured to write (e.g., store) electronic content at the data storage218asynchronously. Asynchronous writing refers to running multiple tasks concurrently on a single thread independent from each other. For example, the content management system206is configured to write electronic content to the one or more databases and the one or more data storages asynchronously. In an instance that any of the writing operations fail (e.g., due to an interruption in the server operation), the data storage218can automatically generate a notification indicating that storing of the electronic content was unsuccessful after all the asynchronous writing operations have been performed. In alternative implementations, the content management system206is configured to write electronic content at the data storage218synchronously. Synchronous writing refers to running multiple tasks in a sequence. For example, other tasks in the sequence remain idle until the first task in the sequence is completed. In some implementations, asynchronous writing provides a faster way of storing the electronic content compared to synchronous writing but is also more sensitive to operational failures.

In some implementations, the client application204is an application operating on the electronic devices102and/or112. The client application204enables a user (e.g., a subscriber associated with the system200) to generate electronic content and communicate the electronic content to the server system202to be stored at the content management system206. In some implementations, the client application204is configured to generate electronic content and communicate the electronic content automatically in response to transactions performed by the user via the electronic device102or the electronic device112. For example, the user can do an online purchase or an online service agreement via the client application204. The client application204can be associated with the server system202. For example, the server system202is a wireless network service provider and the client application204is an online store application (e.g., a web application or a mobile device application) that allows the user to purchase wireless services and/or products associated with wireless communications from the wireless network provider.

In some examples, the electronic content can include or correspond to an electronic document, an electronic record, an electronic data collection, an electronic communication (e.g., an email or an online discussion), or any other electronic content. The electronic content can include text, graphics, images, audio, and/or video content. In some implementations, the electronic content includes legal content. The electronic document can be a legal document such as a purchase receipt or a service agreement that is generated when the user purchases an item via the client application204. As further examples, the electronic content includes a financing or a loan agreement, a lease agreement, a contract, or any other legal document.

As shown inFIG.2, the server system202can include a data flow adapter208, data ingestor216, and staging memory210. The data flow adapter208can be configured to receive the electronic content from the client application204and move the data forward in the system200via various paths (e.g., paths I, II, and III inFIG.2) within the server system202. For example, path I involves moving electronic content from the data flow adapter208to the data ingestor216(e.g., a real-time data adapter212of the data ingestor216) while path II involves moving electronic content from the data flow adapter208to the staging memory210from which the electronic content is then moved to the data ingestor216(e.g., a staging data adapter214). The electronic content can further be moved from the data ingestor216to the content management system206for storing. Path III is an alternative to path I and is used in instances when the electronic content moved via path I was not successfully stored at the content management system206. Path III involves moving the electronic content to the staging memory210in response to receiving a notification from the data ingestor216that the content management system206is unable or unavailable to store the electronic content (i.e., an attempted storing of the electronic content at the content management system206was not successful).

As shown, the data ingestor216includes one or more data adapters (e.g., the real-time data adapter212and the staging data adapter214). A data ingestor adapter, such as the real-time data adapter212and staging data adapter214, is configured to operate as a bridge between the server system202and the content management system206by facilitating transmission of electronic content between the server system202and the content management system206. For example, the real-time data adapter212and staging data adapter214can receive electronic content from the data flow adapter208, process the electronic content, and transmit the processed electronic content to data storage218the content management system206.

Processing the electronic content can include changing the format or size of the electronic content. For example, the electronic content received from the data flow adapter208has a first format that is not compatible to be stored by the content management system206. The real-time data adapter212and staging data adapter214can convert the format of the electronic content from the first format to a second format prior to moving the electronic content to the data storage218of the content management system206. The second format is compatible with the content management system206

In some implementations, the real-time data adapter212and the staging data adapter214are distinct and separate from each other such that they are associated with separate servers or different portions of a server system associated with the data ingestor216. The real-time data adapter212can be configured to allow the electronic content to automatically flow to the data storage218without interruptions so that the storing of the electronic content received from the client application204occurs within minimal time (e.g., in real-time or nearly in real-time). For example, the real-time data adapter212can be configured to automatically forward electronic content to the data storage218.

The real-time data adapter212is also configured to receive notifications from the data storage218that indicate whether the data storage218has successfully stored the electronic content received from the real-time data adapter. The notifications can include, for example, a notification indicating that storing of the electronic content was successful and a notification indicating that storing of the electronic content was unsuccessful (e.g., the data storage218is unavailable or non-operational). Upon receiving a notification indicating that storing of the electronic content was unsuccessful, the real-time data adapter212can forward such indication to the data flow adapter208.

The staging memory210is configured to store electronic content temporarily. The staging memory210can receive electronic content from the data flow adapter208. For example, the staging memory210is configured to store the electronic content until the data storage218is unable or unavailable for storing the electronic content. After the electronic content is moved to the data storage218and successfully stored, the electronic content is no longer stored at the staging memory210.

In some implementations, moving the electronic content from the data staging memory210includes generating a copy of the electronic content. For example, the staging data adapter214generates a copy of the electronic content and moves the copy of the electronic content from the data staging memory210to the data storage218. The data staging memory210can continue to store the electronic content while the copy of the electronic content is moved from the data staging memory210to the data storage218by the staging data adapter214. After the staging data adapter214receives an indication that the copy of the electronic content is successfully stored at the data storage218, the electronic content can be erased from the staging memory210. In some implementations, the erasing includes erasing a batch of electronic contents from the staging memory210periodically (e.g., once a day, once a week, or once a month).

In some implementations, the staging memory210includes multiple memories that are distinct and separate from each other. As shown inFIG.2, the staging memory210includes an in-memory storage210-1and a persistence storage210-2. The in-memory storage210-1can be configured to store electronic content for a shorter term than the persistence storage210-2. For example, when an expected time for storing the electronic content at the staging memory210is up to a few hours (e.g., 1 hour, 2 hours, or 3 hours), the electronic content can be stored at the in-memory storage210-1. When the expected time for storing the electronic content at the staging memory210is longer than the few hours (e.g., a day), the electronic content can be stored at the persistence storage210-2. The expected time for storing the electronic content can depend from the excepted time the data storage218is unable or unavailable for storing the electronic content. Furthermore, persistence storage210-2can be used to store electronic content having a large size. For example, electronic content having a size greater than a threshold size (e.g., 250 KB) can be stored at the persistence storage210-2. In some examples, the staging memory210can be configured to store all content to persistent storage210-2or all content to the in-memory storage210-1. The process of storing electronic content at the in-memory storage210-1can be faster and more economical than the process of storing electronic content at the persistence storage210-2.

The staging data adapter214can be configured to receive electronic content from the staging memory210. In some implementations, the staging data adapter214is configured to poll the staging memory210to check whether the staging memory210includes any electronic content that is stored at the staging memory and is awaiting to be moved to the content management system206for storing. Polling by the staging data adapter refers to an operation of actively detecting the status of the staging memory210. The staging data adapter214can also be configured to receive notifications from the data storage218that indicate whether the data storage218has successfully stored the electronic content from the staging data adapter214. As described previously, the notifications can include a notification indicating that storing of the electronic content was successful and a notification indicating that storing of the electronic content was unsuccessful. Upon receiving a notification indicating that the storing was unsuccessful, the staging data adapter214can be configured to continue to attempt to move the electronic content from the staging memory210to the data storage218until the data storage is available and able and successfully stores that electronic content.

Content Management Processes

FIG.3is a flowchart that illustrates processes300for management of electronic content. The processes300can be performed at a server system (e.g., the server system202inFIG.2). The server system (e.g., a first server system) can be in wireless communication with a data storage system (e.g., a second server system such as the content management system206inFIG.2) and a client application (e.g., the client application204inFIG.2). The server system can be associated with a wireless service provider. The server system can include at least one hardware processor and at least one non-transitory memory storing instructions. In one example, the server system includes a computer system400described with respect toFIG.4. When the instructions are executed by the at least one hardware processor, the server system performs the processes300.

At302, the server system receives electronic content at a data flow adapter of the server system (e.g., the data flow adapter208inFIG.2). The electronic content is to be stored at a data storage system (e.g., the data storage218of the content management system206inFIG.2).

The electronic content can include an electronic document, an electronic record, an electronic data collection, an electronic communication (e.g., an email, a transcription of a voicemail, or an online discussion), or any other electronic content. The electronic content can include text, data collections, graphics, images, audio, and/or video content. In some implementations, the electronic content includes legal content. In one example, the electronic content includes a purchase agreement, a purchase receipt, a financing or loan agreement, a lease agreement, a licensing agreement, a contract, or any other legal document.

In some implementations, the electronic content is communicated to the server system from an application on a client device (e.g., the client application204inFIG.2). The client application can be a mobile device application or a web application running on a mobile device such as a mobile phone, a laptop computer, or a tablet computer (e.g., the electronic device102or112inFIG.1) that is in wireless communication with the server system. The electronic content can be generated by the client application. For example, the client application can include an online store application associated with the server system. The client application generates a financing agreement as a user of the client application purchases an item via the client application with a financing plan.

In some implementations, the electronic content indicates a transaction performed by a subscriber associated with the wireless service provider. The transaction can related to purchasing a service or a wireless product from the wireless service provider.

At304, the server system transmits (e.g., routes) the electronic content from the data flow adapter to the data storage system via a real-time data adapter (e.g., the real-time data adapter212via path I inFIG.2). In some implementations, the real-time data adapter is configured to automatically forward the received electronic content to the data storage system. The real-time data adapter212can thereby allow the electronic content to be transmitted from the data flow adapter208to the data storage218in real-time or in nearly real-time.

In some implementations, the server system can cause the data storage to system asynchronously write the electronic content to the data storage system. For example, the data storage218includes one or more databases and one or more data storages. The electronic content can be written to the one or more databases and the one or more data storages asynchronously (e.g., independently of each other).

At306, the server system receives a first notification indicating that the data storage system is unable or unavailable for storing the electronic content. For example, the first notification is received by the real-time data adapter212inFIG.2which then forwards the first notification to the data flow adapter208. The first notification can be an indication that the data storage system is unable or unavailable to store the electronic content (e.g., the data storage218failed to perform the asynchronous writing of the electronic content to any of the one or more databased or the one or more data storages of the data storage218). The unavailability can be caused by server interruptions or that the servers are temporarily too busy to perform additional tasks.

In response to receiving the first notification, at308the server system temporarily stores the electronic content at a data staging memory of the server system. For example, in response to receiving the first notification, the data flow adapter208transmits the electronic content to the staging memory210(e.g., path III inFIG.2). The electronic content is configured to be stored at the data staging memory while the data storage system remains unable or unavailable to store the electronic content.

In some implementations, the data flow adapter208is configured to transmit the electronic content to the staging memory210(e.g., path II inFIG.2) without first transmitting the electronic content to the real-time data adapter212. Path II of transferring the electronic content from the data flow adapter208to the staging memory210can be performed independent of path I.

In some implementations, the data staging memory includes an in-memory database and/or a persistent memory database. The electronic content can be temporarily stored at the in-memory database or the persistent memory database until the data storage system is available to store the electronic content. For example, when an expected time for storing the data at the staging memory210is up to a few hours (e.g., 1 hour, 2 hours, or 3 hours), the electronic content can be stored at the in-memory storage210-1. When the expected time for storing the data at the staging memory210is longer than the few hours or the electronic content has a large size, the electronic content can be stored at the persistence storage210-2.

At310, the server system causes a staging data adapter of the server system (e.g., the staging data adapter214inFIG.2) to poll the data staging memory for at least an indication that electronic content is awaiting at the data staging memory to be stored at the data storage system. The data storage system can be separate and distinct from the data server system. In some implementations, causing the staging data adapter to poll the data staging memory can include causing the staging data adapter to periodically poll an in-memory database or a persistent memory database of the data staging memory (e.g., every 5 minutes, every 10 minutes, every 30 minutes, once in an hour, or once in two hours). For example, a first attempt by the staging data adapter to store the electronic content to the data storage system occurs instantaneously. In an instance that the data storage system is not available to store the electronic content at the first attempt, the staging data adapter continues to attempt to store the electronic content periodically to the data storage system. For example, the staging data adapter214sends the staging memory210an inquiry to check whether the staging memory210includes any electronic content that is awaiting to be stored at the data storage system. The polling can include polling the in-memory storage210-1and the persistence storage210-2concurrently.

At312, the server system detects that the electronic content stored at the data staging memory is awaiting to be stored at the data storage system. The detection can include detecting a location of the electronic content awaiting to be stored. For example, the staging data adapter214detects that the electronic content is either at the in-memory storage210-1or the persistence storage210-2of the staging memory210. Since the staging data adapter214can perform the polling periodically, detecting that the staging memory includes any electronic content awaiting to be moved to the data storage218can include detecting a batch of electronic content awaiting to be moved. For example, when the staging data adapter214performs the polling once in an hour, the batch of electronic content can include all electronic content that has been moved to the staging memory210by the data flow adapter208during the last hour.

At314, the server system causes the staging data adapter to move the electronic content from the data staging memory to the data storage system when the data storage system is available and able to store the electronic content. For example, in response to detecting that the staging memory210includes electronic content awaiting to be stored at the data storage218, the staging data adapter214moves the electronic content to the data storage218. Subsequently, when the data storage218is operational, the data storage218stores the electronic content received from the staging data adapter214.

In some implementations, subsequent to the electronic content being moved from the data staging memory to the data storage system the server system can receive, by the staging data adapter from the data storage system, a second notification indicating that the data storage system is unable or unavailable to store the electronic content. In response to the second notification, the server system can continue to periodically attempt to move, by the staging data adapter, the electronic content from the data staging memory to the data storage system periodically until the data storage system is available and able to store the electronic content. For example, the staging data adapter214repeatably moves the electronic content from the staging memory210to the data storage. The moving can be performed, for example, every 10 minutes, every 30 minutes, or every hour. The repeated moving can continue until the staging data adapter214receives a notification from the data storage218that the electronic content has been successfully stored at the data storage218.

In alternative implementations, the server system can send an inquiry to the data storage system to check whether the data storage system is available and able to store the electronic content. The server system can send the inquiry periodically until the server system receives an indication that the data storage system is available and able to store the electronic content. For example, the staging data adapter214sends an inquiry to the data storage218to check whether the data storage218is available and able to store electronic content. In response to the inquiry, the data storage218sends to the staging data adapter214an indication that the data storage218either is available and able or is unavailable or unable. Alternatively, the server system can send a command that requests the data storage system to send an indication when the data storage system is available and able to store the electronic content. In response to receiving the indication that the data storage system is available and able to store the electronic content, the staging data adapter moves the electronic content from the staging memory to the data storage system.

In some implementations, the server system can move a batch of electronic content from the data staging memory to the data storage system and cause the batch of electronic content to be stored at the data storage system concurrently. The batch of electronic content can include the electronic content. For example, the batch of the electronic content can include any electronic content stored at the staging memory210that has not yet been stored at the data storage218.

In some implementations, prior to moving the electronic content to the data storage system, the server system can convert the electronic content at the staging data adapter or the real-time data adapter from a first format to a second format. The first format is incompatible with the data storage system and the second format is compatible with the data storage system. For example, the real-time data adapter212and the staging data adapter214can process the electronic content prior to moving it to the data storage218. The processing can include changing the format and/or size of the electronic content. For example, changing the format includes changing a text file to a Portable Document Format (PDF). In some implementations, the data flow adapter208can process the electronic content received from the client application204to change the format and/or size of the electronic content.

In some implementations, the server system generates a copy of the electronic content, for example, by the staging data adapter. The electronic content moved from the data staging memory to the data storage system can be the copy of the electronic content. Subsequent to the copy of the electronic content being moved to the data storage, the server system can erase the electronic content from the data staging memory (e.g., from the in-memory storage210-1and/or the persistence storage210-2). The erasing can be performed periodically (e.g., once a day, once a week, or once a month). The erasing can be performed automatically or in response to an indication that the staging memory includes electronic content that has already been stored at the data storage system. The in-memory storage210-1and the persistence storage210-2can be erased at different frequencies. For example, the in-memory storage210-1is erased once a day while the persistence storage210-2is erased once a week.

In some implementations, the processes300include receiving electronic content at a first adapter of a first server system (e.g., the data flow adapter208of the server system202inFIG.2), The electronic content is to be stored at a second server system (e.g., the content management system206), The process includes routing the electronic content from the first adapter to a data staging memory (e.g., the staging memory210) and temporarily storing the electronic content at the data staging memory until the second server system is ready to store the electronic content. The processes300include causing a second data adapter of the first server system (e.g., the staging data adapter214) to poll the data staging memory for at least an indication of electronic content awaiting to be stored at the second server system. The processes also include causing the second data adapter to move the electronic content from the data staging memory to the second server system when the second server system is ready to store the electronic content.

In some implementations, the processes300further include attempting to route the electronic content from the first adapter to the second server system via a third data adapter (e.g., the real-time data adapter212) prior to routing the electronic content from the first adapter to the data staging memory. The third data adapter is configured to automatically forward the received electronic from the first server system to the second server system. The processes300include receiving a first notification indicating that the second server system is unable or unavailable for storing the electronic content. The electronic content is transmitted rerouted from the first adapter to the data staging memory in response to the received first notification.

The processes300described herein provide an electronic content management system capable of ensuring zero RPO when storing electronic content during operational disruptions. In particular, the various paths (e.g., paths I, II, and III illustrated inFIG.2) for transmitting the electronic content from a data flow adapter to a content management system ensures that minimum or zero data is lost when the content management system is temporarily interrupted. The processes300are useful for storing electronic content that has high importance such as legal documents. In some implementations, the RPO provided by the described processes is less than a threshold RPO pre-defined by, for example, the wireless service provider.

Computer System

FIG.4is a block diagram that illustrates an example of a computer system400in which at least some operations described herein can be implemented. As shown, the computer system400can include: one or more processors402, main memory406, non-volatile memory410, a network interface device412, video display device418, an input/output device420, a control device422(e.g., keyboard and pointing device), a drive unit424that includes a storage medium426, and a signal generation device430that are communicatively connected to a bus416. The bus416represents one or more physical buses and/or point-to-point connections that are connected by appropriate bridges, adapters, or controllers. Various common components (e.g., cache memory) are omitted fromFIG.4for brevity. Instead, the computer system400is intended to illustrate a hardware device on which components illustrated or described relative to the examples of the figures and any other components described in this specification can be implemented.

The computer system400can take any suitable physical form. For example, the computing system400can share a similar architecture as that of a server computer, personal computer (PC), tablet computer, mobile telephone, game console, music player, wearable electronic device, network-connected (“smart”) device (e.g., a television or home assistant device), AR/VR systems (e.g., head-mounted display), or any electronic device capable of executing a set of instructions that specify action(s) to be taken by the computing system400. In some implementation, the computer system400can be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) or a distributed system such as a mesh of computer systems or include one or more cloud components in one or more networks. Where appropriate, one or more computer systems400can perform operations in real-time, near real-time, or in batch mode.

The network interface device412enables the computing system400to mediate data in a network414with an entity that is external to the computing system400through any communication protocol supported by the computing system400and the external entity. Examples of the network interface device412include a network adapter card, a wireless network interface card, a router, an access point, a wireless router, a switch, a multilayer switch, a protocol converter, a gateway, a bridge, bridge router, a hub, a digital media receiver, and/or a repeater, as well as all wireless elements noted herein.

The memory (e.g., main memory406, non-volatile memory410, machine-readable medium426) can be local, remote, or distributed. Although shown as a single medium, the machine-readable medium426can include multiple media (e.g., a centralized/distributed database and/or associated caches and servers) that store one or more sets of instructions428. The machine-readable (storage) medium426can include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the computing system400. The machine-readable medium426can be non-transitory or comprise a non-transitory device. In this context, a non-transitory storage medium can include a device that is tangible, meaning that the device has a concrete physical form, although the device can change its physical state. Thus, for example, non-transitory refers to a device remaining tangible despite this change in state.

Although implementations have been described in the context of fully functioning computing devices, the various examples are capable of being distributed as a program product in a variety of forms. Examples of machine-readable storage media, machine-readable media, or computer-readable media include recordable-type media such as volatile and non-volatile memory410, removable flash memory, hard disk drives, optical disks, and transmission-type media such as digital and analog communication links.

In general, the routines executed to implement examples herein can be implemented as part of an operating system or a specific application, component, program, object, module, or sequence of instructions (collectively referred to as “computer programs”). The computer programs typically comprise one or more instructions (e.g., instructions404,408,428) set at various times in various memory and storage devices in computing device(s). When read and executed by the processor402, the instruction(s) cause the computing system400to perform operations to execute elements involving the various aspects of the disclosure.

Remarks

The terms “example”, “embodiment” and “implementation” are used interchangeably. For example, reference to “one example” or “an example” in the disclosure can be, but not necessarily are, references to the same implementation; and, such references mean at least one of the implementations. The appearances of the phrase “in one example” are not necessarily all referring to the same example, nor are separate or alternative examples mutually exclusive of other examples. A feature, structure, or characteristic described in connection with an example can be included in another example of the disclosure. Moreover, various features are described which can be exhibited by some examples and not by others. Similarly, various requirements are described which can be requirements for some examples but no other examples.

The terminology used herein should be interpreted in its broadest reasonable manner, even though it is being used in conjunction with certain specific examples of the invention. The terms used in the disclosure generally have their ordinary meanings in the relevant technical art, within the context of the disclosure, and in the specific context where each term is used. A recital of alternative language or synonyms does not exclude the use of other synonyms. Special significance should not be placed upon whether or not a term is elaborated or discussed herein. The use of highlighting has no influence on the scope and meaning of a term. Further, it will be appreciated that the same thing can be said in more than one way.

Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof means any connection or coupling, either direct or indirect, between two or more elements; the coupling or connection between the elements can be physical, logical, or a combination thereof. Additionally, the words “herein,” “above,” “below,” and words of similar import can refer to this application as a whole and not to any particular portions of this application. Where context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word “or” in reference to a list of two or more items covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list. The term “module” refers broadly to software components, firmware components, and/or hardware components.

While specific examples of technology are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative implementations can perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or sub-combinations. Each of these processes or blocks can be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks can instead be performed or implemented in parallel, or can be performed at different times. Further, any specific numbers noted herein are only examples such that alternative implementations can employ differing values or ranges.

Details of the disclosed implementations can vary considerably in specific implementations while still being encompassed by the disclosed teachings. As noted above, particular terminology used when describing features or aspects of the invention should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the invention with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the invention to the specific examples disclosed herein, unless the above Detailed Description explicitly defines such terms. Accordingly, the actual scope of the invention encompasses not only the disclosed examples, but also all equivalent ways of practicing or implementing the invention under the claims. Some alternative implementations can include additional elements to those implementations described above or include fewer elements.

Any patents and applications and other references noted above, and any that may be listed in accompanying filing papers, are incorporated herein by reference in their entireties, except for any subject matter disclaimers or disavowals, and except to the extent that the incorporated material is inconsistent with the express disclosure herein, in which case the language in this disclosure controls. Aspects of the invention can be modified to employ the systems, functions, and concepts of the various references described above to provide yet further implementations of the invention.

To reduce the number of claims, certain implementations are presented below in certain claim forms, but the applicant contemplates various aspects of an invention in other forms. For example, aspects of a claim can be recited in a means-plus-function form or in other forms, such as being embodied in a computer-readable medium. A claim intended to be interpreted as a mean-plus-function claim will use the words “means for.” However, the use of the term “for” in any other context is not intended to invoke a similar interpretation. The applicant reserves the right to pursue such additional claim forms in either this application or in a continuing application.