public override void Dispose() { try { _documentDatabase?.Dispose(); } finally { base.Dispose(); } }
protected bool TryGetOrCreateResourceStore(string tenantId, out Task<DocumentDatabase> database) { if (ResourcesStoresCache.TryGetValue(tenantId, out database)) { if (database.IsFaulted && database.Exception != null) { // if we are here, there is an error, and if there is an error, we need to clear it from the // resource store cache so we can try to reload it. // Note that we return the faulted task anyway, because we need the user to look at the error if (database.Exception.Data.Contains("Raven/KeepInResourceStore") == false) { Task<DocumentDatabase> val; ResourcesStoresCache.TryRemove(tenantId, out val); } } return true; } if (LockedDatabases.Contains(tenantId)) throw new InvalidOperationException("Database '" + tenantId + "' is currently locked and cannot be accessed"); var config = CreateTenantConfiguration(tenantId); if (config == null) return false; database = ResourcesStoresCache.GetOrAdd(tenantId, __ => Task.Factory.StartNew(() => { var transportState = databaseTransportStates.GetOrAdd(tenantId, s => new TransportState()); var documentDatabase = new DocumentDatabase(config, transportState); try { AssertLicenseParameters(config); documentDatabase.SpinBackgroundWorkers(); InitializeRequestResponders(documentDatabase); // if we have a very long init process, make sure that we reset the last idle time for this db. documentDatabase.WorkContext.UpdateFoundWork(); } catch (Exception) { documentDatabase.Dispose(); throw; } documentDatabase.Disposing += DocumentDatabaseDisposingStarted; documentDatabase.DisposingEnded += DocumentDatabaseDisposingEnded; return documentDatabase; }).ContinueWith(task => { if (task.Status == TaskStatus.Faulted) // this observes the task exception { logger.WarnException("Failed to create database " + tenantId, task.Exception); } return task; }).Unwrap()); return true; }
public override void Dispose() { DocumentDatabase.Dispose(); base.Dispose(); }
public override void Dispose() { db.Dispose(); base.Dispose(); }
public void Dispose() { server.Dispose(); database.Dispose(); }