private void WriteDocuments(JsonTextWriter jsonWriter) { long totalDococCount = 0; long currentDocsCount = 0; Etag currLastEtag = Etag.Empty; storage.Batch(accsesor => totalDococCount = accsesor.Documents.GetDocumentsCount()); try { CancellationToken ct = new CancellationToken(); do { storage.Batch(accsesor => { var docs = accsesor.Documents.GetDocumentsAfter(currLastEtag, BatchSize, ct); foreach (var doc in docs) { doc.ToJson(true).WriteTo(jsonWriter); } currLastEtag = docs.Last().Etag; currentDocsCount += docs.Count(); ReportProgress("documents", currentDocsCount, totalDococCount); }); } while (totalDococCount > currentDocsCount); } catch (Exception e) { ConsoleUtils.PrintErrorAndFail("Failed to export documents, error:" + e.Message); } }
public EsentExportOperation(string dataDirPath) { var dbFullPath = Path.Combine(dataDirPath, "Data"); try { Api.JetCreateInstance(out instance, "instance"); var ravenConfiguration = new RavenConfiguration(); ravenConfiguration.DataDirectory = dataDirPath; ravenConfiguration.Storage.PreventSchemaUpdate = true; ITransactionalStorage storage; var success = StorageExporter.TryToCreateTransactionalStorage(ravenConfiguration, out storage); if (!success) { ConsoleUtils.PrintErrorAndFail("Failed to create transactional storage"); } var configurator = new TransactionalStorageConfigurator(ravenConfiguration, (TransactionalStorage)storage); configurator.ConfigureInstance(instance, dataDirPath); storage.Dispose(); Api.JetInit(ref instance); Api.JetBeginSession(instance, out sesid, null, null); Api.JetAttachDatabase(sesid, dbFullPath, AttachDatabaseGrbit.None); Api.JetOpenDatabase(sesid, dbFullPath, null, out dbid, OpenDatabaseGrbit.None); } catch (Exception e) { ConsoleUtils.PrintErrorAndFail(e.Message, e.StackTrace); } }
private void CreateTransactionalStorage(InMemoryRavenConfiguration ravenConfiguration) { if (String.IsNullOrEmpty(ravenConfiguration.DataDirectory) == false && Directory.Exists(ravenConfiguration.DataDirectory)) { try { TryToCreateTransactionalStorage(ravenConfiguration, out storage); } catch (UnauthorizedAccessException uae) { ConsoleUtils.PrintErrorAndFail(String.Format("Failed to initialize the storage it is probably been locked by RavenDB.\nError message:\n{0}", uae.Message), uae.StackTrace); } catch (InvalidOperationException ioe) { ConsoleUtils.PrintErrorAndFail(String.Format("Failed to initialize the storage it is probably been locked by RavenDB.\nError message:\n{0}", ioe.Message), ioe.StackTrace); } catch (Exception e) { ConsoleUtils.PrintErrorAndFail(e.Message, e.StackTrace); return; } return; } ConsoleUtils.PrintErrorAndFail(string.Format("Could not detect storage file under the given directory:{0}", ravenConfiguration.DataDirectory)); }
private void WriteDocuments(JsonTextWriter jsonWriter) { long totalDocsCount = 0; long currentDocsCount = 0; long previesDocsCount = 0; Etag currLastEtag = DocumentsStartEtag; if (DocumentsStartEtag != Etag.Empty) { ConsoleUtils.ConsoleWriteLineWithColor(ConsoleColor.Yellow, "Starting to export documents as of etag={0}\n" + "TotalDocCount doesn't substract skipped items\n", DocumentsStartEtag); currLastEtag.DecrementBy(1); } storage.Batch(accsesor => totalDocsCount = accsesor.Documents.GetDocumentsCount()); try { CancellationToken ct = new CancellationToken(); do { previesDocsCount = currentDocsCount; storage.Batch(accsesor => { var docs = accsesor.Documents.GetDocumentsAfter(currLastEtag, BatchSize, ct); foreach (var doc in docs) { doc.ToJson(true).WriteTo(jsonWriter); } var last = docs.LastOrDefault(); if (last != null) { currLastEtag = last.Etag; currentDocsCount += docs.Count(); ReportProgress("documents", currentDocsCount, totalDocsCount); } }); } while (currentDocsCount > previesDocsCount); } catch (Exception e) { ConsoleUtils.PrintErrorAndFail("Failed to export documents, error:" + e.Message); } }