public Query ( string index, IndexQuery query ) : QueryResult | ||
index | string | |
query | IndexQuery | |
return | QueryResult |
public void AfterBackupRestoreCanQueryIndex_CreatedAfterRestore() { db.Put("ayende", null, RavenJObject.Parse("{'email':'*****@*****.**'}"), RavenJObject.Parse("{'Raven-Entity-Name':'Users'}"), null); db.StartBackup(BackupDir, false); WaitForBackup(db, true); db.Dispose(); DeleteIfExists(DataDir); DocumentDatabase.Restore(new RavenConfiguration(), BackupDir, DataDir); db = new DocumentDatabase(new RavenConfiguration { DataDirectory = DataDir }); db.SpinBackgroundWorkers(); QueryResult queryResult; do { queryResult = db.Query("Raven/DocumentsByEntityName", new IndexQuery { Query = "Tag:[[Users]]", PageSize = 10 }); } while (queryResult.IsStale); Assert.Equal(1, queryResult.Results.Count); }
public void AfterBackupRestoreCanQueryIndex_CreatedAfterRestore() { db.Put("ayende", null, JObject.Parse("{'email':'*****@*****.**'}"), JObject.Parse("{'Raven-Entity-Name':'Users'}"), null); db.StartBackup("raven.db.test.backup"); WaitForBackup(); db.Dispose(); Directory.Delete("raven.db.test.esent", true); DocumentDatabase.Restore("raven.db.test.backup", "raven.db.test.esent"); db = new DocumentDatabase(new RavenConfiguration { DataDirectory = "raven.db.test.esent" }); db.SpinBackgroundWorkers(); QueryResult queryResult; do { queryResult = db.Query("Raven/DocumentsByEntityName", new IndexQuery { Query = "Tag:`Users`", PageSize = 10 }); } while (queryResult.IsStale); Assert.Equal(1, queryResult.Results.Length); }
public static IList<string> GetRevisionsRequiringActivation(DocumentDatabase database) { var currentTime = SystemTime.UtcNow; database.WaitForIndexToBecomeNonStale(TemporalConstants.PendingRevisionsIndex, currentTime, null); const int pageSize = 1024; var qs = string.Format("{0}:[* TO {1:o}]", Activation, currentTime); var query = new IndexQuery { Start = 0, PageSize = pageSize, Cutoff = currentTime, Query = qs, FieldsToFetch = new[] { Constants.DocumentIdFieldName }, SortedFields = new[] { new SortedField(Activation) } }; var list = new List<string>(); while (true) { var results = database.Query(TemporalConstants.PendingRevisionsIndex, query).Results; list.AddRange(results.Select(x => x.Value<string>(Constants.DocumentIdFieldName))); if (results.Count < pageSize) return list; query.Start += pageSize; } }
public static DateTime GetNextActivationDate(DocumentDatabase database) { var currentTime = SystemTime.UtcNow; database.WaitForIndexToBecomeNonStale(TemporalConstants.PendingRevisionsIndex, currentTime, null); var query = new IndexQuery { Start = 0, PageSize = 1, Cutoff = currentTime, FieldsToFetch = new[] { Activation }, SortedFields = new[] { new SortedField(Activation) } }; var result = database.Query(TemporalConstants.PendingRevisionsIndex, query).Results.FirstOrDefault(); return result == null ? DateTime.MaxValue : result.Value<DateTime>(Activation); }
public void AfterBackupRestoreCanQueryIndex_CreatedAfterRestore() { DeleteIfExists("raven.db.test.backup"); // for full backups, we can't have anything in the target dir db.Put("ayende", null, RavenJObject.Parse("{'email':'*****@*****.**'}"), RavenJObject.Parse("{'Raven-Entity-Name':'Users'}"), null); db.StartBackup("raven.db.test.backup", false); WaitForBackup(true); db.Dispose(); DeleteIfExists("raven.db.test.esent"); DocumentDatabase.Restore(new RavenConfiguration(), "raven.db.test.backup", "raven.db.test.esent"); db = new DocumentDatabase(new RavenConfiguration { DataDirectory = "raven.db.test.esent" }); db.SpinBackgroundWorkers(); QueryResult queryResult; do { queryResult = db.Query("Raven/DocumentsByEntityName", new IndexQuery { Query = "Tag:[[Users]]", PageSize = 10 }); } while (queryResult.IsStale); Assert.Equal(1, queryResult.Results.Count); }
public void AfterFailedRestoreOfIndex_ShouldGenerateWarningAndResetIt() { db.Put("users/1", null, RavenJObject.Parse("{'Name':'Arek'}"), RavenJObject.Parse("{'Raven-Entity-Name':'Users'}"), null); db.Put("users/2", null, RavenJObject.Parse("{'Name':'David'}"), RavenJObject.Parse("{'Raven-Entity-Name':'Users'}"), null); WaitForIndexing(db); db.StartBackup(BackupDir, false, new DatabaseDocument()); WaitForBackup(db, true); db.Put("users/3", null, RavenJObject.Parse("{'Name':'Daniel'}"), RavenJObject.Parse("{'Raven-Entity-Name':'Users'}"), null); WaitForIndexing(db); db.StartBackup(BackupDir, true, new DatabaseDocument()); WaitForBackup(db, true); db.Dispose(); IOExtensions.DeleteDirectory(DataDir); var incrementalDirectories = Directory.GetDirectories(BackupDir, "Inc*"); // delete 'index-files.required-for-index-restore' to make backup corrupted according to the reported error File.Delete(Path.Combine(incrementalDirectories.First(), "Indexes\\Raven%2fDocumentsByEntityName\\index-files.required-for-index-restore")); var sb = new StringBuilder(); DocumentDatabase.Restore(new RavenConfiguration(), BackupDir, DataDir, s => sb.Append(s), defrag: true); Assert.Contains( "Error: Index Raven%2fDocumentsByEntityName could not be restored. All already copied index files was deleted." + " Index will be recreated after launching Raven instance", sb.ToString()); db = new DocumentDatabase(new RavenConfiguration { DataDirectory = DataDir }); db.SpinBackgroundWorkers(); QueryResult queryResult; do { queryResult = db.Query("Raven/DocumentsByEntityName", new IndexQuery { Query = "Tag:[[Users]]", PageSize = 10 }); } while (queryResult.IsStale); Assert.Equal(3, queryResult.Results.Count); }
public void AfterFailedRestoreOfIndex_ShouldGenerateWarningAndResetIt() { db.Put("users/1", null, RavenJObject.Parse("{'Name':'Arek'}"), RavenJObject.Parse("{'Raven-Entity-Name':'Users'}"), null); db.Put("users/2", null, RavenJObject.Parse("{'Name':'David'}"), RavenJObject.Parse("{'Raven-Entity-Name':'Users'}"), null); db.Put("users/3", null, RavenJObject.Parse("{'Name':'Daniel'}"), RavenJObject.Parse("{'Raven-Entity-Name':'Users'}"), null); WaitForIndexing(db); db.StartBackup(BackupDir, false, new DatabaseDocument()); WaitForBackup(db, true); db.Dispose(); IOExtensions.DeleteDirectory(DataDir); // lock file to simulate IOException when restore operation will try to copy this file using ( var file = File.Open(Path.Combine(BackupDir, "Indexes\\Raven%2fDocumentsByEntityName\\segments.gen"), FileMode.Open, FileAccess.ReadWrite, FileShare.None)) { var sb = new StringBuilder(); DocumentDatabase.Restore(new RavenConfiguration(), BackupDir, DataDir, s => sb.Append(s), defrag: true); Assert.Contains( "Error: Index Raven%2fDocumentsByEntityName could not be restored. All already copied index files was deleted." + " Index will be recreated after launching Raven instance", sb.ToString()); } db = new DocumentDatabase(new RavenConfiguration { DataDirectory = DataDir }); db.SpinBackgroundWorkers(); QueryResult queryResult; do { queryResult = db.Query("Raven/DocumentsByEntityName", new IndexQuery { Query = "Tag:[[Users]]", PageSize = 10 }); } while (queryResult.IsStale); Assert.Equal(3, queryResult.Results.Count); }