Add max active postgres requests

This commit is contained in:
Ajay
2022-11-12 15:29:55 -05:00
parent 6c18579a78
commit ed5e3373a5
3 changed files with 13 additions and 4 deletions

View File

@@ -76,7 +76,8 @@ addDefaults(config, {
port: 5432,
max: 10,
idleTimeoutMillis: 10000,
maxTries: 3
maxTries: 3,
maxActiveRequests: -1
},
postgresReadOnly: {
enabled: false,

View File

@@ -3,7 +3,7 @@ import { IDatabase, QueryOption, QueryType } from "./IDatabase";
import { Client, Pool, QueryResult, types } from "pg";
import fs from "fs";
import { CustomPostgresConfig, CustomPostgresReadOnlyConfig } from "../types/config.model";
import { CustomPostgresReadOnlyConfig, CustomWritePostgresConfig } from "../types/config.model";
import { timeoutPomise, PromiseWithState, savePromiseState, nextFulfilment } from "../utils/promise";
// return numeric (pg_type oid=1700) as float
@@ -22,7 +22,7 @@ export interface DatabaseConfig {
fileNamePrefix: string,
readOnly: boolean,
createDbIfNotExists: boolean,
postgres: CustomPostgresConfig,
postgres: CustomWritePostgresConfig,
postgresReadOnly: CustomPostgresReadOnlyConfig
}
@@ -105,6 +105,10 @@ export class Postgres implements IDatabase {
Logger.debug(`prepare (postgres): type: ${type}, query: ${query}, params: ${params}`);
if (this.activePostgresRequests > this.config.postgres.maxActiveRequests) {
throw new Error("Too many active postgres requests");
}
const pendingQueries: PromiseWithState<QueryResult<any>>[] = [];
let tries = 0;
let lastPool: Pool = null;

View File

@@ -19,6 +19,10 @@ export interface CustomPostgresConfig extends PoolConfig {
maxTries: number;
}
export interface CustomWritePostgresConfig extends CustomPostgresConfig {
maxActiveRequests: number;
}
export interface CustomPostgresReadOnlyConfig extends CustomPostgresConfig {
weight: number;
readTimeout: number;
@@ -71,7 +75,7 @@ export interface SBSConfig {
redisRead?: RedisReadOnlyConfig;
redisRateLimit: boolean;
maxRewardTimePerSegmentInSeconds?: number;
postgres?: CustomPostgresConfig;
postgres?: CustomWritePostgresConfig;
postgresReadOnly?: CustomPostgresReadOnlyConfig;
dumpDatabase?: DumpDatabase;
diskCacheURL: string;