use of org.neo4j.consistency.checking.full.ConsistencyCheckIncompleteException in project neo4j by neo4j.
the class CheckConsistencyCommand method execute.
@Override
public void execute(String[] args) throws IncorrectUsage, CommandFailed {
final String database;
final boolean verbose;
final Optional<Path> additionalConfigFile;
final Path reportDir;
final Optional<Path> backupPath;
final boolean checkGraph;
final boolean checkIndexes;
final boolean checkLabelScanStore;
final boolean checkPropertyOwners;
try {
database = arguments.parse("database", args);
backupPath = arguments.parseOptionalPath("backup", args);
verbose = arguments.parseBoolean("verbose", args);
additionalConfigFile = arguments.parseOptionalPath("additional-config", args);
reportDir = arguments.parseOptionalPath("report-dir", args).orElseThrow(() -> new IllegalArgumentException("report-dir must be a valid path"));
} catch (IllegalArgumentException e) {
throw new IncorrectUsage(e.getMessage());
}
if (backupPath.isPresent()) {
if (arguments.has("database", args)) {
throw new IncorrectUsage("Only one of '--database' and '--backup' can be specified.");
}
if (!backupPath.get().toFile().isDirectory()) {
throw new CommandFailed(format("Specified backup should be a directory: %s", backupPath.get()));
}
}
Config config = loadNeo4jConfig(homeDir, configDir, database, loadAdditionalConfig(additionalConfigFile));
try {
// We can remove the loading from config file in 4.0
if (arguments.has(CHECK_GRAPH, args)) {
checkGraph = arguments.parseBoolean(CHECK_GRAPH, args);
} else {
checkGraph = ConsistencyCheckSettings.consistency_check_graph.from(config);
}
if (arguments.has(CHECK_INDEXES, args)) {
checkIndexes = arguments.parseBoolean(CHECK_INDEXES, args);
} else {
checkIndexes = ConsistencyCheckSettings.consistency_check_indexes.from(config);
}
if (arguments.has(CHECK_LABEL_SCAN_STORE, args)) {
checkLabelScanStore = arguments.parseBoolean(CHECK_LABEL_SCAN_STORE, args);
} else {
checkLabelScanStore = ConsistencyCheckSettings.consistency_check_label_scan_store.from(config);
}
if (arguments.has(CHECK_PROPERTY_OWNERS, args)) {
checkPropertyOwners = arguments.parseBoolean(CHECK_PROPERTY_OWNERS, args);
} else {
checkPropertyOwners = ConsistencyCheckSettings.consistency_check_property_owners.from(config);
}
} catch (IllegalArgumentException e) {
throw new IncorrectUsage(e.getMessage());
}
try (FileSystemAbstraction fileSystem = new DefaultFileSystemAbstraction()) {
File storeDir = backupPath.map(Path::toFile).orElse(config.get(database_path));
checkDbState(storeDir, config);
ConsistencyCheckService.Result consistencyCheckResult = consistencyCheckService.runFullConsistencyCheck(storeDir, config, ProgressMonitorFactory.textual(System.err), FormattedLogProvider.toOutputStream(System.out), fileSystem, verbose, reportDir.toFile(), new CheckConsistencyConfig(checkGraph, checkIndexes, checkLabelScanStore, checkPropertyOwners));
if (!consistencyCheckResult.isSuccessful()) {
throw new CommandFailed(format("Inconsistencies found. See '%s' for details.", consistencyCheckResult.reportFile()));
}
} catch (ConsistencyCheckIncompleteException | IOException e) {
throw new CommandFailed("Consistency checking failed." + e.getMessage(), e);
}
}
use of org.neo4j.consistency.checking.full.ConsistencyCheckIncompleteException in project neo4j by neo4j.
the class ConsistencyCheckTool method run.
ConsistencyCheckService.Result run(String... args) throws ToolFailureException, IOException {
Args arguments = Args.withFlags(VERBOSE).parse(args);
File storeDir = determineStoreDirectory(arguments);
Config tuningConfiguration = readConfiguration(arguments);
boolean verbose = isVerbose(arguments);
checkDbState(storeDir, tuningConfiguration);
LogProvider logProvider = FormattedLogProvider.toOutputStream(System.out);
try {
return consistencyCheckService.runFullConsistencyCheck(storeDir, tuningConfiguration, ProgressMonitorFactory.textual(System.err), logProvider, fs, verbose, new CheckConsistencyConfig(tuningConfiguration));
} catch (ConsistencyCheckIncompleteException e) {
throw new ToolFailureException("Check aborted due to exception", e);
}
}
use of org.neo4j.consistency.checking.full.ConsistencyCheckIncompleteException in project neo4j by neo4j.
the class ConsistencyCheckService method runFullConsistencyCheck.
public Result runFullConsistencyCheck(File storeDir, Config config, ProgressMonitorFactory progressFactory, LogProvider logProvider, FileSystemAbstraction fileSystem, boolean verbose, File reportDir, CheckConsistencyConfig checkConsistencyConfig) throws ConsistencyCheckIncompleteException, IOException {
Log log = logProvider.getLog(getClass());
ConfiguringPageCacheFactory pageCacheFactory = new ConfiguringPageCacheFactory(fileSystem, config, PageCacheTracer.NULL, PageCursorTracerSupplier.NULL, logProvider.getLog(PageCache.class));
PageCache pageCache = pageCacheFactory.getOrCreatePageCache();
try {
return runFullConsistencyCheck(storeDir, config, progressFactory, logProvider, fileSystem, pageCache, verbose, reportDir, checkConsistencyConfig);
} finally {
try {
pageCache.close();
} catch (Exception e) {
log.error("Failure during shutdown of the page cache", e);
}
}
}
use of org.neo4j.consistency.checking.full.ConsistencyCheckIncompleteException in project neo4j by neo4j.
the class ConcurrentChangesOnEntitiesTest method assertDatabaseConsistent.
private void assertDatabaseConsistent() throws IOException {
LogProvider logProvider = FormattedLogProvider.toOutputStream(System.out);
try {
ConsistencyCheckService.Result result = new ConsistencyCheckService().runFullConsistencyCheck(testDirectory.graphDbDir(), Config.defaults(), ProgressMonitorFactory.textual(System.err), logProvider, false);
assertTrue(result.isSuccessful());
} catch (ConsistencyCheckIncompleteException e) {
fail(e.getMessage());
}
}
Aggregations