1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-23 00:22:19 +01:00

fix: fine tune db-config based on experience

This commit is contained in:
Ivar Conradi Østhus 2021-09-03 12:06:58 +02:00
parent 435b2bc83e
commit 11640e882b
7 changed files with 68 additions and 87 deletions

View File

@ -79,8 +79,8 @@
"cookie-session": "^2.0.0-rc.1",
"cors": "^2.8.5",
"db-migrate": "0.11.12",
"db-migrate-pg": "^1.2.2",
"db-migrate-shared": "^1.2.0",
"db-migrate-pg": "1.2.2",
"db-migrate-shared": "1.2.0",
"deep-diff": "^1.0.2",
"deepmerge": "^4.2.2",
"errorhandler": "^1.5.1",
@ -90,7 +90,7 @@
"helmet": "^4.1.0",
"joi": "^17.3.0",
"js-yaml": "^3.14.0",
"knex": "0.95.5",
"knex": "0.95.10",
"log4js": "^6.0.0",
"memoizee": "^0.4.15",
"mime": "^2.4.2",
@ -101,7 +101,7 @@
"nodemailer": "^6.5.0",
"owasp-password-strength-test": "^1.3.0",
"parse-database-url": "^0.3.0",
"pg": "^8.0.3",
"pg": "^8.7.1",
"pg-connection-string": "^2.5.0",
"pkginfo": "^0.4.1",
"prom-client": "^13.1.0",

View File

