Disconnected synchronization

This topic applies to ArcGIS for Desktop Standard and ArcGIS for Desktop Advanced only.

To synchronize replicas in a disconnected environment, you must exchange messages manually. This is achieved by exporting a message from one replica to a file and importing the message from the file to the relative replica. In disconnected systems, files can be transported on media, such as CDs or DVDs, and sent via a distribution agent such as a private courier, USPS, and so on.

At any time, a replica can be either a data sender or a data receiver. A data sender exports data change messages to delta files that contain changes to be applied to the relative replica. A data receiver exports acknowledgment messages to acknowledgment files to confirm what it has received. You can determine whether a replica is a data sender or a data receiver by checking the replica status in the Replica Manager in ArcMap. See A quick tour of replica management for information on Replica Manager.

It is important for the data receiver to export acknowledgment messages as often as possible. If no acknowledgment messages are received, the data sender resends changes by default, and maintains the information needed to resend changes until those changes are acknowledged. As a result, the data sender's geodatabase can become large, and subsequent data change messages can also become large.

An ideal, although not required, practice is for the data receiver to send an acknowledgment message after receiving each data change message. It is also important to note that one acknowledgment message acknowledges all data change messages. For example, if a replica receives three data change messages and imports each, it can send a single acknowledgment message to acknowledge all three.

The following shows the parent replica sending changes to the child replica and receiving an acknowledgment message from the child. Here, the parent is the data sender, and the child is the data receiver.

Parent replica is the data change sender; child replica is the data receiver and sends an acknowledgment of the changes back to the parent

In two-way replicas, the data sender and data receiver can also switch roles. The switch is initiated by the data sender when it sends a final data change message that includes instructions to switch roles. Once the message has been imported by the data receiver, the roles are switched, and the system is ready to send data in the opposite direction.

The following diagram shows the parent replica sending a data change message with instructions to switch roles. When the parent replica exports the message, it becomes the data receiver. When the child receives the message, it becomes the data sender. The child replica then sends a data change message to the parent.

Data change sent from the parent replica contains instructions to switch roles, making the child replica the data sender

As mentioned previously, two-way replicas use data change and acknowledgment messages and can switch roles. With one-way replicas, however, you cannot switch roles. For one-way parent to child replicas, the parent is always the data sender. For one-way child to parent replicas, the child is always the data sender. In either case, it is still important for the data receiver to send acknowledgment messages. For checkout replicas, the child is always the data sender, and no acknowledgment messages are needed. For more information on types of replicas, see Replication types.

So far, this topic has described a basic message exchange pattern in which messages are sent back and forth between the parent replica and the child replica. If you continue with this pattern, the system will function properly and even correct itself if messages are lost. However, you may also want to consider the following specific message exchange scenarios.

Resending unacknowledged messages

The system allows replicas to resend unacknowledged data changes. You may want do this when, as a data sender, you either know or suspect that an earlier data change message has been lost and needs to be resent. Another option is to wait until the next time you send data changes, since by default, this includes both new changes and any unacknowledged changes.

The following diagram shows a case where you need to resend unacknowledged data changes. Here, the parent sends a data change message and switches from sender to receiver. The message, however, gets lost, leaving both the parent and the child as data receivers. To solve this issue, the option to re-export unacknowledged messages is available to the data receiver that has just switched roles. In this case, it allows the parent to resend the message to switch roles to the child.

If changes have not been acknowledged, the data sender can resend the data change message

Acknowledging changes after switching roles

After switching roles in a two-way replica, the option to export an acknowledgment message is available for the data sender to acknowledge the message that switched the roles. Another option is to send a data change message, since it will implicitly acknowledge this message. If you don't plan on sending a data change message in the near future, however, you should send an acknowledgment message.

In the following diagram, the parent sends a data change message that switches roles. When the child receives the message, it becomes a data sender, but since it has just switched, the system still allows it to send an acknowledgment message.

Acknowledging changes after switching roles

Switching roles without sending data changes

It is possible to send a data change message with instructions to switch roles but without any data changes. You may want to do this if, as the data sender, you need to get changes from the data receiver but are not ready to send data changes. See Exporting a data change message for more information on sending a message to switch roles without sending any data.

Bypassing the acknowledgment message file

When sending data changes, all new data changes and unacknowledged data changes are sent by default. New changes are any inserts, updates, and deletes applied to the replica version since the last data change message was exported. Unacknowledged data changes include previously exported changes for which you have not received an acknowledgment. If you have sent several data change messages for which you have not received an acknowledgment, the data change files can become large.

The best solution is for the data receiver to send an acknowledgment message file. However, depending on the communication system, this may not always be possible. For example, if the replicas are disconnected and sending an acknowledgment file requires shipping media to exchange files, you might prefer to send an email to the person managing the data sender replica stating that you received and imported the data changes.

Be aware, though, that bypassing the acknowledgment message file complicates synchronization management.

Related Topics

3/13/2015