Skip to content

Commit

Permalink
Move DatabasseAvailability to database level.
Browse files Browse the repository at this point in the history
  • Loading branch information
MishaDemianenko committed Aug 24, 2018
1 parent 378c839 commit cba5a00
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 19 deletions.
Expand Up @@ -31,6 +31,7 @@
import org.neo4j.io.pagecache.PageCache;
import org.neo4j.io.pagecache.tracing.cursor.context.VersionContextSupplier;
import org.neo4j.kernel.api.explicitindex.AutoIndexing;
import org.neo4j.kernel.availability.DatabaseAvailability;
import org.neo4j.kernel.availability.DatabaseAvailabilityGuard;
import org.neo4j.kernel.configuration.Config;
import org.neo4j.kernel.extension.KernelExtensionFactory;
Expand Down Expand Up @@ -97,7 +98,7 @@ public interface DatabaseCreationContext

FileSystemAbstraction getFs();

TransactionMonitor getTransactionMonitor();
TransactionMonitor getTransactionStats();

DatabaseHealth getDatabaseHealth();

Expand Down Expand Up @@ -152,4 +153,6 @@ public interface DatabaseCreationContext
GraphDatabaseFacade getFacade();

Iterable<QueryEngineProvider> getEngineProviders();

DatabaseAvailability getDatabaseAvailability();
}
Expand Up @@ -45,6 +45,7 @@
import org.neo4j.kernel.api.explicitindex.AutoIndexing;
import org.neo4j.kernel.api.index.NodePropertyAccessor;
import org.neo4j.kernel.api.labelscan.LabelScanStore;
import org.neo4j.kernel.availability.DatabaseAvailability;
import org.neo4j.kernel.availability.DatabaseAvailabilityGuard;
import org.neo4j.kernel.configuration.Config;
import org.neo4j.kernel.extension.DatabaseKernelExtensions;
Expand Down Expand Up @@ -199,6 +200,11 @@ public class NeoStoreDataSource extends LifecycleAdapter
private final StoreCopyCheckPointMutex storeCopyCheckPointMutex;
private final CollectionsFactorySupplier collectionsFactorySupplier;
private final Locks locks;
private final DatabaseAvailability databaseAvailability;

private Dependencies dataSourceDependencies;
private LifeSupport life;
private IndexProviderMap indexProviderMap;
private final String databaseName;
private final DatabaseLayout databaseLayout;
private final boolean readOnly;
Expand All @@ -208,10 +214,6 @@ public class NeoStoreDataSource extends LifecycleAdapter
private final VersionContextSupplier versionContextSupplier;
private final AccessCapability accessCapability;

private Dependencies dataSourceDependencies;
private LifeSupport life;
private IndexProviderMap indexProviderMap;

private StorageEngine storageEngine;
private QueryExecutionEngine executionEngine;
private NeoStoreTransactionLogModule transactionLogModule;
Expand Down Expand Up @@ -244,7 +246,7 @@ public NeoStoreDataSource( DatabaseCreationContext context )
this.transactionEventHandlers = context.getTransactionEventHandlers();
this.indexingServiceMonitor = context.getIndexingServiceMonitor();
this.fs = context.getFs();
this.transactionMonitor = context.getTransactionMonitor();
this.transactionMonitor = context.getTransactionStats();
this.databaseHealth = context.getDatabaseHealth();
this.physicalLogMonitor = context.getPhysicalLogMonitor();
this.transactionHeaderInformationFactory = context.getTransactionHeaderInformationFactory();
Expand Down Expand Up @@ -272,6 +274,7 @@ public NeoStoreDataSource( DatabaseCreationContext context )
this.pageCache = context.getPageCache();
this.monitors.addMonitorListener( new LoggingLogFileMonitor( msgLog ) );
this.collectionsFactorySupplier = context.getCollectionsFactorySupplier();
this.databaseAvailability = context.getDatabaseAvailability();
this.failOnCorruptedLogFiles = context.getConfig().get( GraphDatabaseSettings.fail_on_corrupted_log_files );
}

Expand All @@ -293,6 +296,7 @@ public void start() throws IOException
dataSourceDependencies.satisfyDependency( transactionMonitor );
dataSourceDependencies.satisfyDependency( locks );
dataSourceDependencies.satisfyDependency( databaseAvailabilityGuard );
dataSourceDependencies.satisfyDependency( databaseAvailability );

life = new LifeSupport();
dataSourceDependencies.satisfyDependency( explicitIndexProvider );
Expand Down Expand Up @@ -410,6 +414,7 @@ public void start() throws IOException
}

