A computer-readable data storage medium comprising instructions that, when executed by a processing unit of a source server system in a high-availability server system, cause the source server system to:
- automatically perform a first crawl-indexing process that updates a search index of a mailbox database based on un-indexed message objects stored in a crawl-mode mailbox in the mailbox database;
- automatically perform a first event-indexing process that processes events in an event list, thereby updating the search index based on ones of the events stored in the event list that represent changes to an event-mode mailbox in the mailbox database;
- automatically suspend, in response to a restoration event, the first event-indexing process and the first crawl-indexing process;
- send from the source server system to a target server system in the high-availability server system, after the first event-indexing process and the first crawl-indexing process have been suspended, a first set of data that the target server system uses to generate a copy of the mailbox database;
- send from the source server system to the target server system, after the event-indexing process and the crawl-indexing process have been suspended, a second set of data that the target server system uses to generate a copy of the search index;
- send from the source server system to the target server system, after the event-indexing process and the crawl-indexing process have been suspended, a third set of data that the target server system uses to generate a copy of the event list;
- send from the source server system to the target server system, after the event-indexing process and the crawl-indexing process have been suspended, a watermark that indicates a most recent event in the event list that the first event-indexing process has processed;
- resume, after sending the first set of data, the second set of data, the third set of data, and the watermark, the first event-indexing process and the first crawl-indexing process;
- instruct, after sending the first set of data, the second set of data, the third set of data, and the watermark, the target server system to begin performing a second event-indexing process that processes events in the copy of the event list, thereby updating the copy of the search index based on ones of the events in the copy of the event list that represent changes to message objects stored in an event-mode mailbox in the copy of the mailbox database, starting with an event in the copy of the event list that follows the watermark;
- instruct, after sending the first set of data, the second set of data, the third set of data, and the watermark, the target server system to begin performing a second crawl-indexing process that updates the copy of the search index based on un-indexed message objects stored in a crawl-mode mailbox in the copy of the mailbox database;
- automatically poll an active server system in the high-availability server system for new message events;
- upon receiving a new message event from the active server system, automatically apply a change represented by the new message event to the mailbox database;
- and
- automatically add the new message event to the event list.