From 804fc04fd2f65b890822053a956e0f65a4702317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yoann=20Rodi=C3=A8re?= Date: Fri, 28 Feb 2020 10:39:38 +0100 Subject: [PATCH] HSEARCH-3759 Clarify that backends/indexes in SearchIntegrationPartialBuildStateImpl are not "partially built" but rather "not started" --- ...State.java => BackendNonStartedState.java} | 16 +++---- .../impl/IndexManagerBuildingStateHolder.java | 22 ++++----- ....java => IndexManagerNonStartedState.java} | 18 +++---- .../impl/SearchIntegrationBuilderImpl.java | 4 +- ...earchIntegrationPartialBuildStateImpl.java | 48 +++++++++---------- 5 files changed, 54 insertions(+), 54 deletions(-) rename engine/src/main/java/org/hibernate/search/engine/common/impl/{BackendPartialBuildState.java => BackendNonStartedState.java} (76%) rename engine/src/main/java/org/hibernate/search/engine/common/impl/{IndexManagerPartialBuildState.java => IndexManagerNonStartedState.java} (80%) diff --git a/engine/src/main/java/org/hibernate/search/engine/common/impl/BackendPartialBuildState.java b/engine/src/main/java/org/hibernate/search/engine/common/impl/BackendNonStartedState.java similarity index 76% rename from engine/src/main/java/org/hibernate/search/engine/common/impl/BackendPartialBuildState.java rename to engine/src/main/java/org/hibernate/search/engine/common/impl/BackendNonStartedState.java index 5b4dfbfb958..169e74c03db 100644 --- a/engine/src/main/java/org/hibernate/search/engine/common/impl/BackendPartialBuildState.java +++ b/engine/src/main/java/org/hibernate/search/engine/common/impl/BackendNonStartedState.java @@ -14,21 +14,21 @@ import org.hibernate.search.engine.reporting.spi.ContextualFailureCollector; import org.hibernate.search.engine.reporting.spi.EventContexts; -class BackendPartialBuildState { +class BackendNonStartedState { private final String backendName; - private final BackendImplementor partiallyBuiltBackend; + private final BackendImplementor backend; - BackendPartialBuildState(String backendName, BackendImplementor partiallyBuiltBackend) { + BackendNonStartedState(String backendName, BackendImplementor backend) { this.backendName = backendName; - this.partiallyBuiltBackend = partiallyBuiltBackend; + this.backend = backend; } void closeOnFailure() { - partiallyBuiltBackend.stop(); + backend.stop(); } - BackendImplementor finalizeBuild(RootFailureCollector rootFailureCollector, + BackendImplementor start(RootFailureCollector rootFailureCollector, BeanResolver beanResolver, ConfigurationPropertySource rootPropertySource) { ContextualFailureCollector backendFailureCollector = @@ -41,11 +41,11 @@ BackendImplementor finalizeBuild(RootFailureCollector rootFailureCollector, backendPropertySource ); try { - partiallyBuiltBackend.start( startContext ); + backend.start( startContext ); } catch (RuntimeException e) { backendFailureCollector.add( e ); } - return partiallyBuiltBackend; // The backend is now fully built + return backend; // The backend is now started } } diff --git a/engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerBuildingStateHolder.java b/engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerBuildingStateHolder.java index 8fba40ec80a..ee70c7c167b 100644 --- a/engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerBuildingStateHolder.java +++ b/engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerBuildingStateHolder.java @@ -113,20 +113,20 @@ private String getDefaultBackendName() { } } - Map getBackendPartialBuildStates() { + Map getBackendNonStartedStates() { // Use a LinkedHashMap for deterministic iteration - Map backendsByName = new LinkedHashMap<>(); + Map backendsByName = new LinkedHashMap<>(); for ( Map.Entry entry : backendBuildStateByName.entrySet() ) { - backendsByName.put( entry.getKey(), entry.getValue().getPartiallyBuilt() ); + backendsByName.put( entry.getKey(), entry.getValue().getNonStartedState() ); } return backendsByName; } - Map getIndexManagersByName() { + Map getIndexManagersNonStartedStates() { // Use a LinkedHashMap for deterministic iteration - Map indexManagersByName = new LinkedHashMap<>(); + Map indexManagersByName = new LinkedHashMap<>(); for ( Map.Entry entry : indexManagerBuildStateByName.entrySet() ) { - indexManagersByName.put( entry.getKey(), entry.getValue().getPartialBuildState() ); + indexManagersByName.put( entry.getKey(), entry.getValue().getNonStartedState() ); } return indexManagersByName; } @@ -196,12 +196,12 @@ void closeOnFailure() { backend.stop(); } - BackendPartialBuildState getPartiallyBuilt() { - return new BackendPartialBuildState( backendName, backend ); + BackendNonStartedState getNonStartedState() { + return new BackendNonStartedState( backendName, backend ); } } - private class IndexManagerInitialBuildState implements IndexManagerBuildingState { + private static class IndexManagerInitialBuildState implements IndexManagerBuildingState { private final String backendName; private final String indexName; @@ -250,14 +250,14 @@ public IndexManagerImplementor build() { return indexManager; } - IndexManagerPartialBuildState getPartialBuildState() { + IndexManagerNonStartedState getNonStartedState() { if ( indexManager == null ) { throw new AssertionFailure( "Index manager " + indexName + " was not built by the mapper as expected." + " There is probably a bug in the mapper implementation." ); } - return new IndexManagerPartialBuildState( backendName, indexName, indexManager ); + return new IndexManagerNonStartedState( backendName, indexName, indexManager ); } } diff --git a/engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerPartialBuildState.java b/engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerNonStartedState.java similarity index 80% rename from engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerPartialBuildState.java rename to engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerNonStartedState.java index 88c39f2f25e..07b7ff63f6b 100644 --- a/engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerPartialBuildState.java +++ b/engine/src/main/java/org/hibernate/search/engine/common/impl/IndexManagerNonStartedState.java @@ -18,24 +18,24 @@ import org.hibernate.search.util.common.impl.Futures; import org.hibernate.search.util.common.impl.Throwables; -class IndexManagerPartialBuildState { +class IndexManagerNonStartedState { private final String backendName; private final String indexName; - private final IndexManagerImplementor partiallyBuiltIndexManager; + private final IndexManagerImplementor indexManager; - IndexManagerPartialBuildState(String backendName, - String indexName, IndexManagerImplementor partiallyBuiltIndexManager) { + IndexManagerNonStartedState(String backendName, + String indexName, IndexManagerImplementor indexManager) { this.backendName = backendName; this.indexName = indexName; - this.partiallyBuiltIndexManager = partiallyBuiltIndexManager; + this.indexManager = indexManager; } void closeOnFailure() { - partiallyBuiltIndexManager.stop(); + indexManager.stop(); } - CompletableFuture finalizeBuild(RootFailureCollector rootFailureCollector, + CompletableFuture start(RootFailureCollector rootFailureCollector, BeanResolver beanResolver, ConfigurationPropertySource rootPropertySource) { ContextualFailureCollector indexFailureCollector = @@ -51,7 +51,7 @@ CompletableFuture finalizeBuild(RootFailureCollector rootFailureCollector, IndexManagerStartContextImpl startContext = new IndexManagerStartContextImpl( indexFailureCollector, beanResolver, indexPropertySource ); - return partiallyBuiltIndexManager.start( startContext ) + return indexManager.start( startContext ) .exceptionally( Futures.handler( e -> { indexFailureCollector.add( Throwables.expectException( e ) ); return null; @@ -59,6 +59,6 @@ CompletableFuture finalizeBuild(RootFailureCollector rootFailureCollector, } public IndexManagerImplementor getIndexManager() { - return partiallyBuiltIndexManager; + return indexManager; } } diff --git a/engine/src/main/java/org/hibernate/search/engine/common/impl/SearchIntegrationBuilderImpl.java b/engine/src/main/java/org/hibernate/search/engine/common/impl/SearchIntegrationBuilderImpl.java index 4411762e131..5f4a186db0d 100644 --- a/engine/src/main/java/org/hibernate/search/engine/common/impl/SearchIntegrationBuilderImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/common/impl/SearchIntegrationBuilderImpl.java @@ -264,8 +264,8 @@ public SearchIntegrationPartialBuildState prepareBuild() { failureHandlerHolder, threadPoolProvider, partiallyBuiltMappings, - indexManagerBuildingStateHolder.getBackendPartialBuildStates(), - indexManagerBuildingStateHolder.getIndexManagersByName(), + indexManagerBuildingStateHolder.getBackendNonStartedStates(), + indexManagerBuildingStateHolder.getIndexManagersNonStartedStates(), propertyChecker ); } diff --git a/engine/src/main/java/org/hibernate/search/engine/common/impl/SearchIntegrationPartialBuildStateImpl.java b/engine/src/main/java/org/hibernate/search/engine/common/impl/SearchIntegrationPartialBuildStateImpl.java index 16fd9849d60..cb6469fe19f 100644 --- a/engine/src/main/java/org/hibernate/search/engine/common/impl/SearchIntegrationPartialBuildStateImpl.java +++ b/engine/src/main/java/org/hibernate/search/engine/common/impl/SearchIntegrationPartialBuildStateImpl.java @@ -43,29 +43,30 @@ class SearchIntegrationPartialBuildStateImpl implements SearchIntegrationPartial private final ThreadPoolProviderImpl threadPoolProvider; private final Map, MappingPartialBuildState> partiallyBuiltMappings; - private final List> fullyBuiltMappings = new ArrayList<>(); - private final Map partiallyBuiltBackends; + private final Map nonStartedBackends; + private final Map nonStartedIndexManagers; + private final ConfigurationPropertyChecker partialConfigurationPropertyChecker; - private final Map fullyBuiltBackends = new LinkedHashMap<>(); - private final Map partiallyBuiltIndexManagers; - private final Map fullyBuiltIndexManagers = new LinkedHashMap<>(); + private final List> fullyBuiltMappings = new ArrayList<>(); + private final Map startedBackends = new LinkedHashMap<>(); + private final Map startedIndexManagers = new LinkedHashMap<>(); SearchIntegrationPartialBuildStateImpl( BeanProvider beanProvider, BeanResolver beanResolver, BeanHolder failureHandlerHolder, ThreadPoolProviderImpl threadPoolProvider, Map, MappingPartialBuildState> partiallyBuiltMappings, - Map partiallyBuiltBackends, - Map partiallyBuiltIndexManagers, + Map nonStartedBackends, + Map nonStartedIndexManagers, ConfigurationPropertyChecker partialConfigurationPropertyChecker) { this.beanProvider = beanProvider; this.beanResolver = beanResolver; this.failureHandlerHolder = failureHandlerHolder; this.threadPoolProvider = threadPoolProvider; this.partiallyBuiltMappings = partiallyBuiltMappings; - this.partiallyBuiltBackends = partiallyBuiltBackends; - this.partiallyBuiltIndexManagers = partiallyBuiltIndexManagers; + this.nonStartedBackends = nonStartedBackends; + this.nonStartedIndexManagers = nonStartedIndexManagers; this.partialConfigurationPropertyChecker = partialConfigurationPropertyChecker; } @@ -74,10 +75,10 @@ public void closeOnFailure() { try ( Closer closer = new Closer<>() ) { closer.pushAll( MappingPartialBuildState::closeOnFailure, partiallyBuiltMappings.values() ); closer.pushAll( MappingImplementor::close, fullyBuiltMappings ); - closer.pushAll( IndexManagerPartialBuildState::closeOnFailure, partiallyBuiltIndexManagers.values() ); - closer.pushAll( IndexManagerImplementor::stop, fullyBuiltIndexManagers.values() ); - closer.pushAll( BackendPartialBuildState::closeOnFailure, partiallyBuiltBackends.values() ); - closer.pushAll( BackendImplementor::stop, fullyBuiltBackends.values() ); + closer.pushAll( IndexManagerNonStartedState::closeOnFailure, nonStartedIndexManagers.values() ); + closer.pushAll( IndexManagerImplementor::stop, startedIndexManagers.values() ); + closer.pushAll( BackendNonStartedState::closeOnFailure, nonStartedBackends.values() ); + closer.pushAll( BackendImplementor::stop, startedBackends.values() ); closer.pushAll( ThreadPoolProviderImpl::close, threadPoolProvider ); closer.pushAll( BeanHolder::close, failureHandlerHolder ); closer.pushAll( BeanProvider::close, beanProvider ); @@ -140,30 +141,29 @@ public SearchIntegration finalizeIntegration() { new RootFailureCollector( EngineEventContextMessages.INSTANCE.bootstrap() ); // Start backends - for ( Map.Entry entry : partiallyBuiltBackends.entrySet() ) { + for ( Map.Entry entry : nonStartedBackends.entrySet() ) { // TODO HSEARCH-3084 perform backend initialization in parallel for all backends? - fullyBuiltBackends.put( + startedBackends.put( entry.getKey(), - entry.getValue().finalizeBuild( failureCollector, beanResolver, propertySource ) + entry.getValue().start( failureCollector, beanResolver, propertySource ) ); } failureCollector.checkNoFailure(); // Start indexes - CompletableFuture[] indexManagerFutures = new CompletableFuture[partiallyBuiltIndexManagers.size()]; + CompletableFuture[] indexManagerFutures = new CompletableFuture[nonStartedIndexManagers.size()]; int indexManagerIndex = 0; // Start - for ( IndexManagerPartialBuildState state : partiallyBuiltIndexManagers.values() ) { - indexManagerFutures[indexManagerIndex] = - state.finalizeBuild( failureCollector, beanResolver, propertySource ); + for ( IndexManagerNonStartedState state : nonStartedIndexManagers.values() ) { + indexManagerFutures[indexManagerIndex] = state.start( failureCollector, beanResolver, propertySource ); ++indexManagerIndex; } // Wait for the starting operation to finish Futures.unwrappedExceptionJoin( CompletableFuture.allOf( indexManagerFutures ) ); failureCollector.checkNoFailure(); // Everything went well: register the index managers - for ( Map.Entry entry : partiallyBuiltIndexManagers.entrySet() ) { - fullyBuiltIndexManagers.put( + for ( Map.Entry entry : nonStartedIndexManagers.entrySet() ) { + startedIndexManagers.put( entry.getKey(), entry.getValue().getIndexManager() ); @@ -176,8 +176,8 @@ public SearchIntegration finalizeIntegration() { failureHandlerHolder, threadPoolProvider, fullyBuiltMappings, - fullyBuiltBackends, - fullyBuiltIndexManagers + startedBackends, + startedIndexManagers ); } }