FE-1858 FE-1853: fix pooler max connections (#38823)
* fix db config * add fetch of pooler cn
This commit is contained in:
@@ -4,18 +4,9 @@ import { formatBytes } from 'lib/helpers'
|
||||
import { Organization } from 'types'
|
||||
import { DiskAttributesData } from '../config/disk-attributes-query'
|
||||
import { MaxConnectionsData } from '../database/max-connections-query'
|
||||
import { PgbouncerConfigData } from '../database/pgbouncer-config-query'
|
||||
import { Project } from '../projects/project-detail-query'
|
||||
|
||||
export const getReportAttributes = (
|
||||
org: Organization,
|
||||
project: Project,
|
||||
diskConfig?: DiskAttributesData,
|
||||
maxConnections?: MaxConnectionsData,
|
||||
poolerConfig?: PgbouncerConfigData
|
||||
): ReportAttributes[] => {
|
||||
const computeSize = project?.infra_compute_size || 'medium'
|
||||
|
||||
export const getReportAttributes = (diskConfig?: DiskAttributesData): ReportAttributes[] => {
|
||||
return [
|
||||
{
|
||||
id: 'ram-usage',
|
||||
@@ -224,10 +215,9 @@ export const getReportAttributesV2: (
|
||||
project: Project,
|
||||
diskConfig?: DiskAttributesData,
|
||||
maxConnections?: MaxConnectionsData,
|
||||
poolerConfig?: PgbouncerConfigData
|
||||
) => ReportAttributes[] = (org, project, diskConfig, maxConnections, poolerConfig) => {
|
||||
pgBouncerMaxConnections?: number
|
||||
) => ReportAttributes[] = (org, project, diskConfig, maxConnections, pgBouncerMaxConnections) => {
|
||||
const isFreePlan = org?.plan?.id === 'free'
|
||||
const computeSize = project?.infra_compute_size || 'medium'
|
||||
const isSpendCapEnabled =
|
||||
org?.plan.id !== 'free' && !org?.usage_billing_enabled && project?.cloud_provider !== 'FLY'
|
||||
|
||||
@@ -507,7 +497,7 @@ export const getReportAttributesV2: (
|
||||
attribute: 'pg_pooler_max_connections',
|
||||
provider: 'reference-line',
|
||||
label: 'Max pooler connections',
|
||||
value: poolerConfig?.max_client_conn,
|
||||
value: pgBouncerMaxConnections,
|
||||
tooltip: 'Maximum allowed pooler connections for your current compute size',
|
||||
isMaxValue: true,
|
||||
},
|
||||
|
||||
@@ -42,6 +42,8 @@ import { useDatabaseSelectorStateSnapshot } from 'state/database-selector'
|
||||
import type { NextPageWithLayout } from 'types'
|
||||
import { AlertDescription_Shadcn_, Alert_Shadcn_, Button } from 'ui'
|
||||
import { ReportChartUpsell } from 'components/interfaces/Reports/v2/ReportChartUpsell'
|
||||
import { POOLING_OPTIMIZATIONS } from 'components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.constants'
|
||||
import { useProjectAddonsQuery } from 'data/subscriptions/project-addons-query'
|
||||
|
||||
const DatabaseReport: NextPageWithLayout = () => {
|
||||
return (
|
||||
@@ -107,6 +109,16 @@ const DatabaseUsage = () => {
|
||||
})
|
||||
const { data: poolerConfig } = usePgbouncerConfigQuery({ projectRef: project?.ref })
|
||||
|
||||
// PGBouncer connections
|
||||
const { data: addons } = useProjectAddonsQuery({ projectRef: project?.ref })
|
||||
const computeInstance = addons?.selected_addons.find((addon) => addon.type === 'compute_instance')
|
||||
const poolingOptimizations =
|
||||
POOLING_OPTIMIZATIONS[
|
||||
(computeInstance?.variant.identifier as keyof typeof POOLING_OPTIMIZATIONS) ??
|
||||
(project?.infra_compute_size === 'nano' ? 'ci_nano' : 'ci_micro')
|
||||
]
|
||||
const defaultMaxClientConn = poolingOptimizations.maxClientConn ?? 200
|
||||
|
||||
const { can: canUpdateDiskSizeConfig } = useAsyncCheckPermissions(
|
||||
PermissionAction.UPDATE,
|
||||
'projects',
|
||||
@@ -117,19 +129,13 @@ const DatabaseUsage = () => {
|
||||
}
|
||||
)
|
||||
|
||||
const REPORT_ATTRIBUTES = getReportAttributes(
|
||||
org!,
|
||||
project!,
|
||||
diskConfig,
|
||||
maxConnections,
|
||||
poolerConfig
|
||||
)
|
||||
const REPORT_ATTRIBUTES = getReportAttributes(diskConfig)
|
||||
const REPORT_ATTRIBUTES_V2 = getReportAttributesV2(
|
||||
org!,
|
||||
project!,
|
||||
diskConfig,
|
||||
maxConnections,
|
||||
poolerConfig
|
||||
defaultMaxClientConn
|
||||
)
|
||||
|
||||
const { isLoading: isUpdatingDiskSize } = useProjectDiskResizeMutation({
|
||||
|
||||
Reference in New Issue
Block a user