コード例 #1
0
 public override void Dispose()
 {
     try
     {
         _documentDatabase?.Dispose();
     }
     finally
     {
         base.Dispose();
     }
 }
コード例 #2
0
ファイル: HttpServer.cs プロジェクト: jon-adams/ravendb
		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;
		}
コード例 #3
0
 public override void Dispose()
 {
     DocumentDatabase.Dispose();
     base.Dispose();
 }
コード例 #4
0
 public override void Dispose()
 {
     db.Dispose();
     base.Dispose();
 }
コード例 #5
0
 public void Dispose()
 {
     server.Dispose();
     database.Dispose();
 }