
Backfill Requests and Backfill Messages
Backfilling occurs when a public folder database determines that it has not received all the updates for a replicated folder (or for the hierarchy) and must therefore retrieve the missing updates from another public folder database.
To streamline the backfill process, Exchange 2007 stores information about missing updates in the backfill array.
The following events may alert a public folder database to missing updates that need to be backfilled:
-
The status information in an incoming replication message indicates that the replica on the public folder database that sent the message has updates that are missing on the receiving database. The receiving database identifies the missing change numbers and stores them in its backfill array.
-
A public folder database starts for the first time. The new database sends status requests to get information about the other databases in the hierarchy. After the corresponding status messages arrive, the database populates its Replication State Table and, if necessary, the backfill array. The backfill array may contain entries for both the hierarchy and for any content replicas that the database must host.
-
An incoming hierarchy message indicates that a new content replica is to be placed in the public folder database. The new database sends status requests to get information about content that might be available for this replica in the other databases in the hierarchy. After the corresponding status messages arrive, the database populates the Replication State Table and, if necessary, the backfill array.
The backfill array stores this information for a specified length of time (called the backfill time-out). If the missing updates arrive in subsequent replication messages during this time, they are removed from the backfill array. The following table lists the default backfill time-out values, which depend on where the missing updates exist and whether they were previously requested.
Default time-outs used for backfill requests
|
Type of request
|
Content exists on a database in the local Active Directory site
|
Content exists on a database in a remote Active Directory site
|
|---|
|
Initial backfill
|
6 hours
|
12 hours
|
|
First backfill retry
|
12 hours
|
24 hours
|
|
Subsequent backfill retries
|
24 hours
|
48 hours
|
If the backfill time-out expires, and the updates are still missing, Exchange creates one or more backfill requests and determines which servers to use as backfill sources.
To select servers to use as a backfill source, Exchange first creates a list of all the servers that have replicas of the folder and then sorts the list according to the following sequence of criteria:
-
Sort according to server status. Servers that are down or unavailable drop to the end of the list.
-
Sort according to preferred backfill server (if any). Exchange checks the public folder database object in Active Directory for a preferred backfill server. This setting is seldom used. In most circumstances, the backfill process operates most efficiently if Exchange selects a backfill server automatically. Most deployments of Exchange do not need a preferred backfill server. Microsoft Product Support Services can provide a script that sets a preferred backfill server if your deployment requires it.
-
Sort according to transport cost (lowest to highest). Servers in the same routing group have priority over servers in remote Active Directory sites.
-
Sort according to Exchange version (newest to oldest).
-
Sort according to the number of necessary changes that are available on the server (largest to smallest). Servers that do not have any of the missing changes are dropped from the list.
If one server does not have all the necessary changes, Exchange selects the next server in the sorted list and sends a backfill request to that server as well. This process is repeated until all of the changes are requested.
If the selected server does not respond to the backfill request, the database marks that server as unavailable and repeats the selection process. Servers that are marked as unavailable move to the end of the list.
Status Requests and Status Messages
In addition to the status information in each replication message, Exchange uses status requests and status messages to determine whether public folders must issue backfill requests.
A public folder database sends a status request under the following circumstances:
-
The database is notified of a change to the list of databases that hold replicas of a folder. For example, if you add a database to the list or remove a database from the list, Exchange replicates this change by using hierarchy update messages. In this case, the database sends a status request that requires every database that contains a replica of the folder to respond.
-
A new database has started for the first time. In this case, the database requests the status of the public folder hierarchy. The database sends a status request that requires every database that supports the public folder tree to respond.
-
A database that has been restored by using the Microsoft Windows Backup tool starts for the first time after the restore completes. In this case, the database requests the status of the public folder hierarchy and all of the folders for which the database contains content replicas. This status request lists two or three databases as required responders. Required responders are databases that support this hierarchy and, according to an internal selection process, are dependable sources of folder content.
To indicate the current state of a particular folder on the sending database, the public folder database sends a status message to another database under the following circumstances:
-
In response to a status request that is sent by another database. The status message is sent only to the requesting database and only if the following are true:
-
The database that received the status request is in the requests list of required responders.
-
The Replication State Table indicates that the database that received the status request has updates that are missing from the database that sent the request.
-
24 hours after the most recent update to a folder was received, if there have been no subsequent updates. Each time the database receives an update for a specific folder, the timer is reset to 24 hours. This status message is sent to the other public folder databases that contain replicas of the updated folder.
If a public folder database receives a status message indicating that the sending database has more recent information about the folder, the receiving database creates a backfill request. If the change numbers are shown to be equal (or the change numbers on the receiving server are more recent), no action is taken. For example, when a new public folder database starts for the first time, it sends status request messages to each database that supports the public folder hierarchy. Each database responds with information about the status of the hierarchy (as tracked by that database). The new database uses this information to identify which replicas (if any) it should have. The new database can then send backfill requests as needed to fill in the replica content.