From fad653a2620fa0bd4c2257b70e3f224cf1413f73 Mon Sep 17 00:00:00 2001 From: David Aaron Suddjian Date: Thu, 5 May 2022 11:32:37 -0700 Subject: [PATCH 1/5] debugging --- .../src/connection/callApi/callApi.ts | 27 ++++++++---- .../src/query/api/v1/makeApi.ts | 42 +++++++++++-------- 2 files changed, 43 insertions(+), 26 deletions(-) diff --git a/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts b/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts index f50b24127e7a6..543311a5934cf 100644 --- a/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts +++ b/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts @@ -96,25 +96,34 @@ export default async function callApi({ CACHE_AVAILABLE && (window.location && window.location.protocol) === 'https:' ) { - const supersetCache = await caches.open(CACHE_KEY); - const cachedResponse = await supersetCache.match(url); - if (cachedResponse) { - // if we have a cached response, send its ETag in the - // `If-None-Match` header in a conditional request - const etag = cachedResponse.headers.get('Etag') as string; - request.headers = { ...request.headers, 'If-None-Match': etag }; + let supersetCache: Cache | null = null; + try { + supersetCache = await caches.open(CACHE_KEY); + const cachedResponse = await supersetCache.match(url); + if (cachedResponse) { + // if we have a cached response, send its ETag in the + // `If-None-Match` header in a conditional request + const etag = cachedResponse.headers.get('Etag') as string; + request.headers = { ...request.headers, 'If-None-Match': etag }; + } + } catch (err) { + console.error('failed to check cache', err); } const response = await fetchWithRetry(url, request); - if (response.status === HTTP_STATUS_NOT_MODIFIED) { + if (supersetCache && response.status === HTTP_STATUS_NOT_MODIFIED) { const cachedFullResponse = await supersetCache.match(url); if (cachedFullResponse) { return cachedFullResponse.clone(); } throw new Error('Received 304 but no content is cached!'); } - if (response.status === HTTP_STATUS_OK && response.headers.get('Etag')) { + if ( + supersetCache && + response.status === HTTP_STATUS_OK && + response.headers.get('Etag') + ) { supersetCache.delete(url); supersetCache.put(url, response.clone()); } diff --git a/superset-frontend/packages/superset-ui-core/src/query/api/v1/makeApi.ts b/superset-frontend/packages/superset-ui-core/src/query/api/v1/makeApi.ts index f286d93f4ea81..4728b588d175a 100644 --- a/superset-frontend/packages/superset-ui-core/src/query/api/v1/makeApi.ts +++ b/superset-frontend/packages/superset-ui-core/src/query/api/v1/makeApi.ts @@ -68,23 +68,26 @@ export default function makeApi< Payload = SupersetPayload, Result = JsonObject, T extends ParseMethod = ParseMethod, ->({ - endpoint, - method, - requestType: requestType_, - responseType, - processResponse, - ...requestOptions -}: SupersetApiFactoryOptions & { - /** - * How to parse response, choose from: 'json' | 'text' | 'raw'. - */ - responseType?: T; - /** - * Further process parsed response - */ - processResponse?(result: ParsedResponseType): Result; -}) { +>( + options: SupersetApiFactoryOptions & { + /** + * How to parse response, choose from: 'json' | 'text' | 'raw'. + */ + responseType?: T; + /** + * Further process parsed response + */ + processResponse?(result: ParsedResponseType): Result; + }, +) { + const { + endpoint, + method, + requestType: requestType_, + responseType, + processResponse, + ...requestOptions + } = options; // use `search` payload (searchParams) when it's a GET request const requestType = requestType_ || (isPayloadless(method) ? 'search' : 'json'); @@ -140,6 +143,11 @@ export default function makeApi< processResponse ? processResponse(typedResult) : typedResult ) as Result; } catch (error) { + console.error('request failed, todo remove this log', { + options, + payload, + error, + }); return handleError(error as ErrorInput); } } From 4728df63a46e5b6583e278009ed0a61e0d44540e Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Mon, 9 May 2022 11:18:31 -0700 Subject: [PATCH 2/5] logging --- .../packages/superset-ui-core/src/connection/callApi/callApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts b/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts index 543311a5934cf..78bc155045e5c 100644 --- a/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts +++ b/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts @@ -107,7 +107,7 @@ export default async function callApi({ request.headers = { ...request.headers, 'If-None-Match': etag }; } } catch (err) { - console.error('failed to check cache', err); + console.log('failed to check cache', err); } const response = await fetchWithRetry(url, request); From dc9b7e51c11be058f94b138a3a55671a5930086e Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Tue, 10 May 2022 16:12:57 -0700 Subject: [PATCH 3/5] add comment --- .../superset-ui-core/src/connection/callApi/callApi.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts b/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts index 78bc155045e5c..14148eadb9dd2 100644 --- a/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts +++ b/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts @@ -106,8 +106,8 @@ export default async function callApi({ const etag = cachedResponse.headers.get('Etag') as string; request.headers = { ...request.headers, 'If-None-Match': etag }; } - } catch (err) { - console.log('failed to check cache', err); + } catch { + // todo: caches.open handle error } const response = await fetchWithRetry(url, request); From e79026abb947a4750bc7f0839e740b9f1da77f66 Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Tue, 10 May 2022 16:17:02 -0700 Subject: [PATCH 4/5] remove logging --- .../packages/superset-ui-core/src/query/api/v1/makeApi.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/superset-frontend/packages/superset-ui-core/src/query/api/v1/makeApi.ts b/superset-frontend/packages/superset-ui-core/src/query/api/v1/makeApi.ts index 4728b588d175a..b7229cc98006b 100644 --- a/superset-frontend/packages/superset-ui-core/src/query/api/v1/makeApi.ts +++ b/superset-frontend/packages/superset-ui-core/src/query/api/v1/makeApi.ts @@ -143,11 +143,6 @@ export default function makeApi< processResponse ? processResponse(typedResult) : typedResult ) as Result; } catch (error) { - console.error('request failed, todo remove this log', { - options, - payload, - error, - }); return handleError(error as ErrorInput); } } From f0e19097869677440e59bd09ae0ddf4ae92e9d15 Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Wed, 11 May 2022 13:05:55 -0700 Subject: [PATCH 5/5] Update superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com> --- .../packages/superset-ui-core/src/connection/callApi/callApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts b/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts index 14148eadb9dd2..7c3fe21fdb8a4 100644 --- a/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts +++ b/superset-frontend/packages/superset-ui-core/src/connection/callApi/callApi.ts @@ -107,7 +107,7 @@ export default async function callApi({ request.headers = { ...request.headers, 'If-None-Match': etag }; } } catch { - // todo: caches.open handle error + // If superset is in an iframe and third-party cookies are disabled, caches.open throws } const response = await fetchWithRetry(url, request);