public void Run(HostArguments args) { var settings = new Settings(args.ServiceName); var documentStore = new EmbeddableDocumentStore(); var markerFileService = new MarkerFileService(new LoggingSettings(settings.ServiceName).LogPath); new RavenBootstrapper().StartRaven(documentStore, settings, markerFileService, true); if (Environment.UserInteractive) { Console.Out.WriteLine("RavenDB is now accepting requests on {0}", settings.StorageUrl); Console.Out.WriteLine("RavenDB Maintenance Mode - Press Enter to exit"); while (Console.ReadKey().Key != ConsoleKey.Enter) { } documentStore.Dispose(); return; } using (var service = new MaintenanceHost(settings, documentStore)) { service.Run(); } }
public void Run(Settings settings) { var containerBuilder = new ContainerBuilder(); var loggingSettings = new LoggingSettings(settings.ServiceName); containerBuilder.RegisterInstance(loggingSettings); var documentStore = new EmbeddableDocumentStore(); containerBuilder.RegisterInstance(documentStore).As <IDocumentStore>().ExternallyOwned(); containerBuilder.RegisterInstance(settings); containerBuilder.RegisterModule <MigrationsModule>(); var markerFileService = new MarkerFileService(loggingSettings.LogPath); using (documentStore) using (var container = containerBuilder.Build()) { new RavenBootstrapper().StartRaven(documentStore, settings, markerFileService, true); container.Resolve <MigrationsManager>().ApplyMigrations(); } }
public void StartRaven(EmbeddableDocumentStore documentStore, Settings settings, MarkerFileService markerFileService, bool maintenanceMode) { Directory.CreateDirectory(settings.DbPath); documentStore.Listeners.RegisterListener(new SubscriptionsLegacyAddressConverter()); if (settings.RunInMemory) { documentStore.RunInMemory = true; } else { documentStore.DataDirectory = settings.DbPath; documentStore.Configuration.CompiledIndexCacheDirectory = settings.DbPath; } documentStore.UseEmbeddedHttpServer = maintenanceMode || settings.ExposeRavenDB; documentStore.EnlistInDistributedTransactions = false; var localRavenLicense = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RavenLicense.xml"); if (File.Exists(localRavenLicense)) { Logger.InfoFormat("Loading RavenDB license found from {0}", localRavenLicense); documentStore.Configuration.Settings["Raven/License"] = NonBlockingReader.ReadAllTextWithoutLocking(localRavenLicense); } else { Logger.InfoFormat("Loading Embedded RavenDB license"); documentStore.Configuration.Settings["Raven/License"] = ReadLicense(); } //This is affects only remote access to the database in maintenace mode and enables access without authentication documentStore.Configuration.Settings["Raven/AnonymousAccess"] = "Admin"; documentStore.Configuration.Settings["Raven/Licensing/AllowAdminAnonymousAccessForCommercialUse"] = "true"; if (!maintenanceMode) { documentStore.Configuration.Settings.Add("Raven/ActiveBundles", "CustomDocumentExpiration"); } documentStore.Configuration.DisableClusterDiscovery = true; documentStore.Configuration.ResetIndexOnUncleanShutdown = true; documentStore.Configuration.Port = settings.DatabaseMaintenancePort; documentStore.Configuration.HostName = settings.Hostname == "*" || settings.Hostname == "+" ? "localhost" : settings.Hostname; documentStore.Conventions.SaveEnumsAsIntegers = true; documentStore.Configuration.Catalog.Catalogs.Add(new AssemblyCatalog(GetType().Assembly)); using (markerFileService.CreateMarker("datamigration.marker")) { documentStore.Initialize(); } Logger.Info("Index creation started"); IndexCreation.CreateIndexes(typeof(RavenBootstrapper).Assembly, documentStore); PurgeKnownEndpointsWithTemporaryIdsThatAreDuplicate(documentStore); }