//--- Methods --- public void Rebuild() { _eventSink.IndexRebuildStart(_now); var count = 0; Action throttle = () => { if (++count % 100 == 0) { Thread.Sleep(200); } }; var pages = new HashSet <ulong>(); foreach (var page in _pageBL.GetAllPagesChunked(_indexNameSpaceWhitelist)) { throttle(); _eventSink.PagePoke(_now, page, _currentUser); pages.Add(page.ID); uint commentCount; foreach (var comment in _commentBL.RetrieveCommentsForPage(page, CommentFilter.NONDELETED, false, null, SortDirection.UNDEFINED, 0, uint.MaxValue, out commentCount)) { throttle(); _eventSink.CommentPoke(_now, comment, page, _currentUser); } } _log.DebugFormat("page queueing completed"); foreach (var att in _attachmentBL.GetAllAttachementsChunked()) { if (!pages.Contains(att.ParentPageId.GetValueOrDefault())) { continue; } throttle(); _eventSink.AttachmentPoke(_now, att); } _log.DebugFormat("file queueing completed"); foreach (var user in _userBL.GetAllUsers()) { throttle(); _eventSink.UserUpdate(_now, user); } _log.DebugFormat("completed re-index event queueing"); }