diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2023-03-05 01:52:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-05 01:52:12 +0100 |
commit | be1792e1d45fd32c037195d3d03f09fbd4dbf00e (patch) | |
tree | 6140550f334ebe2dab9e4c0b0b2df4bf1c94e40f /streaming | |
parent | ade3c5d40c1f2bd534d85424a878f1d28b9352f4 (diff) |
Fix streaming API not being usable without `DATABASE_URL` (#23960)
Diffstat (limited to 'streaming')
-rw-r--r-- | streaming/index.js | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/streaming/index.js b/streaming/index.js index ba7cfea19..2cc4934ee 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -81,9 +81,10 @@ const startMaster = () => { log.warn(`Starting streaming API server master with ${numWorkers} workers`); }; -const startWorker = async (workerId) => { - log.warn(`Starting worker ${workerId}`); - +/** + * @return {Object.<string, any>} + */ +const pgConfigFromEnv = () => { const pgConfigs = { development: { user: process.env.DB_USER || pg.defaults.user, @@ -102,16 +103,45 @@ const startWorker = async (workerId) => { }, }; - const app = express(); + let baseConfig; - app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal'); + if (process.env.DATABASE_URL) { + baseConfig = dbUrlToConfig(process.env.DATABASE_URL); + } else { + baseConfig = pgConfigs[env]; + + if (process.env.DB_SSLMODE) { + switch(process.env.DB_SSLMODE) { + case 'disable': + case '': + baseConfig.ssl = false; + break; + case 'no-verify': + baseConfig.ssl = { rejectUnauthorized: false }; + break; + default: + baseConfig.ssl = {}; + break; + } + } + } - const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL), { + return { + ...baseConfig, max: process.env.DB_POOL || 10, connectionTimeoutMillis: 15000, - ssl: !!process.env.DB_SSLMODE && process.env.DB_SSLMODE !== 'disable', - })); + application_name: '', + }; +}; + +const startWorker = async (workerId) => { + log.warn(`Starting worker ${workerId}`); + + const app = express(); + + app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal'); + const pgPool = new pg.Pool(pgConfigFromEnv()); const server = http.createServer(app); const redisNamespace = process.env.REDIS_NAMESPACE || null; |