Merge branch 'main' into glitch-soc/merge-upstream

Conflicts:
- `README.md`:
  Minor upstream change, our README is completely different.
  Kept ours.
- `lib/tasks/assets.rake`:
  glitch-soc has extra code to deal with its theming system,
  upstream changed a line that exists in glitch-soc.
  Applied upstream changes.
This commit is contained in:
Claire
2023-02-09 12:46:12 +01:00
216 changed files with 767 additions and 324 deletions

View File

@ -127,7 +127,6 @@ const startWorker = async (workerId) => {
database: process.env.DB_NAME || 'mastodon_development',
host: process.env.DB_HOST || pg.defaults.host,
port: process.env.DB_PORT || pg.defaults.port,
max: 10,
},
production: {
@ -136,20 +135,19 @@ const startWorker = async (workerId) => {
database: process.env.DB_NAME || 'mastodon_production',
host: process.env.DB_HOST || 'localhost',
port: process.env.DB_PORT || 5432,
max: 10,
},
};
if (!!process.env.DB_SSLMODE && process.env.DB_SSLMODE !== 'disable') {
pgConfigs.development.ssl = true;
pgConfigs.production.ssl = true;
}
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(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL)));
const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL), {
max: process.env.DB_POOL || 10,
connectionTimeoutMillis: 15000,
ssl: !!process.env.DB_SSLMODE && process.env.DB_SSLMODE !== 'disable',
}));
const server = http.createServer(app);
const redisNamespace = process.env.REDIS_NAMESPACE || null;
@ -858,6 +856,27 @@ const startWorker = async (workerId) => {
res.end('OK');
});
app.get('/metrics', (req, res) => server.getConnections((err, count) => {
res.writeHeader(200, { 'Content-Type': 'application/openmetrics-text; version=1.0.0; charset=utf-8' });
res.write('# TYPE connected_clients gauge\n');
res.write('# HELP connected_clients The number of clients connected to the streaming server\n');
res.write(`connected_clients ${count}.0\n`);
res.write('# TYPE connected_channels gauge\n');
res.write('# HELP connected_channels The number of Redis channels the streaming server is subscribed to\n');
res.write(`connected_channels ${Object.keys(subs).length}.0\n`);
res.write('# TYPE pg.pool.total_connections gauge \n');
res.write('# HELP pg.pool.total_connections The total number of clients existing within the pool\n');
res.write(`pg.pool.total_connections ${pgPool.totalCount}.0\n`);
res.write('# TYPE pg.pool.idle_connections gauge \n');
res.write('# HELP pg.pool.idle_connections The number of clients which are not checked out but are currently idle in the pool\n');
res.write(`pg.pool.idle_connections ${pgPool.idleCount}.0\n`);
res.write('# TYPE pg.pool.waiting_queries gauge \n');
res.write('# HELP pg.pool.waiting_queries The number of queued requests waiting on a client when all clients are checked out\n');
res.write(`pg.pool.waiting_queries ${pgPool.waitingCount}.0\n`);
res.write('# EOF\n');
res.end();
}));
app.use(authenticationMiddleware);
app.use(errorMiddleware);