internal Status UpdateIndex() { UpdateJob proposedJob = Storage.CreateUpdateJob(ViewsInGroup().Select(x => x.Storage)); UpdateJob nextJob = null; var updateQueue = _UpdateQueueFactory.ListForGroup(GroupName()); updateQueue.Lock(); try { if (updateQueue.Count > 0) { nextJob = updateQueue.FirstOrDefault(x => x.Equals(proposedJob)); if (nextJob == null) { QueueUpdate(proposedJob); nextJob = proposedJob; } } else { QueueUpdate(proposedJob); nextJob = proposedJob; nextJob.Run(); } } finally { updateQueue.Unlock(); } nextJob.Wait(); return(nextJob.Result); }
internal Status UpdateIndex() { //TODO: View grouping var viewsToUpdate = new List <IViewStore> { Storage }; UpdateJob proposedJob = Storage.CreateUpdateJob(viewsToUpdate); UpdateJob nextJob = null; if (_updateQueue.TryPeek(out nextJob)) { if (!nextJob.LastSequences.SequenceEqual(proposedJob.LastSequences)) { QueueUpdate(proposedJob); nextJob = proposedJob; } } else { QueueUpdate(proposedJob); nextJob = proposedJob; } nextJob.Wait(); return(nextJob.Result); }
internal Status UpdateIndex() { var viewsToUpdate = ViewsInGroup(); UpdateJob proposedJob = Storage.CreateUpdateJob(viewsToUpdate); UpdateJob nextJob = null; if (_updateQueue.TryPeek(out nextJob)) { if (!nextJob.LastSequences.SequenceEqual(proposedJob.LastSequences)) { QueueUpdate(proposedJob); nextJob = proposedJob; } } else { QueueUpdate(proposedJob); nextJob = proposedJob; } nextJob.Wait(); return(nextJob.Result); }