life.add( new DatabaseDiagnostics( dataSourceDependencies.resolveDependency( DiagnosticsManager.class ), this, databaseInfo ) );
life.add( databaseAvailability );
life.setLast( lifecycleToTriggerCheckPointOnShutdown() );

try
Expand Down
Expand Up @@ -37,6 +37,7 @@
import org.neo4j.kernel.NeoStoreDataSource;
import org.neo4j.kernel.api.explicitindex.AutoIndexing;
import org.neo4j.kernel.api.index.IndexProvider;
import org.neo4j.kernel.availability.DatabaseAvailability;
import org.neo4j.kernel.availability.DatabaseAvailabilityGuard;
import org.neo4j.kernel.configuration.Config;
import org.neo4j.kernel.extension.KernelExtensionFactory;
Expand Down Expand Up @@ -381,7 +382,7 @@ public FileSystemAbstraction getFs()
}

@Override
public TransactionMonitor getTransactionMonitor()
public TransactionMonitor getTransactionStats()
{
return transactionMonitor;
}
Expand Down Expand Up @@ -547,6 +548,12 @@ public Iterable<QueryEngineProvider> getEngineProviders()
{
return engineProviders;
}

@Override
public DatabaseAvailability getDatabaseAvailability()
{
return null;
}
}

}
Expand Up @@ -39,7 +39,6 @@
import org.neo4j.internal.kernel.api.exceptions.KernelException;
import org.neo4j.internal.kernel.api.security.SecurityContext;
import org.neo4j.kernel.api.KernelTransaction;
import org.neo4j.kernel.availability.DatabaseAvailability;
import org.neo4j.kernel.availability.StartupWaiter;
import org.neo4j.kernel.builtinprocs.SpecialBuiltInProcedures;
import org.neo4j.kernel.configuration.Config;
Expand Down Expand Up @@ -178,11 +177,6 @@ public GraphDatabaseFacade initFacade( File storeDir, Config config, final Depen
platform.life.add( new VmPauseMonitorComponent( config, platform.logging.getInternalLog( VmPauseMonitorComponent.class ), platform.jobScheduler ) );
platform.dependencies.satisfyDependency( edition.globalTransactionCounter() );
platform.life.add( new PublishPageCacheTracerMetricsAfterStart( platform.tracers.pageCursorTracerSupplier ) );
DatabaseAvailability databaseAvailability =
new DatabaseAvailability( platform.databaseAvailabilityGuard, edition.globalTransactionCounter(), platform.clock,
config.get( GraphDatabaseSettings.shutdown_transaction_end_timeout ).toMillis() );
platform.dependencies.satisfyDependency( databaseAvailability );
platform.life.add( databaseAvailability );
platform.life.add( new StartupWaiter( platform.databaseAvailabilityGuard, edition.transactionStartTimeout ) );
platform.dependencies.satisfyDependency( edition.schemaWriteGuard );
platform.life.setLast( platform.eventHandlers );
Expand Down
Expand Up @@ -58,7 +58,6 @@
import org.neo4j.kernel.impl.store.id.IdReuseEligibility;
import org.neo4j.kernel.impl.store.id.configuration.IdTypeConfigurationProvider;
import org.neo4j.kernel.impl.transaction.TransactionHeaderInformationFactory;
import org.neo4j.kernel.impl.transaction.TransactionMonitor;
import org.neo4j.kernel.impl.transaction.stats.DatabaseTransactionStats;
import org.neo4j.kernel.impl.transaction.stats.TransactionCounters;
import org.neo4j.kernel.impl.util.Dependencies;
Expand Down Expand Up @@ -280,7 +279,7 @@ public void createDatabases( DatabaseManager databaseManager, Config config )
databaseManager.createDatabase( config.get( GraphDatabaseSettings.active_database ) );
}

public TransactionMonitor createTransactionMonitor()
public DatabaseTransactionStats createTransactionMonitor()
{
return databaseStatistics;
}
Expand Down
Expand Up @@ -23,6 +23,7 @@
import java.util.function.Function;

