* of the leftover unreferenced database entities (unmapped chunks, multichunks, file contents).
*/
private void persistPurgeDatabaseVersion(MemoryDatabase winnersPurgeDatabase, DatabaseVersionHeader currentDatabaseVersionHeader) throws SQLException {
logger.log(Level.INFO, " + Applying PURGE database version " + currentDatabaseVersionHeader.getVectorClock());
DatabaseVersion purgeDatabaseVersion = winnersPurgeDatabase.getDatabaseVersion(currentDatabaseVersionHeader.getVectorClock());
Map<FileHistoryId, FileVersion> purgeFileVersions = new HashMap<FileHistoryId, FileVersion>();
for (PartialFileHistory purgeFileHistory : purgeDatabaseVersion.getFileHistories()) {
logger.log(Level.INFO, " - Purging file history {0}, with versions <= {1}", new Object[] {
purgeFileHistory.getFileHistoryId().toString(), purgeFileHistory.getLastVersion() });
purgeFileVersions.put(purgeFileHistory.getFileHistoryId(), purgeFileHistory.getLastVersion());
}
localDatabase.removeSmallerOrEqualFileVersions(purgeFileVersions);
localDatabase.removeUnreferencedDatabaseEntities();
localDatabase.writeDatabaseVersionHeader(purgeDatabaseVersion.getHeader());
localDatabase.commit(); // TODO [medium] Harmonize commit behavior
}