summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAya Morisawa <AyaMorisawa4869@gmail.com>2018-11-11 14:27:00 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-11-11 14:27:00 +0900
commitb62203b1f13f273cd6fadfa9da2114dd5889d5ee (patch)
tree7e626bb6f3bed1a54454925324388406820b1ff5
parentfix self host detection (#3201) (diff)
downloadsharkey-b62203b1f13f273cd6fadfa9da2114dd5889d5ee.tar.gz
sharkey-b62203b1f13f273cd6fadfa9da2114dd5889d5ee.tar.bz2
sharkey-b62203b1f13f273cd6fadfa9da2114dd5889d5ee.zip
Check MongoDB version (#3185)
* Check MongoDB version * Fix bug
-rw-r--r--src/index.ts17
-rw-r--r--src/prelude/array.ts8
2 files changed, 21 insertions, 4 deletions
diff --git a/src/index.ts b/src/index.ts
index c68f617c09..70b61a59f3 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -14,7 +14,7 @@ import * as portscanner from 'portscanner';
import isRoot = require('is-root');
import Xev from 'xev';
import * as program from 'commander';
-import mongo from './db/mongodb';
+import mongo, { nativeDbConn } from './db/mongodb';
import Logger from './misc/logger';
import EnvironmentInfo from './misc/environmentInfo';
@@ -23,6 +23,7 @@ import serverStats from './daemons/server-stats';
import notesStats from './daemons/notes-stats';
import loadConfig from './config/load';
import { Config } from './config/types';
+import { lessThan } from './prelude/array';
const clusterLog = debug('misskey:cluster');
const ev = new Xev();
@@ -158,11 +159,19 @@ function checkMongoDb(config: Config) {
mongoDBLogger.info(`Connecting to ${uri}`);
mongo.then(() => {
+ nativeDbConn().then(db => db.admin().serverInfo()).then(x => x.version).then((version: string) => {
+ mongoDBLogger.info(`Version: ${version}`);
+ if (lessThan(version.split('.').map(x => parseInt(x, 10)), [3, 6])) {
+ mongoDBLogger.error(`MongoDB version is less than 3.6. Please upgrade it.`);
+ process.exit(1);
+ }
+ });
+
mongoDBLogger.succ('Connectivity confirmed');
})
- .catch(err => {
- mongoDBLogger.error(err.message);
- });
+ .catch(err => {
+ mongoDBLogger.error(err.message);
+ });
}
function spawnWorkers(limit: number) {
diff --git a/src/prelude/array.ts b/src/prelude/array.ts
index 69b52fde87..09457d2d0a 100644
--- a/src/prelude/array.ts
+++ b/src/prelude/array.ts
@@ -49,3 +49,11 @@ export function groupBy<T>(f: (x: T, y: T) => boolean, xs: T[]): T[][] {
export function groupOn<T, S>(f: (x: T) => S, xs: T[]): T[][] {
return groupBy((a, b) => f(a) === f(b), xs);
}
+
+export function lessThan(xs: number[], ys: number[]): boolean {
+ for (let i = 0; i < Math.min(xs.length, ys.length); i++) {
+ if (xs[i] < ys[i]) return true;
+ if (xs[i] > ys[i]) return false;
+ }
+ return xs.length < ys.length;
+}