mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-21 09:38:01 +02:00
Server: Added way to debug slow queries
This commit is contained in:
parent
1c597883ef
commit
e8532441bc
@ -13,3 +13,11 @@ services:
|
||||
- POSTGRES_PASSWORD=joplin
|
||||
- POSTGRES_USER=joplin
|
||||
- POSTGRES_DB=joplin
|
||||
|
||||
# Use this to specify additional Postgres
|
||||
# config parameters:
|
||||
#
|
||||
# command:
|
||||
# - "postgres"
|
||||
# - "-c"
|
||||
# - "log_min_duration_statement=0"
|
||||
|
@ -94,7 +94,27 @@ export async function waitForConnection(dbConfig: DatabaseConfig): Promise<Conne
|
||||
}
|
||||
|
||||
export async function connectDb(dbConfig: DatabaseConfig): Promise<DbConnection> {
|
||||
return knex(makeKnexConfig(dbConfig));
|
||||
const connection = knex(makeKnexConfig(dbConfig));
|
||||
|
||||
const debugSlowQueries = false;
|
||||
|
||||
if (debugSlowQueries) {
|
||||
const startTimes: Record<string, number> = {};
|
||||
|
||||
const slowQueryDuration = 10;
|
||||
|
||||
connection.on('query', (data) => {
|
||||
startTimes[data.__knexQueryUid] = Date.now();
|
||||
});
|
||||
|
||||
connection.on('query-response', (_response, data) => {
|
||||
const duration = Date.now() - startTimes[data.__knexQueryUid];
|
||||
if (duration < slowQueryDuration) return;
|
||||
console.info(`SQL: ${data.sql} (${duration}ms)`);
|
||||
});
|
||||
}
|
||||
|
||||
return connection;
|
||||
}
|
||||
|
||||
export async function disconnectDb(db: DbConnection) {
|
||||
|
@ -186,7 +186,7 @@ export async function execRequest(routes: Routers, ctx: AppContext) {
|
||||
if (!match) throw new ErrorNotFound();
|
||||
|
||||
const endPoint = match.route.findEndPoint(ctx.request.method as HttpMethod, match.subPath.schema);
|
||||
if (ctx.URL && !isValidOrigin(ctx.URL.origin, baseUrl(endPoint.type), endPoint.type)) throw new ErrorNotFound('Invalid origin', 'invalidOrigin');
|
||||
if (ctx.URL && !isValidOrigin(ctx.URL.origin, baseUrl(endPoint.type), endPoint.type)) throw new ErrorNotFound(`Invalid origin: ${ctx.URL.origin}`, 'invalidOrigin');
|
||||
|
||||
// This is a generic catch-all for all private end points - if we
|
||||
// couldn't get a valid session, we exit now. Individual end points
|
||||
|
Loading…
Reference in New Issue
Block a user