v1.18.x
Julian Lam 10 years ago
parent 5549280696
commit 96526a37a3

@ -109,6 +109,7 @@ function loadConfig() {
function start() { function start() {
loadConfig(); loadConfig();
var db = require('./src/database');
// nconf defaults, if not set in config // nconf defaults, if not set in config
if (!nconf.get('upload_path')) { if (!nconf.get('upload_path')) {
@ -176,9 +177,8 @@ function start() {
}); });
async.waterfall([ async.waterfall([
function(next) { async.apply(db.init),
require('./src/database').init(next); async.apply(db.checkCompatibility),
},
function(next) { function(next) {
require('./src/meta').configs.init(next); require('./src/meta').configs.init(next);
}, },
@ -204,7 +204,12 @@ function start() {
} }
], function(err) { ], function(err) {
if (err) { if (err) {
winston.error(err.stack); if (err.stacktrace !== false) {
winston.error(err.stack);
} else {
winston.error(err.message);
}
process.exit(); process.exit();
} }
}); });

@ -8,6 +8,7 @@
nconf = require('nconf'), nconf = require('nconf'),
session = require('express-session'), session = require('express-session'),
_ = require('underscore'), _ = require('underscore'),
semver = require('semver'),
db, mongoClient; db, mongoClient;
_.mixin(require('underscore.deep')); _.mixin(require('underscore.deep'));
@ -137,6 +138,7 @@
} }
function createIndices() { function createIndices() {
winston.info('[database] Checking database indices.')
async.parallel([ async.parallel([
async.apply(createIndex, 'objects', {_key: 1, score: -1}, {background: true}), async.apply(createIndex, 'objects', {_key: 1, score: -1}, {background: true}),
async.apply(createIndex, 'objects', {_key: 1, value: -1}, {background: true, unique: true, sparse: true}), async.apply(createIndex, 'objects', {_key: 1, value: -1}, {background: true, unique: true, sparse: true}),
@ -164,6 +166,17 @@
}); });
}; };
module.checkCompatibility = function(callback) {
// For MongoDB, we need to ensure that the mongodb package is >= 2.0.0
var mongoPkg = require.main.require('./node_modules/mongodb/package.json'),
err = semver.lt(mongoPkg.version, '2.0.0') ? new Error('The `mongodb` package is out-of-date, please run `./nodebb setup` again.') : null;
if (err) {
err.stacktrace = false;
}
callback(err);
};
module.info = function(db, callback) { module.info = function(db, callback) {
db.stats({scale:1024}, function(err, stats) { db.stats({scale:1024}, function(err, stats) {
if(err) { if(err) {

@ -5,6 +5,7 @@
var winston = require('winston'), var winston = require('winston'),
nconf = require('nconf'), nconf = require('nconf'),
path = require('path'), path = require('path'),
semver = require('semver'),
session = require('express-session'), session = require('express-session'),
utils = require('./../../public/src/utils.js'), utils = require('./../../public/src/utils.js'),
redis, redis,
@ -111,6 +112,17 @@
return cxn; return cxn;
}; };
module.checkCompatibility = function(callback) {
// Redis requires v2.8.9
module.info(module.client, function(err, info) {
var err = semver.lt(info.redis_version, '2.8.9') ? new Error('Your Redis version is not new enough to support NodeBB, please upgrade Redis to v2.8.9 or higher.') : null;
if (err) {
err.stacktrace = false;
}
callback(err);
});
};
module.close = function() { module.close = function() {
redisClient.quit(); redisClient.quit();
}; };

Loading…
Cancel
Save