RavenDB The database **** is currently locked 因为正在检查我们是否需要重新创建索引

RavenDB The database **** is currently locked because Checking if we need to recreate indexes

我正在使用 RavenTestDriver 进行单元测试。 这是我的测试配置:

  ConfigureServer(new TestServerOptions
            {
                CommandLineArgs = new System.Collections.Generic.List<string> { "--RunInMemory=true", },
                FrameworkVersion = null,
            }) ;
            IDocumentStore store = GetDocumentStore();
            try
            {
                store.Maintenance.ForDatabase(ravenTestDatabaseName).Send(new GetStatisticsOperation());
            }
            catch (DatabaseDoesNotExistException)
            {
                    store.Maintenance.Server.Send(new CreateDatabaseOperation(new DatabaseRecord(ravenTestDatabaseName)));
            }
            session = store.OpenAsyncSession(new SessionOptions()
            {
                Database=ravenTestDatabaseName,
            });
             var hostBuilder = easy.api.Program.CreateHostBuilder(new string[0])
         .ConfigureWebHost(webHostBuilder =>
         {
             webHostBuilder.UseTestServer();
         })
        .ConfigureServices(services =>
        {
                services.AddScoped<ICurrentUserService, InitRequest>();
                services.AddScoped<ICacheStorage>(provider=>
                {
                    return new Mock<ICacheStorage>().Object;
                });

            services.AddRavenDbAsyncSession(GetDocumentStore(new GetDocumentStoreOptions()));
                services.AddScoped<IAsyncDocumentSession>((c) =>
            {
                return store.OpenAsyncSession(new SessionOptions()
                {
                    Database=ravenTestDatabaseName,
                });
                });
        });

所以我的解决方案中有几个测试:

当我 运行 每个测试单独测试通过时。但是当我 运行 所有测试在一起时,我得到这个错误:

 Raven.Client.Exceptions.Database.DatabaseDisabledException : Raven.Client.Exceptions.Database.DatabaseDisabledException: The database Test-Server is currently locked because Checking if we need to recreate indexes
   at Raven.Server.Documents.DatabasesLandlord.UnloadAndLockDatabase(String dbName, String reason) in C:\Builds\RavenDB-Stable-5.2000\src\Raven.Server\Documents\DatabasesLandlord.cs:line 907
   at Raven.Server.Web.System.AdminDatabasesHandler.Put() in C:\Builds\RavenDB-Stable-5.2000\src\Raven.Server\Web\System\AdminDatabasesHandler.cs:line 327
   at Raven.Server.Routing.RequestRouter.HandlePath(RequestHandlerContext reqCtx) in C:\Builds\RavenDB-Stable-5.2000\src\Raven.Server\Routing\RequestRouter.cs:line 349
   at Raven.Server.RavenServerStartup.RequestHandler(HttpContext context) in C:\Builds\RavenDB-Stable-5.2000\src\Raven.Server\RavenServerStartup.cs:line 174
The server at /admin/databases?name=Test-Server&replicationFactor=1&raft-request-id=d9a39f56-a1ad-44b7-b6e5-b195c1143c4b responded with status code: ServiceUnavailable.

我只是将数据库名称留空。

public class TestHostBuilder : RavenTestDriver, IAsyncLifetime
    {

        public HttpClient httpClient = null;
        public IDocumentStore documentStore = null;
        public async Task InitializeAsync()
        {
            documentStore = GetDocumentStore();
            var hostBuilder = easy.api.Program.CreateHostBuilder(new string[0])
        .ConfigureWebHost(webHostBuilder =>
        {
            webHostBuilder.UseTestServer();
        })
     
       .ConfigureServices(services =>
       {
           services.AddScoped<ICurrentUserService, InitRequest>();
           services.AddScoped<ICacheStorage>(provider =>
           {
               return new Mock<ICacheStorage>().Object;
           });
           services.AddRavenDbAsyncSession(GetDocumentStore(new GetDocumentStoreOptions()));
           services.AddTransient<IAsyncDocumentSession>((c) =>
            {
                return documentStore.OpenAsyncSession();
            });
           
       });
            var host = hostBuilder.Start();
            httpClient = host.GetTestClient();
        }
        public Task DisposeAsync()=> Task.CompletedTask;
    }