import org.neo4j.graphdb.DependencyResolver;
import org.neo4j.graphdb.factory.GraphDatabaseSettings;
import org.neo4j.index.internal.gbptree.RecoveryCleanupWorkCollector;
import org.neo4j.internal.kernel.api.TokenNameLookup;
import org.neo4j.io.fs.FileSystemAbstraction;
Expand All @@ -32,6 +33,7 @@
import org.neo4j.io.pagecache.tracing.cursor.context.VersionContextSupplier;
import org.neo4j.kernel.DatabaseCreationContext;
import org.neo4j.kernel.api.explicitindex.AutoIndexing;
import org.neo4j.kernel.availability.DatabaseAvailability;
import org.neo4j.kernel.availability.DatabaseAvailabilityGuard;
import org.neo4j.kernel.configuration.Config;
import org.neo4j.kernel.extension.KernelExtensionFactory;
Expand Down Expand Up @@ -60,6 +62,7 @@
import org.neo4j.kernel.impl.transaction.TransactionMonitor;
import org.neo4j.kernel.impl.transaction.log.checkpoint.StoreCopyCheckPointMutex;
import org.neo4j.kernel.impl.transaction.log.files.LogFileCreationMonitor;
import org.neo4j.kernel.impl.transaction.stats.DatabaseTransactionStats;
import org.neo4j.kernel.impl.util.collection.CollectionsFactorySupplier;
import org.neo4j.kernel.impl.util.watcher.FileSystemWatcherService;
import org.neo4j.kernel.internal.DatabaseHealth;
Expand All @@ -85,7 +88,7 @@ public class ModularDatabaseCreationContext implements DatabaseCreationContext
private final TransactionEventHandlers transactionEventHandlers;
private final IndexingService.Monitor indexingServiceMonitor;
private final FileSystemAbstraction fs;
private final TransactionMonitor transactionMonitor;
private final DatabaseTransactionStats transactionStats;
private final DatabaseHealth databaseHealth;
private final LogFileCreationMonitor physicalLogMonitor;
private final TransactionHeaderInformationFactory transactionHeaderInformationFactory;
Expand Down Expand Up @@ -114,6 +117,7 @@ public class ModularDatabaseCreationContext implements DatabaseCreationContext
private final GraphDatabaseFacade facade;
private final Iterable<QueryEngineProvider> engineProviders;
private final DatabaseLayout databaseLayout;
private final DatabaseAvailability databaseAvailability;

ModularDatabaseCreationContext( String databaseName, PlatformModule platformModule, EditionModule editionModule,
Procedures procedures, GraphDatabaseFacade facade )
Expand All @@ -135,7 +139,7 @@ public class ModularDatabaseCreationContext implements DatabaseCreationContext
this.indexingServiceMonitor = monitors.newMonitor( IndexingService.Monitor.class );
this.physicalLogMonitor = monitors.newMonitor( LogFileCreationMonitor.class );
this.fs = platformModule.fileSystem;
this.transactionMonitor = editionModule.createTransactionMonitor();
this.transactionStats = editionModule.createTransactionMonitor();
this.databaseHealth = new DatabaseHealth( platformModule.panicEventGenerator, logService.getInternalLog( DatabaseHealth.class ) );
this.transactionHeaderInformationFactory = editionModule.headerInformationFactory;
this.commitProcessFactory = editionModule.commitProcessFactory;
Expand All @@ -149,6 +153,8 @@ public class ModularDatabaseCreationContext implements DatabaseCreationContext
this.ioLimiter = editionModule.ioLimiter;
this.clock = platformModule.clock;
this.databaseAvailabilityGuard = new DatabaseAvailabilityGuard( databaseName, clock, logService.getInternalLog( DatabaseAvailabilityGuard.class ) );
this.databaseAvailability =
new DatabaseAvailability( databaseAvailabilityGuard, transactionStats, platformModule.clock, getAwaitActiveTransactionDeadlineMillis() );
this.coreAPIAvailabilityGuard = new CoreAPIAvailabilityGuard( databaseAvailabilityGuard, editionModule.transactionStartTimeout );
this.accessCapability = editionModule.accessCapability;
this.storeCopyCheckPointMutex = new StoreCopyCheckPointMutex();
Expand Down Expand Up @@ -254,9 +260,9 @@ public FileSystemAbstraction getFs()
}

@Override
public TransactionMonitor getTransactionMonitor()
public TransactionMonitor getTransactionStats()
{
return transactionMonitor;
return transactionStats;
}

@Override
Expand Down Expand Up @@ -420,4 +426,15 @@ public Iterable<QueryEngineProvider> getEngineProviders()
{
return engineProviders;
}

@Override
public DatabaseAvailability getDatabaseAvailability()
{
return databaseAvailability;
}

private long getAwaitActiveTransactionDeadlineMillis()
{
return config.get( GraphDatabaseSettings.shutdown_transaction_end_timeout ).toMillis();
}
}

0 comments on commit cba5a00

Please sign in to comment.