From 4c2b0f68ed224abf96f50b5b1b0b49065681e6f0 Mon Sep 17 00:00:00 2001 From: MishaDemianenko Date: Wed, 1 Aug 2018 13:35:05 +0200 Subject: [PATCH] Update lookup od neostore data source in data source manager to use last available database as a default database; update extension lookup to use NeoStoreDataSource directly. --- .../main/java/org/neo4j/kernel/NeoStoreDataSource.java | 1 + .../impl/transaction/state/DataSourceManager.java | 5 +++-- .../impl/pagecache/PageCacheWarmerKernelExtension.java | 10 +++++----- .../PageCacheWarmerKernelExtensionFactory.java | 6 +++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java index 8d5cd836f6df8..11c9e97c9436e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java @@ -349,6 +349,7 @@ public void start() throws IOException dataSourceDependencies.satisfyDependency( monitors ); dataSourceDependencies.satisfyDependency( tokenHolders ); dataSourceDependencies.satisfyDependency( facade ); + dataSourceDependencies.satisfyDependency( this ); life = new LifeSupport(); dataSourceDependencies.satisfyDependency( explicitIndexProvider ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DataSourceManager.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DataSourceManager.java index 9944b41350bce..7504229aca37e 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DataSourceManager.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/transaction/state/DataSourceManager.java @@ -24,6 +24,7 @@ import java.util.function.Supplier; import org.neo4j.helpers.Listeners; +import org.neo4j.helpers.collection.Iterables; import org.neo4j.internal.kernel.api.Kernel; import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.lifecycle.LifeSupport; @@ -83,7 +84,7 @@ public void unregister( NeoStoreDataSource dataSource ) public NeoStoreDataSource getDataSource() { - return dataSources.get( 0 ); + return Iterables.last( dataSources ); } @Override @@ -126,6 +127,6 @@ public void shutdown() @Override public Kernel get() { - return dataSources.get( 0 ).getKernel(); + return getDataSource().getKernel(); } } diff --git a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/PageCacheWarmerKernelExtension.java b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/PageCacheWarmerKernelExtension.java index 5ecb175d6e463..322bf97f78316 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/PageCacheWarmerKernelExtension.java +++ b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/PageCacheWarmerKernelExtension.java @@ -26,8 +26,8 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.AvailabilityGuard; +import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.impl.transaction.state.DataSourceManager; import org.neo4j.kernel.impl.transaction.state.NeoStoreFileListing; import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.logging.Log; @@ -36,7 +36,7 @@ class PageCacheWarmerKernelExtension extends LifecycleAdapter { private final AvailabilityGuard availabilityGuard; - private final DataSourceManager dataSourceManager; + private final NeoStoreDataSource dataSource; private final Config config; private final PageCacheWarmer pageCacheWarmer; private final WarmupAvailabilityListener availabilityListener; @@ -44,10 +44,10 @@ class PageCacheWarmerKernelExtension extends LifecycleAdapter PageCacheWarmerKernelExtension( JobScheduler scheduler, AvailabilityGuard availabilityGuard, PageCache pageCache, FileSystemAbstraction fs, - DataSourceManager dataSourceManager, Log log, PageCacheWarmerMonitor monitor, Config config ) + NeoStoreDataSource dataSource, Log log, PageCacheWarmerMonitor monitor, Config config ) { this.availabilityGuard = availabilityGuard; - this.dataSourceManager = dataSourceManager; + this.dataSource = dataSource; this.config = config; pageCacheWarmer = new PageCacheWarmer( fs, pageCache, scheduler ); availabilityListener = new WarmupAvailabilityListener( scheduler, pageCacheWarmer, config, log, monitor ); @@ -79,6 +79,6 @@ public void stop() throws Throwable private NeoStoreFileListing getNeoStoreFileListing() { - return dataSourceManager.getDataSource().getDependencyResolver().resolveDependency( NeoStoreFileListing.class ); + return dataSource.getDependencyResolver().resolveDependency( NeoStoreFileListing.class ); } } diff --git a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/PageCacheWarmerKernelExtensionFactory.java b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/PageCacheWarmerKernelExtensionFactory.java index 816b07dcce95d..a4a4755c9d02c 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/PageCacheWarmerKernelExtensionFactory.java +++ b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/pagecache/PageCacheWarmerKernelExtensionFactory.java @@ -26,12 +26,12 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.AvailabilityGuard; +import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.extension.ExtensionType; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.logging.LogService; import org.neo4j.kernel.impl.spi.KernelContext; -import org.neo4j.kernel.impl.transaction.state.DataSourceManager; import org.neo4j.kernel.lifecycle.Lifecycle; import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.logging.Log; @@ -51,7 +51,7 @@ public interface Dependencies FileSystemAbstraction fileSystemAbstraction(); - DataSourceManager getDataSourceManager(); + NeoStoreDataSource getDataSource(); LogService logService(); @@ -73,7 +73,7 @@ public Lifecycle newInstance( KernelContext context, Dependencies deps ) PageCache pageCache = deps.pageCache(); FileSystemAbstraction fs = deps.fileSystemAbstraction(); LogService logService = deps.logService(); - DataSourceManager dataSourceManager = deps.getDataSourceManager(); + NeoStoreDataSource dataSourceManager = deps.getDataSource(); Log log = logService.getInternalLog( PageCacheWarmer.class ); PageCacheWarmerMonitor monitor = deps.monitors().newMonitor( PageCacheWarmerMonitor.class ); Config config = deps.config();