if (!distributed) {
logger.error("Can't redistribute a non-distributed PageDB");
} else {
try {
PageDB oldPageDB = new PageDB(pagedbDir);
DPageDB newPageDB = new DPageDB(pagedbDir+".new");
oldPageDB.open(PageDB.READ);
newPageDB.open(DPageDB.WRITE + DPageDB.UNSORTED);
long total = oldPageDB.getSize();
long done = 0;
for (Page page : oldPageDB) {
newPageDB.addPage(page);
if (++done % 10000 == 0) {
logger.info("Redistributed "+done+" of "+total+" pages.");
}
}
oldPageDB.close();
newPageDB.close();
String oldName = oldPageDB.getDir();
PageDB tmpPageDB = new PageDB(pagedbDir+".tmp");
tmpPageDB.deleteDir(false);
if (attempt(oldPageDB.rename(tmpPageDB.getDir()), "renaming pagedb -> pagedb.tmp")) {
if (attempt(newPageDB.rename(oldName), "renaming pagedb.new -> pagedb")) {
if (attempt(tmpPageDB.deleteDir(false), "deleting pagedb.tmp")) {
logger.info("Done redistributing.");
}
}
}