mirror of https://github.com/calzoneman/sync.git
Add a few safeguards around channel saving
This commit is contained in:
parent
d21943ecc7
commit
f6c201f3ba
5
index.js
5
index.js
|
@ -126,3 +126,8 @@ if (Config.get("service-socket.enabled")) {
|
||||||
var server = new ServiceSocket;
|
var server = new ServiceSocket;
|
||||||
server.init(handleLine, Config.get("service-socket.socket"));
|
server.init(handleLine, Config.get("service-socket.socket"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require("bluebird");
|
||||||
|
process.on("unhandledRejection", function (reason, promise) {
|
||||||
|
Logger.errlog.log("[SEVERE] Unhandled rejection: " + reason.stack);
|
||||||
|
});
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"author": "Calvin Montgomery",
|
"author": "Calvin Montgomery",
|
||||||
"name": "CyTube",
|
"name": "CyTube",
|
||||||
"description": "Online media synchronizer and chat",
|
"description": "Online media synchronizer and chat",
|
||||||
"version": "3.25.1",
|
"version": "3.25.2",
|
||||||
"repository": {
|
"repository": {
|
||||||
"url": "http://github.com/calzoneman/sync"
|
"url": "http://github.com/calzoneman/sync"
|
||||||
},
|
},
|
||||||
|
|
|
@ -63,15 +63,24 @@ function initChannelDumper(Server) {
|
||||||
* 60000;
|
* 60000;
|
||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
var wait = CHANNEL_SAVE_INTERVAL / Server.channels.length;
|
var wait = CHANNEL_SAVE_INTERVAL / Server.channels.length;
|
||||||
|
Logger.syslog.log(`Saving channels with delay ${wait}`);
|
||||||
Promise.reduce(Server.channels, (_, chan) => {
|
Promise.reduce(Server.channels, (_, chan) => {
|
||||||
return Promise.delay(wait).then(() => {
|
return Promise.delay(wait).then(() => {
|
||||||
|
if (chan.name === 'test')
|
||||||
|
throw new TypeError('Whoops fucked up there');
|
||||||
if (!chan.dead && chan.users && chan.users.length > 0) {
|
if (!chan.dead && chan.users && chan.users.length > 0) {
|
||||||
return chan.saveState().catch(err => {
|
return chan.saveState().tap(() => {
|
||||||
|
Logger.syslog.log(`Saved /r/${chan.name}`);
|
||||||
|
}).catch(err => {
|
||||||
Logger.errlog.log(`Failed to save /r/${chan.name}: ${err.stack}`);
|
Logger.errlog.log(`Failed to save /r/${chan.name}: ${err.stack}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}).catch(error => {
|
||||||
|
Logger.errlog.log(`Failed to save channel: ${error.stack}`);
|
||||||
|
});
|
||||||
|
}, 0).catch(error => {
|
||||||
|
Logger.errlog.log(`Failed to save channels: ${error.stack}`);
|
||||||
});
|
});
|
||||||
}, 0);
|
|
||||||
}, CHANNEL_SAVE_INTERVAL);
|
}, CHANNEL_SAVE_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -319,11 +319,15 @@ Server.prototype.setAnnouncement = function (data) {
|
||||||
Server.prototype.shutdown = function () {
|
Server.prototype.shutdown = function () {
|
||||||
Logger.syslog.log("Unloading channels");
|
Logger.syslog.log("Unloading channels");
|
||||||
Promise.map(this.channels, channel => {
|
Promise.map(this.channels, channel => {
|
||||||
|
try {
|
||||||
return channel.saveState().tap(() => {
|
return channel.saveState().tap(() => {
|
||||||
Logger.syslog.log(`Saved /r/${channel.name}`);
|
Logger.syslog.log(`Saved /r/${channel.name}`);
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
Logger.errlog.log(`Failed to save /r/${channel.name}: ${err.stack}`);
|
Logger.errlog.log(`Failed to save /r/${channel.name}: ${err.stack}`);
|
||||||
});
|
});
|
||||||
|
} catch (error) {
|
||||||
|
Logger.errlog.log(`Failed to save channel: ${error.stack}`);
|
||||||
|
}
|
||||||
}, { concurrency: 5 }).then(() => {
|
}, { concurrency: 5 }).then(() => {
|
||||||
Logger.syslog.log("Goodbye");
|
Logger.syslog.log("Goodbye");
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
|
|
Loading…
Reference in New Issue