Merge pull request #2839 from Blake-jne/faster-migration
Improve DB migration performance.
This commit is contained in:
commit
a419a3a87d
2 changed files with 38 additions and 18 deletions
|
@ -1,18 +0,0 @@
|
||||||
require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) {
|
|
||||||
|
|
||||||
process.chdir(npm.root+'/..')
|
|
||||||
|
|
||||||
var settings = require("ep_etherpad-lite/node/utils/Settings");
|
|
||||||
var dirty = require("ep_etherpad-lite/node_modules/ueberDB/node_modules/dirty")('var/dirty.db');
|
|
||||||
var db = require("ep_etherpad-lite/node/db/DB");
|
|
||||||
|
|
||||||
db.init(function() {
|
|
||||||
db = db.db;
|
|
||||||
dirty.on("load", function() {
|
|
||||||
dirty.forEach(function(key, value) {
|
|
||||||
db.set(key, value);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
38
bin/migrateDirtyDBtoRealDB.js
Normal file
38
bin/migrateDirtyDBtoRealDB.js
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) {
|
||||||
|
|
||||||
|
process.chdir(npm.root+'/..')
|
||||||
|
|
||||||
|
// This script requires that you have modified your settings.json file
|
||||||
|
// to work with a real database. Please make a backup of your dirty.db
|
||||||
|
// file before using this script, just to be safe.
|
||||||
|
|
||||||
|
var settings = require("ep_etherpad-lite/node/utils/Settings");
|
||||||
|
var dirty = require("dirty")('var/dirty.db');
|
||||||
|
var ueberDB = require("../src/node_modules/ueberDB");
|
||||||
|
var log4js = require("../src/node_modules/log4js");
|
||||||
|
var dbWrapperSettings = {
|
||||||
|
"cache": "0", // The cache slows things down when you're mostly writing.
|
||||||
|
};
|
||||||
|
var db = new ueberDB.database(settings.dbType, settings.dbSettings, dbWrapperSettings, log4js.getLogger("ueberDB"));
|
||||||
|
|
||||||
|
db.init(function() {
|
||||||
|
console.log("Waiting for dirtyDB to parse its file.");
|
||||||
|
dirty.on("load", function(length) {
|
||||||
|
console.log("Loaded " + length + " records, processing now.");
|
||||||
|
var remaining = length;
|
||||||
|
dirty.forEach(function(key, value) {
|
||||||
|
db.set(key, value, function(error) {
|
||||||
|
if (typeof error != 'undefined') {
|
||||||
|
console.log("Unexpected result handling: ", key, value, " was: ", error);
|
||||||
|
}
|
||||||
|
remaining -= 1;
|
||||||
|
var oldremaining = remaining;
|
||||||
|
if ((oldremaining % 100) == 0) {
|
||||||
|
console.log("Records not yet flushed to database: ", remaining);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
console.log("Please wait for all records to flush to database, then kill this process.");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in a new issue