internal static void Commit(bool reopenReader = true) { var gapData = MissingActivityHandler.GetGapString(); var gapString = gapData.Item1; var maxActivityId = gapData.Item2; //_writerRestartLock.EnterReadLock(); //try //{ // _writer.Commit(IndexManager.CreateCommitUserData(maxActivityId, gapString)); // if (reopenReader) // ReopenReader(); //} //finally //{ // _writerRestartLock.ExitReadLock(); //} using (var wrFrame = IndexWriterFrame.Get(false)) // // Commit { _writer.Commit(IndexManager.CreateCommitUserData(maxActivityId, gapString)); if (reopenReader) { ReopenReader(); } } //in case of shutdown, reopen is not needed WriteCommitLog("Committed", null, null, null, null, gapString, maxActivityId); Interlocked.Exchange(ref _activities, 0); _delayCycle = 0; }
/*======================================================================================================= IIndexPopulator Members */ // caller: IndexPopulator.Populator, Import.Importer, Tests.Initializer, RunOnce public void ClearAndPopulateAll(bool backup = true) { var lastActivityId = IndexingActivityManager.GetLastActivityId(); var commitData = IndexManager.CreateCommitUserData(lastActivityId); using (var traceOperation = Logger.TraceOperation("IndexPopulator ClearAndPopulateAll")) { //-- recreate var writer = IndexManager.GetIndexWriter(true); try { foreach (var docData in StorageContext.Search.LoadIndexDocumentsByPath("/Root")) { var doc = IndexDocumentInfo.GetDocument(docData); if (doc == null) // indexing disabled { continue; } writer.AddDocument(doc); OnNodeIndexed(docData.Path); } RepositoryInstance.Instance.ConsoleWrite(" Commiting ... "); writer.Commit(commitData); RepositoryInstance.Instance.ConsoleWriteLine("ok"); RepositoryInstance.Instance.ConsoleWrite(" Optimizing ... "); writer.Optimize(); RepositoryInstance.Instance.ConsoleWriteLine("ok"); } finally { writer.Close(); } RepositoryInstance.Instance.ConsoleWrite(" Deleting indexing activities ... "); IndexingActivityManager.DeleteAllActivities(); RepositoryInstance.Instance.ConsoleWriteLine("ok"); if (backup) { RepositoryInstance.Instance.ConsoleWrite(" Making backup ... "); BackupTools.BackupIndexImmediatelly(); RepositoryInstance.Instance.ConsoleWriteLine("ok"); } traceOperation.IsSuccessful = true; } }