Compare commits

...

5 Commits

Author SHA1 Message Date
John McLear 47f43e7094 bump ueber for a version that supports remove in couch 2016-03-25 07:41:52 +00:00
John McLear 3e2914831c remove sessions script 2016-03-25 07:33:27 +00:00
John McLear 459f252db9 notes 2016-03-24 14:32:17 +00:00
John McLear 7001b3b0c7 whee 2016-03-24 14:29:55 +00:00
John McLear f725e36523 a script to remove old pad data, needs full testing 2016-03-24 14:13:34 +00:00
3 changed files with 184 additions and 1 deletions

96
bin/removeOldPadData.js Normal file
View File

@ -0,0 +1,96 @@
/*
This is a debug tool. It removes old pad data from a non-dirty database
It also removes previous pad history so use it carefully.
*/
//get the padID
var padId = process.argv[2];
//initalize the variables
var db, settings, keys, values;
var npm = require("../src/node_modules/npm");
var async = require("../src/node_modules/async");
// Setup a removal count
var removalCount = 0;
async.series([
//load npm
function(callback) {
npm.load({}, function(er) {
callback(er);
})
},
//load modules
function(callback) {
settings = require('../src/node/utils/Settings');
db = require('../src/node/db/DB');
//intallize the database
db.init(callback);
},
//get the session info
function (callback){
db.db.findKeys("pad:*",null, function(err, dbkeys){
keys = dbkeys;
callback();
});
},
function (callback)
{
values = {};
async.eachSeries(keys, function(key, cb){
// only get main pad data not any revisions
if(key.indexOf(":revs") === -1){
db.db.get(key, function(err, value){
// console.log("get value", key, value);
values[key] = value;
cb();
});
}else{
cb();
}
}, function(){
callback();
});
},
// Removing all old pad data record
function (callback){
async.each(keys, function(key, cb){
if(key.indexOf(":revs") !== -1){
console.log("Removing", key);
db.db.remove(key, function(err){
removalCount++;
if(err) console.log("err", err);
cb();
});
}else{
cb();
}
}, function(){
callback();
});
},
// Add latest data back in for a pad
function (callback){
async.eachSeries(keys, function(key, cb){
var sauce = values[key];
if(key.indexOf(":revs") === -1){
// console.log("Adding data back in for", key, sauce);
db.db.set(key, values[key]);
}
cb();
}, function(){
callback();
});
}
], function (err)
{
if(err) throw err;
else{
console.log("finished, total database records removed "+removalCount);
process.exit(0);
}
});

87
bin/removeOldSessions.js Normal file
View File

@ -0,0 +1,87 @@
/*
This is a debug tool. It removes old sessions from a couch database
*/
/*
if(process.argv.length != 3)
{
console.error("Use: node bin/checkPad.js $PADID");
process.exit(1);
}
*/
//get the padID
var padId = process.argv[2];
//initalize the variables
var db, settings, keys, values;
var npm = require("../src/node_modules/npm");
var async = require("../src/node_modules/async");
async.series([
//load npm
function(callback) {
npm.load({}, function(er) {
callback(er);
})
},
//load modules
function(callback) {
settings = require('../src/node/utils/Settings');
db = require('../src/node/db/DB');
//intallize the database
db.init(callback);
},
//get the session info
function (callback){
db.db.findKeys("sessionstorage:*",null, function(err, dbkeys){
keys = dbkeys;
callback();
});
},
function (callback)
{
values = {};
async.eachSeries(keys, function(key, cb){
db.db.get(key, function(err, value){
// console.log("err", err);
// console.log("value", key, value);
values[key] = value;
cb();
});
}, function(){
callback();
});
},
// Removing a session record
function (callback){
async.each(keys, function(key, cb){
console.log("Removing", key);
db.db.remove(key, function(err){
if(err) console.log("err", err);
cb();
});
}, function(){
callback();
});
},
// Add latest data back in for a session
function (callback){
async.eachSeries(keys, function(key, cb){
console.log("Adding data back in for", key);
db.db.set(key, values[key]);
cb();
}, function(){
callback();
});
}
], function (err)
{
if(err) throw err;
else{
console.log("finished");
process.exit(0);
}
});

View File

@ -17,7 +17,7 @@
"etherpad-require-kernel" : "1.0.9",
"resolve" : "1.1.6",
"socket.io" : "1.3.7",
"ueberdb2" : "0.3.0",
"ueberdb2" : "0.3.1",
"express" : "4.12.3",
"express-session" : "1.11.1",
"cookie-parser" : "1.3.4",