@Override public String probeState() { List<String> repositoryNames = Framework.getService(RepositoryService.class).getRepositoryNames(); if (repositoryNames.stream().map(this::probeRepository).anyMatch(isEqual(MIGRATION_STATE_LIFECYCLE))) { return MIGRATION_STATE_LIFECYCLE; } return MIGRATION_STATE_PROPERTY; }
@Override public String probeState() { List<String> repositoryNames = Framework.getService(RepositoryService.class).getRepositoryNames(); if (repositoryNames.stream().map(this::probeRepository).anyMatch(isEqual(MIGRATION_STATE_RELATIONS))) { return MIGRATION_STATE_RELATIONS; } return MIGRATION_STATE_FACETS; }
@Override public String probeState() { List<String> repositoryNames = Framework.getService(RepositoryService.class).getRepositoryNames(); if (repositoryNames.stream().map(this::probeRepository).anyMatch(isEqual(MIGRATION_STATE_RELATION))) { return MIGRATION_STATE_RELATION; } return MIGRATION_STATE_PROPERTY; }
/** * Creates all the repositories. Requires an active transaction. * * @since 9.3 */ protected void doCreateRepositories() { repositories.clear(); for (String repositoryName : getRepositoryNames()) { RepositoryFactory factory = getFactory(repositoryName); if (factory == null) { continue; } Repository repository = (Repository) factory.call(); repositories.put(repositoryName, repository); } }
@Override public void run(String step, MigrationContext migrationContext) { if (!MIGRATION_STEP_RELATIONS_TO_FACETS.equals(step)) { throw new NuxeoException("Unknown migration step: " + step); } this.migrationContext = migrationContext; reportProgress("Initializing", 0, -1); // unknown List<String> repositoryNames = Framework.getService(RepositoryService.class).getRepositoryNames(); try { repositoryNames.forEach(this::migrateRepository); } catch (MigrationShutdownException e) { return; } }
@Override public void run(String step, MigrationContext migrationContext) { if (!MIGRATION_STEP_RELATION_TO_PROPERTY.equals(step)) { throw new NuxeoException("Unknown migration step: " + step); } this.migrationContext = migrationContext; reportProgress("Initializing", 0, -1); // unknown List<String> repositoryNames = Framework.getService(RepositoryService.class).getRepositoryNames(); try { repositoryNames.forEach(this::migrateRepository); } catch (MigrationShutdownException e) { return; } }
/** * Initializes all the repositories. Requires an active transaction. * * @since 9.3 */ protected void doInitRepositories() { // give up if no handler configured RepositoryInitializationHandler handler = RepositoryInitializationHandler.getInstance(); if (handler == null) { return; } // invoke handlers for (String name : getRepositoryNames()) { initializeRepository(handler, name); } }
@Override public void run(String step, MigrationContext migrationContext) { if (!MIGRATION_STEP_LIFECYCLE_TO_PROPERTY.equals(step)) { throw new NuxeoException("Unknown migration step: " + step); } this.migrationContext = migrationContext; reportProgress("Initializing", 0, -1); // unknown List<String> repositoryNames = Framework.getService(RepositoryService.class).getRepositoryNames(); try { repositoryNames.forEach(this::migrateRepository); reportProgress("Done", 1, 1); } catch (MigrationShutdownException e) { return; } }
/** * Removes the orphan versions. * <p> * A version stays referenced, and therefore is not removed, if any proxy points to a version in the version history * of any live document, or in the case of tree snapshot if there is a snapshot containing a version in the version * history of any live document. * * @param commitSize the maximum number of orphan versions to delete in one transaction * @return the number of orphan versions deleted * @since 9.1 */ public long cleanupOrphanVersions(long commitSize) { RepositoryService repositoryService = Framework.getService(RepositoryService.class); if (repositoryService == null) { // not initialized return 0; } List<String> repositoryNames = repositoryService.getRepositoryNames(); AtomicLong count = new AtomicLong(); for (String repositoryName : repositoryNames) { TransactionHelper.runInTransaction(() -> { CoreInstance.doPrivileged(repositoryName, (CoreSession session) -> { count.addAndGet(doCleanupOrphanVersions(session, commitSize)); }); }); } return count.get(); }
@Override public BinaryManagerStatus garbageCollectBinaries(boolean delete) { List<BinaryGarbageCollector> gcs = getGarbageCollectors(); // start gc long start = System.currentTimeMillis(); for (BinaryGarbageCollector gc : gcs) { gc.start(); } // in all repositories, mark referenced binaries // the marking itself will call back into the appropriate gc's mark method RepositoryService repositoryService = Framework.getService(RepositoryService.class); for (String repositoryName : repositoryService.getRepositoryNames()) { Repository repository = repositoryService.getRepository(repositoryName); repository.markReferencedBinaries(); } // stop gc BinaryManagerStatus globalStatus = new BinaryManagerStatus(); for (BinaryGarbageCollector gc : gcs) { gc.stop(delete); BinaryManagerStatus status = gc.getStatus(); globalStatus.numBinaries += status.numBinaries; globalStatus.sizeBinaries += status.sizeBinaries; globalStatus.numBinariesGC += status.numBinariesGC; globalStatus.sizeBinariesGC += status.sizeBinariesGC; } globalStatus.gcDuration = System.currentTimeMillis() - start; return globalStatus; }