public RestoreFileSystemAction(Config config, Assembler assembler, FileVersion fileVersion, String relativeTargetPath) { super(config, new MemoryDatabase(), assembler, null, fileVersion); this.relativeTargetPath = relativeTargetPath; }
/** * Read the given database files into individual per-user {@link DatabaseBranch}es. This method only * reads the headers from the local database files, and not the entire databases into memory. * * <p>The returned database branches contain only the per-client {@link DatabaseVersionHeader}s, and not * the entire stitched branches, i.e. A's database branch will only contain database version headers from A. */ private SortedMap<DatabaseRemoteFile, List<DatabaseVersion>> readUnknownDatabaseVersionHeaders(SortedMap<File, DatabaseRemoteFile> remoteDatabases) throws IOException, StorageException { logger.log(Level.INFO, "Loading database headers, creating branches ..."); // Read database files SortedMap<DatabaseRemoteFile, List<DatabaseVersion>> remoteDatabaseHeaders = new TreeMap<DatabaseRemoteFile, List<DatabaseVersion>>(); for (Map.Entry<File, DatabaseRemoteFile> remoteDatabaseFileEntry : remoteDatabases.entrySet()) { MemoryDatabase remoteDatabase = new MemoryDatabase(); // Database cannot be reused, since these might be different clients File remoteDatabaseFileInCache = remoteDatabaseFileEntry.getKey(); DatabaseRemoteFile remoteDatabaseFile = remoteDatabaseFileEntry.getValue(); databaseSerializer.load(remoteDatabase, remoteDatabaseFileInCache, null, null, DatabaseReadType.HEADER_ONLY); // only load headers! remoteDatabaseHeaders.put(remoteDatabaseFile, remoteDatabase.getDatabaseVersions()); } return remoteDatabaseHeaders; }
private Collection<DatabaseVersion> attemptResumeDatabaseVersions(Collection<Long> versions) throws Exception { try { Collection<DatabaseVersion> databaseVersions = new ArrayList<>(); for (Long version : versions) { File databaseFile = config.getTransactionDatabaseFile(version); // If a single database file is missing, we should restart if (!databaseFile.exists()) { return null; } DatabaseXmlSerializer databaseSerializer = new DatabaseXmlSerializer(); MemoryDatabase memoryDatabase = new MemoryDatabase(); databaseSerializer.load(memoryDatabase, databaseFile, null, null, DatabaseReadType.FULL); if (memoryDatabase.getDatabaseVersions().size() == 0) { return null; } databaseVersions.add(memoryDatabase.getLastDatabaseVersion()); } return databaseVersions; } catch (Exception e) { logger.log(Level.WARNING, "Cannot load database versions from 'state'. Cannot resume."); return null; } }
MemoryDatabase memoryDatabase = new MemoryDatabase(); memoryDatabase.addDatabaseVersion(databaseVersion);
MemoryDatabase winnerBranchDatabase = new MemoryDatabase(); String rangeClientName = null; VectorClock rangeVersionFrom = null;
MemoryDatabase muddyMultiChunksDatabase = new MemoryDatabase();
public static MemoryDatabase readDatabaseFileFromDisk(File databaseFile, Transformer transformer) throws IOException { MemoryDatabase db = new MemoryDatabase(); DatabaseXmlSerializer dao = new DatabaseXmlSerializer(transformer); dao.load(db, databaseFile, null, null, DatabaseReadType.FULL); return db; }
applyChangesAndPersistDatabase(new MemoryDatabase(), cleanupOccurred, preDeleteFileHistoriesWithLastVersion);
MemoryDatabase deltaDatabase = new MemoryDatabase(); deltaDatabase.addDatabaseVersion(deltaDatabaseVersion);