From 1d1b4a5d9c3eb2c9a3408462dfcb74c2f3af0188 Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Thu, 21 Jul 2022 09:52:34 +0800 Subject: [PATCH 1/4] fix: "possible fix" - always use project ref incase the project rest url changes --- .../components/layouts/ProjectLayout/ConnectingState.tsx | 3 ++- .../components/layouts/ProjectLayout/ProjectLayout.tsx | 2 ++ studio/lib/pingPostgrest.ts | 9 +++++++-- studio/stores/app/ProjectStore.ts | 7 ++----- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/studio/components/layouts/ProjectLayout/ConnectingState.tsx b/studio/components/layouts/ProjectLayout/ConnectingState.tsx index db284a04e88..102cbae075f 100644 --- a/studio/components/layouts/ProjectLayout/ConnectingState.tsx +++ b/studio/components/layouts/ProjectLayout/ConnectingState.tsx @@ -37,7 +37,8 @@ const ConnectingState: FC = ({ project }) => { }, [project]) const testProjectConnection = async () => { - const result = await pingPostgrest(project.restUrl!, { + console.log('project.restUrl', project.restUrl) + const result = await pingPostgrest(project.restUrl!, project.ref, { kpsVersion: project.kpsVersion, }) if (result) { diff --git a/studio/components/layouts/ProjectLayout/ProjectLayout.tsx b/studio/components/layouts/ProjectLayout/ProjectLayout.tsx index 15b9292cd35..00389e1cb00 100644 --- a/studio/components/layouts/ProjectLayout/ProjectLayout.tsx +++ b/studio/components/layouts/ProjectLayout/ProjectLayout.tsx @@ -114,6 +114,8 @@ const ContentWrapper: FC = observer(({ isLoading, children const isProjectPausing = ui.selectedProject?.status === PROJECT_STATUS.GOING_DOWN const isProjectOffline = ui.selectedProject?.postgrestStatus === 'OFFLINE' + console.log('ui.selectedProject', ui.selectedProject) + return ( <> {isLoading || ui.selectedProject === undefined ? ( diff --git a/studio/lib/pingPostgrest.ts b/studio/lib/pingPostgrest.ts index 169b9afd327..21d71be3039 100644 --- a/studio/lib/pingPostgrest.ts +++ b/studio/lib/pingPostgrest.ts @@ -1,3 +1,4 @@ +import { String } from 'lodash' import semver from 'semver' import { headWithTimeout, getWithTimeout } from './common/fetch' import { API_URL } from './constants' @@ -16,12 +17,13 @@ import { API_URL } from './constants' */ async function pingPostgrest( restUrl: string, + projectRef: string, options?: { kpsVersion?: string timeout?: number } ) { - const projectRef = restUrl.match(/https:\/\/(\w+)\.supabase\./)?.[1] + console.log('projectRef inside ping postgres', projectRef) if (projectRef === undefined) return false const serviceApiKey = await getServiceApiKey(projectRef, options?.timeout) if (serviceApiKey === undefined) return false @@ -41,7 +43,10 @@ async function pingPostgrest( } export default pingPostgrest -const getServiceApiKey = async (projectRef: string, timeout = DEFAULT_TIMEOUT_MILLISECONDS): Promise => { +const getServiceApiKey = async ( + projectRef: string, + timeout = DEFAULT_TIMEOUT_MILLISECONDS +): Promise => { const response = await getWithTimeout(`${API_URL}/props/project/${projectRef}/api`, { timeout }) if (response.error || response.autoApiService.service_api_keys.length === 0) return undefined return response.autoApiService.serviceApiKey diff --git a/studio/stores/app/ProjectStore.ts b/studio/stores/app/ProjectStore.ts index 87744a165a8..028f9bc31f6 100644 --- a/studio/stores/app/ProjectStore.ts +++ b/studio/stores/app/ProjectStore.ts @@ -62,11 +62,8 @@ export default class ProjectStore extends PostgresMetaInterface { } async pingPostgrest(project: Project): Promise<'ONLINE' | 'OFFLINE' | undefined> { - if ( - project.status === PROJECT_STATUS.ACTIVE_HEALTHY && - project.restUrl - ) { - const success = await pingPostgrest(project.restUrl, { + if (project.status === PROJECT_STATUS.ACTIVE_HEALTHY && project.restUrl) { + const success = await pingPostgrest(project.restUrl, project.ref, { kpsVersion: project.kpsVersion, }) return success ? 'ONLINE' : 'OFFLINE' From b168221690ff26211c37bce1b5e8eee8ccc0b0fe Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Thu, 21 Jul 2022 09:53:21 +0800 Subject: [PATCH 2/4] Update pingPostgrest.ts --- studio/lib/pingPostgrest.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/studio/lib/pingPostgrest.ts b/studio/lib/pingPostgrest.ts index 21d71be3039..a324a5b1c7c 100644 --- a/studio/lib/pingPostgrest.ts +++ b/studio/lib/pingPostgrest.ts @@ -23,7 +23,6 @@ async function pingPostgrest( timeout?: number } ) { - console.log('projectRef inside ping postgres', projectRef) if (projectRef === undefined) return false const serviceApiKey = await getServiceApiKey(projectRef, options?.timeout) if (serviceApiKey === undefined) return false From 8f74b500d83dba4971f743c0134906b337e6124f Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Thu, 21 Jul 2022 09:54:47 +0800 Subject: [PATCH 3/4] Update ConnectingState.tsx --- studio/components/layouts/ProjectLayout/ConnectingState.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/studio/components/layouts/ProjectLayout/ConnectingState.tsx b/studio/components/layouts/ProjectLayout/ConnectingState.tsx index 102cbae075f..aec6262c5db 100644 --- a/studio/components/layouts/ProjectLayout/ConnectingState.tsx +++ b/studio/components/layouts/ProjectLayout/ConnectingState.tsx @@ -37,7 +37,6 @@ const ConnectingState: FC = ({ project }) => { }, [project]) const testProjectConnection = async () => { - console.log('project.restUrl', project.restUrl) const result = await pingPostgrest(project.restUrl!, project.ref, { kpsVersion: project.kpsVersion, }) From 4b904a4086f8d84a6a873b3e6e6f66a45117510f Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Thu, 21 Jul 2022 09:55:04 +0800 Subject: [PATCH 4/4] Update ProjectLayout.tsx --- studio/components/layouts/ProjectLayout/ProjectLayout.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/studio/components/layouts/ProjectLayout/ProjectLayout.tsx b/studio/components/layouts/ProjectLayout/ProjectLayout.tsx index 00389e1cb00..15b9292cd35 100644 --- a/studio/components/layouts/ProjectLayout/ProjectLayout.tsx +++ b/studio/components/layouts/ProjectLayout/ProjectLayout.tsx @@ -114,8 +114,6 @@ const ContentWrapper: FC = observer(({ isLoading, children const isProjectPausing = ui.selectedProject?.status === PROJECT_STATUS.GOING_DOWN const isProjectOffline = ui.selectedProject?.postgrestStatus === 'OFFLINE' - console.log('ui.selectedProject', ui.selectedProject) - return ( <> {isLoading || ui.selectedProject === undefined ? (