@ -63,6 +63,7 @@ const defaultDbOptions: IDBOption = {
: { rejectUnauthorized: false },
driver: 'postgres',
version: process.env.DATABASE_VERSION,
acquireConnectionTimeout: 30000,
pool: {
min: safeNumber(process.env.DATABASE_POOL_MIN, 0),
max: safeNumber(process.env.DATABASE_POOL_MAX, 4),
@ -70,6 +71,7 @@ const defaultDbOptions: IDBOption = {
process.env.DATABASE_POOL_IDLE_TIMEOUT_MS,
30000,
),
propagateCreateError: false,
},
schema: process.env.DATABASE_SCHEMA || 'public',
disableMigration: false,

View File

@ -36,6 +36,7 @@ async function createApp(
const db = createDb(config);
const stores = createStores(config, eventBus, db);
const services = createServices(stores, config);
const metricsMonitor = createMetricsMonitor();
const unleashSession = sessionDb(config, db);
@ -112,9 +113,11 @@ async function start(opts: IUnleashOptions = {}): Promise<IUnleash> {
try {
if (config.db.disableMigration) {
logger.info('DB migrations disabled');
logger.info('DB migration: disabled');
} else {
logger.info('DB migration: start');
await migrator(config);
logger.info('DB migration: end');
}
} catch (err) {
logger.error('Failed to migrate db', err);

View File

@ -18,10 +18,12 @@ export interface IDBOption {
ssl?: ISSLOption | boolean;
driver: 'postgres';
version?: string;
acquireConnectionTimeout?: number;
pool?: {
min?: number;
max?: number;
idleTimeoutMillis?: number;
propagateCreateError?: boolean;
};
schema: string;
disableMigration: boolean;

View File

@ -4,14 +4,16 @@ require('db-migrate-shared').log.setLogLevel('error');
const { getInstance } = require('db-migrate');
function migrateDb({ db }) {
const custom = { ...db };
const dbmigrate = getInstance(true, {
async function migrateDb({ db }) {
const custom = { ...db, connectionTimeoutMillis: 10000 };
const dbm = getInstance(true, {
cwd: __dirname,
config: { custom },
env: 'custom',
});
return dbmigrate.up();
return dbm.up();
}
module.exports = migrateDb;

View File

@ -1,3 +1,9 @@
import * as unleash from './lib/server-impl';
unleash.start();
try {
unleash.start();
} catch (error) {
// eslint-disable-next-line no-console
console.error(error);
process.exit();
}

120
yarn.lock
View File

@ -1233,12 +1233,12 @@ async@^3.1.1:
async@~0.9.0:
version "0.9.2"
resolved "https://registry.npmjs.org/async/-/async-0.9.2.tgz"
resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
async@~1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/async/-/async-1.0.0.tgz"
resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9"
integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=
asynckit@^0.4.0:
@ -1677,12 +1677,12 @@ colorette@^1.2.2:
colors@1.0.x:
version "1.0.3"
resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
colors@^1.1.2:
version "1.4.0"
resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
@ -1923,7 +1923,7 @@ cssstyle@^2.3.0:
cycle@1.0.x:
version "1.0.3"
resolved "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"
resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2"
integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI=
d@1, d@^1.0.1:
@ -1967,9 +1967,9 @@ db-migrate-base@^2.3.0:
dependencies:
bluebird "^3.1.1"
db-migrate-pg@^1.2.2:
db-migrate-pg@1.2.2:
version "1.2.2"
resolved "https://registry.npmjs.org/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz"
resolved "https://registry.yarnpkg.com/db-migrate-pg/-/db-migrate-pg-1.2.2.tgz#66436dbad0ba398c05851d200f768db6b2e5bc1a"
integrity sha512-+rgrhGNWC2SzcfweopyZqOQ1Igz1RVFMUZwUs6SviHpOUzFwb0NZWkG0pw1GaO+JxTxS7VJjckUWkOwZbVYVag==
dependencies:
bluebird "^3.1.1"
@ -1977,14 +1977,14 @@ db-migrate-pg@^1.2.2:
pg "^8.0.3"
semver "^5.0.3"
db-migrate-shared@^1.2.0:
db-migrate-shared@1.2.0, db-migrate-shared@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/db-migrate-shared/-/db-migrate-shared-1.2.0.tgz"
integrity sha512-65k86bVeHaMxb2L0Gw3y5V+CgZSRwhVQMwDMydmw5MvIpHHwD6SmBciqIwHsZfzJ9yzV/yYhdRefRM6FV5/siw==
db-migrate@0.11.12:
version "0.11.12"
resolved "https://registry.npmjs.org/db-migrate/-/db-migrate-0.11.12.tgz"
resolved "https://registry.yarnpkg.com/db-migrate/-/db-migrate-0.11.12.tgz#2798fc46da51fc2589497d462f3c6116802cfb6a"
integrity sha512-HUS8T5A3sKGCi+hz9XMKMwAKfU9sqhpDufW9nbVSRc5wxDO695uxA5lDe+If0OdvwwQOVxOnEZqkzAAxgyeFWg==
dependencies:
balanced-match "^1.0.0"
@ -2017,7 +2017,7 @@ debug@3.2.6:
dependencies:
ms "^2.1.1"
debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
debug@4, debug@4.3.2, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
version "4.3.2"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz"
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
@ -2076,11 +2076,6 @@ deep-diff@^1.0.2:
resolved "https://registry.npmjs.org/deep-diff/-/deep-diff-1.0.2.tgz"
integrity sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==
deep-equal@~0.2.1:
version "0.2.2"
resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz"
integrity sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz"
@ -2786,7 +2781,7 @@ extsprintf@^1.2.0:
eyes@0.1.x:
version "0.1.8"
resolved "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"
resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=
faker@^5.5.3:
@ -3406,11 +3401,6 @@ husky@^7.0.1:
resolved "https://registry.npmjs.org/husky/-/husky-7.0.1.tgz"
integrity sha512-gceRaITVZ+cJH9sNHqx5tFwbzlLCVxtVZcusME8JYQ8Edy5mpGDOqD8QBCdMhpyo9a+JXddnujQ4rpY2Ff9SJA==
i@0.3.x:
version "0.3.6"
resolved "https://registry.npmjs.org/i/-/i-0.3.6.tgz"
integrity sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
@ -3816,7 +3806,7 @@ isobject@^3.0.0, isobject@^3.0.1:
isstream@0.1.x, isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
istanbul-lib-coverage@^3.0.0:
@ -4451,21 +4441,21 @@ kleur@^3.0.3:
resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz"
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
knex@0.95.5:
version "0.95.5"
resolved "https://registry.npmjs.org/knex/-/knex-0.95.5.tgz"
integrity sha512-h6cuN78nSCqt5KLb06HnLE2Oj2svMf3l2YUSYpLnJuwXetGysn7KgmFJU1RDdl5dftvLAEEfA8IvqQIalgcnag==
knex@0.95.10:
version "0.95.10"
resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.10.tgz#9c41a4f69309bc437f79985cbc0a1e7a3208483e"
integrity sha512-I60A8TXcMdeJlE6h7DSgEYyY37S7kgLObz1qlJ7QvPMD6vnKO5dtuLEht5pMia9Qf5BomqVgkWCdVTqcC/ImOA==
dependencies:
colorette "1.2.1"
commander "^7.1.0"
debug "4.3.1"
debug "4.3.2"
escalade "^3.1.1"
esm "^3.2.25"
getopts "2.2.5"
interpret "^2.2.0"
lodash "^4.17.21"
pg-connection-string "2.4.0"
rechoir "^0.7.0"
pg-connection-string "2.5.0"
rechoir "0.7.0"
resolve-from "^5.0.0"
tarn "^3.0.1"
tildify "2.0.0"
@ -4901,18 +4891,18 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mkdirp@0.x.x, mkdirp@^0.5.4, mkdirp@~0.5.0:
mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mkdirp@^0.5.4, mkdirp@~0.5.0:
version "0.5.5"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
dependencies:
minimist "^1.2.5"
mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
module-not-found-error@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/module-not-found-error/-/module-not-found-error-1.0.1.tgz"
@ -4969,7 +4959,7 @@ mustache@^4.1.0:
mute-stream@~0.0.4:
version "0.0.8"
resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
nanomatch@^1.2.9:
@ -4994,11 +4984,6 @@ natural-compare@^1.4.0:
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
ncp@1.0.x:
version "1.0.1"
resolved "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz"
integrity sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz"
@ -5476,7 +5461,7 @@ pg-connection-string@2.4.0:
resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.4.0.tgz"
integrity sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==
pg-connection-string@^2.5.0:
pg-connection-string@2.5.0, pg-connection-string@^2.5.0:
version "2.5.0"
resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz"
integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==
@ -5507,7 +5492,7 @@ pg-types@^2.1.0:
postgres-date "~1.0.4"
postgres-interval "^1.1.0"
pg@^8.0.3:
pg@^8.0.3, pg@^8.7.1:
version "8.7.1"
resolved "https://registry.npmjs.org/pg/-/pg-8.7.1.tgz"
integrity sha512-7bdYcv7V6U3KAtWjpQJJBww0UEsWuh4yQ/EjNf2HeO/NnvKjpvhEIe/A/TleP6wtmSKnUnghs5A9jUoK6iDdkA==
@ -5659,14 +5644,14 @@ promise-polyfill@^8.1.3:
integrity sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==
prompt@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/prompt/-/prompt-1.1.0.tgz"
integrity sha512-ec1vUPXCplDBDUVD8uPa3XGA+OzLrO40Vxv3F1uxoiZGkZhdctlK2JotcHq5X6ExjocDOGwGdCSXloGNyU5L1Q==
version "1.2.0"
resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.2.0.tgz#5d8f1d9011766bac07abde510dbf4338d87b4f02"
integrity sha512-iGerYRpRUg5ZyC+FJ/25G5PUKuWAGRjW1uOlhX7Pi3O5YygdK6R+KEaBjRbHSkU5vfS5PZCltSPZdDtUYwRCZA==
dependencies:
async "~0.9.0"
colors "^1.1.2"
read "1.0.x"
revalidator "0.1.x"
utile "0.3.x"
winston "2.x"
prompts@^2.0.1:
@ -5816,7 +5801,7 @@ read-pkg@^6.0.0:
read@1.0.x:
version "1.0.7"
resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz"
resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=
dependencies:
mute-stream "~0.0.4"
@ -5863,6 +5848,13 @@ readable-stream@~1.0.31:
isarray "0.0.1"
string_decoder "~0.10.x"
rechoir@0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca"
integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==
dependencies:
resolve "^1.9.0"
rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz"
@ -5870,13 +5862,6 @@ rechoir@^0.6.2:
dependencies:
resolve "^1.1.6"
rechoir@^0.7.0:
version "0.7.1"
resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz"
integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==
dependencies:
resolve "^1.9.0"
redent@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz"
@ -6020,7 +6005,7 @@ reusify@^1.0.4:
revalidator@0.1.x:
version "0.1.8"
resolved "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz"
resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b"
integrity sha1-/s5hv6DBtSoga9axgZgYS91SOjs=
rfdc@^1.1.4:
@ -6028,13 +6013,6 @@ rfdc@^1.1.4:
resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz"
integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
rimraf@2.x.x:
version "2.7.1"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
rimraf@^3.0.0, rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
@ -6385,7 +6363,7 @@ sshpk@^1.7.0:
stack-trace@0.0.x:
version "0.0.10"
resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz"
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
stack-utils@^2.0.3:
@ -7054,18 +7032,6 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
utile@0.3.x:
version "0.3.0"
resolved "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz"
integrity sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=
dependencies:
async "~0.9.0"
deep-equal "~0.2.1"
i "0.3.x"
mkdirp "0.x.x"
ncp "1.0.x"
rimraf "2.x.x"
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
@ -7234,7 +7200,7 @@ wide-align@^1.1.0:
winston@2.x:
version "2.4.5"
resolved "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz"
resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.5.tgz#f2e431d56154c4ea765545fc1003bd340c95b59a"
integrity sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==
dependencies:
async "~1.0.0"