You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by "f14stelt (via GitHub)" <gi...@apache.org> on 2026/04/03 16:20:36 UTC

[I] OAuth2RedirectError lost in async chart queries (GLOBAL_ASYNC_QUERIES) [superset]

f14stelt opened a new issue, #39096:
URL: https://github.com/apache/superset/issues/39096

   ### Bug description
   
   **Bug description**
   When GLOBAL_ASYNC_QUERIES is enabled, chart queries on dashboards are executed by Celery workers instead of the web pod, so when a database requires OAuth2 authentication (e.g. Trino with Keycloak), the worker raises OAuth2RedirectError but the exception is caught by the generic Exception handler in load_chart_data_into_cache and serialized as a plain error message.
   The frontend receives "**You don't have permission to access the data.**" instead of the OAuth2 banner with the SSO authentication link.
   The same issue **does not** occur in SQL Lab or in synchronous mode, where OAuth2RedirectError is correctly intercepted and propagated to the frontend.
   
   **Steps to reproduce**
   
   1. Configure Superset with GLOBAL_ASYNC_QUERIES: True and a WebSocket or polling transport
   2. Configure a Trino database connection with OAuth2 (DATABASE_OAUTH2_CLIENTS)
   3. Open a dashboard that uses Trino as datasource
   4. Observe that charts show "You don't have permission to access the data." instead of the OAuth2 authentication banner
   5. Disable GLOBAL_ASYNC_QUERIES and reload — the OAuth2 banner appears correctly
   
   **Expected behavior**
   The OAuth2 authentication banner should appear in dashboard charts, exactly as it does in SQL Lab and in synchronous mode.
   
   **Root cause**
   In `superset/tasks/async_queries.py`, the `load_chart_data_into_cache` task catches all exceptions generically:
   ```
   except Exception as ex:
       # TODO: QueryContext should support SIP-40 style errors
       error = str(ex.message if hasattr(ex, "message") else ex)
       errors = [{"message": error}]
       async_query_manager.update_job(
           job_metadata, async_query_manager.STATUS_ERROR, errors=errors
       )
       raise
   ```
   
   `OAuth2RedirectError` is caught here and serialized as a plain string, losing the structured payload (`url,` `tab_id`, `redirect_uri`) that the frontend needs to render the OAuth2 banner.
   
   **Proposed fix**
   Intercept OAuth2RedirectError before the generic Exception handler and propagate the full error payload.
   
   ```
   except OAuth2RedirectError as ex:
       # Propagate OAuth2RedirectError to the frontend with the full payload
       # (url, tab_id, redirect_uri) so the OAuth2 banner is shown correctly
       async_query_manager.update_job(
           job_metadata,
           async_query_manager.STATUS_ERROR,
           errors=[{
               "message": ex.error.message,
               "error_type": ex.error.error_type.value,
               "level": ex.error.level.value,
               "extra": ex.error.extra,
           }],
       )
       raise
   except Exception as ex:
       # TODO: QueryContext should support SIP-40 style errors
       error = str(ex.message if hasattr(ex, "message") else ex)
       errors = [{"message": error}]
       async_query_manager.update_job(
           job_metadata, async_query_manager.STATUS_ERROR, errors=errors
       )
       raise
   ```
   
   **Known limitations of the proposed fix**
   
   - `raise` **after** `OAuth2RedirectError` — the final `raise` re-raises the exception in the worker, which logs it as an unexpected error and since this is an expected flow (user not yet authenticated), it pollutes the worker logs. It should either be removed or replaced with a return once the correct behavior is confirmed.
   - `tab_id` **context** mismatch — `tab_id` is propagated from `ex.error.extra` as-is. However, in an async context the original browser tab may no longer correspond to the tab that receives the OAuth2 event so it should be verified whether the OAuth2 banner closes automatically after login or remains open indefinitely, and whether the frontend `OAuth2RedirectMessage` component handles this case correctly.
   
   **Additional context**
   
   - The same fix should likely be applied to load_explore_json_into_cache in the same file
   - SERVER_NAME, APPLICATION_ROOT and PREFERRED_URL_SCHEME must also be configured for the Celery worker to be able to build the OAuth2 redirect URL outside of an active Flask request context
   
   **Superset version**
   5.0.0
   
   **Environment**
   Kubernetes (Helm chart), Celery workers with gevent pool, Trino with Keycloak OAuth2, WebSocket transport
   
   ### Screenshots/recordings
   
   _No response_
   
   ### Superset version
   
   5.0.0
   
   ### Python version
   
   3.10
   
   ### Node version
   
   Not applicable
   
   ### Browser
   
   Chrome
   
   ### Additional context
   
   _No response_
   
   ### Checklist
   
   - [x] I have searched Superset docs and Slack and didn't find a solution to my problem.
   - [x] I have searched the GitHub issue tracker and didn't find a similar bug report.
   - [x] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [I] OAuth2RedirectError lost in async chart queries (GLOBAL_ASYNC_QUERIES) [superset]

Posted by "rusackas (via GitHub)" <gi...@apache.org>.
rusackas commented on issue #39096:
URL: https://github.com/apache/superset/issues/39096#issuecomment-4254015655

   Not sure if @villebro is still working on GAQ, or maybe @eschutho can refer someone that's been playing with it. You're welcome to open a PR with the proposed changes for review, but in the meantime, @dosu what do you think about the author's proposed fix?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [I] OAuth2RedirectError lost in async chart queries (GLOBAL_ASYNC_QUERIES) [superset]

Posted by "rusackas (via GitHub)" <gi...@apache.org>.
rusackas commented on issue #39096:
URL: https://github.com/apache/superset/issues/39096#issuecomment-4898982682

   Likely fixed by PR #39897 (merged 2026-05-06): load_chart_data_into_cache in superset/tasks/async_queries.py now extracts SIP-40 structured errors for SupersetErrorException subclasses, and OAuth2RedirectError extends SupersetErrorException, so the OAuth2 payload is no longer flattened to a plain message.
   
   That said, the test PR linked above should seal the deal on this one.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [I] OAuth2RedirectError lost in async chart queries (GLOBAL_ASYNC_QUERIES) [superset]

Posted by "rusackas (via GitHub)" <gi...@apache.org>.
rusackas closed issue #39096: OAuth2RedirectError lost in async chart queries (GLOBAL_ASYNC_QUERIES)
URL: https://github.com/apache/superset/issues/39096


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [I] OAuth2RedirectError lost in async chart queries (GLOBAL_ASYNC_QUERIES) [superset]

Posted by "fowlerp397-tech (via GitHub)" <gi...@apache.org>.
fowlerp397-tech commented on issue #39096:
URL: https://github.com/apache/superset/issues/39096#issuecomment-4185498441

   Thanks for the details! It looks like you've covered all the bases.
   Hopefully, someone can help you soon.
   
   On Fri, Apr 3, 2026, 11:21 AM Sem Cersosimo ***@***.***>
   wrote:
   
   > *f14stelt* created an issue (apache/superset#39096)
   > <https://github.com/apache/superset/issues/39096>
   > Bug description
   >
   > *Bug description*
   > When GLOBAL_ASYNC_QUERIES is enabled, chart queries on dashboards are
   > executed by Celery workers instead of the web pod, so when a database
   > requires OAuth2 authentication (e.g. Trino with Keycloak), the worker
   > raises OAuth2RedirectError but the exception is caught by the generic
   > Exception handler in load_chart_data_into_cache and serialized as a plain
   > error message.
   > The frontend receives "*You don't have permission to access the data.*"
   > instead of the OAuth2 banner with the SSO authentication link.
   > The same issue *does not* occur in SQL Lab or in synchronous mode, where
   > OAuth2RedirectError is correctly intercepted and propagated to the frontend.
   >
   > *Steps to reproduce*
   >
   >    1. Configure Superset with GLOBAL_ASYNC_QUERIES: True and a WebSocket
   >    or polling transport
   >    2. Configure a Trino database connection with OAuth2
   >    (DATABASE_OAUTH2_CLIENTS)
   >    3. Open a dashboard that uses Trino as datasource
   >    4. Observe that charts show "You don't have permission to access the
   >    data." instead of the OAuth2 authentication banner
   >    5. Disable GLOBAL_ASYNC_QUERIES and reload — the OAuth2 banner appears
   >    correctly
   >
   > *Expected behavior*
   > The OAuth2 authentication banner should appear in dashboard charts,
   > exactly as it does in SQL Lab and in synchronous mode.
   >
   > *Root cause*
   > In superset/tasks/async_queries.py, the load_chart_data_into_cache task
   > catches all exceptions generically:
   >
   > except Exception as ex:
   >     # TODO: QueryContext should support SIP-40 style errors
   >     error = str(ex.message if hasattr(ex, "message") else ex)
   >     errors = [{"message": error}]
   >     async_query_manager.update_job(
   >         job_metadata, async_query_manager.STATUS_ERROR, errors=errors
   >     )
   >     raise
   >
   > OAuth2RedirectError is caught here and serialized as a plain string,
   > losing the structured payload (url, tab_id, redirect_uri) that the
   > frontend needs to render the OAuth2 banner.
   >
   > *Proposed fix*
   > Intercept OAuth2RedirectError before the generic Exception handler and
   > propagate the full error payload.
   >
   > except OAuth2RedirectError as ex:
   >     # Propagate OAuth2RedirectError to the frontend with the full payload
   >     # (url, tab_id, redirect_uri) so the OAuth2 banner is shown correctly
   >     async_query_manager.update_job(
   >         job_metadata,
   >         async_query_manager.STATUS_ERROR,
   >         errors=[{
   >             "message": ex.error.message,
   >             "error_type": ex.error.error_type.value,
   >             "level": ex.error.level.value,
   >             "extra": ex.error.extra,
   >         }],
   >     )
   >     raise
   > except Exception as ex:
   >     # TODO: QueryContext should support SIP-40 style errors
   >     error = str(ex.message if hasattr(ex, "message") else ex)
   >     errors = [{"message": error}]
   >     async_query_manager.update_job(
   >         job_metadata, async_query_manager.STATUS_ERROR, errors=errors
   >     )
   >     raise
   >
   > *Known limitations of the proposed fix*
   >
   >    - raise *after* OAuth2RedirectError — the final raise re-raises the
   >    exception in the worker, which logs it as an unexpected error and since
   >    this is an expected flow (user not yet authenticated), it pollutes the
   >    worker logs. It should either be removed or replaced with a return once the
   >    correct behavior is confirmed.
   >    - tab_id *context* mismatch — tab_id is propagated from ex.error.extra
   >    as-is. However, in an async context the original browser tab may no longer
   >    correspond to the tab that receives the OAuth2 event so it should be
   >    verified whether the OAuth2 banner closes automatically after login or
   >    remains open indefinitely, and whether the frontend
   >    OAuth2RedirectMessage component handles this case correctly.
   >
   > *Additional context*
   >
   >    - The same fix should likely be applied to
   >    load_explore_json_into_cache in the same file
   >    - SERVER_NAME, APPLICATION_ROOT and PREFERRED_URL_SCHEME must also be
   >    configured for the Celery worker to be able to build the OAuth2 redirect
   >    URL outside of an active Flask request context
   >
   > *Superset version*
   > 5.0.0
   >
   > *Environment*
   > Kubernetes (Helm chart), Celery workers with gevent pool, Trino with
   > Keycloak OAuth2, WebSocket transport
   > Screenshots/recordings
   >
   > *No response*
   > Superset version
   >
   > 5.0.0
   > Python version
   >
   > 3.10
   > Node version
   >
   > Not applicable
   > Browser
   >
   > Chrome
   > Additional context
   >
   > *No response*
   > Checklist
   >
   >    - I have searched Superset docs and Slack and didn't find a solution
   >    to my problem.
   >    - I have searched the GitHub issue tracker and didn't find a similar
   >    bug report.
   >    - I have checked Superset's logs for errors and if I found a relevant
   >    Python stacktrace, I included it here as text in the "additional context"
   >    section.
   >
   > —
   > Reply to this email directly, view it on GitHub
   > <https://github.com/apache/superset/issues/39096?email_source=notifications&email_token=B72HASPGYMR3B6Y4DTMNH6T4T7QGZA5CNFSL4Z3JMQ5C6L3HNF2C22DVMIXUS43TOVSS6NBSGAYTENBTGAYDFJTSMVQXG33OVJZXKYTTMNZGSYTFMSSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L>,
   > or unsubscribe
   > <https://github.com/notifications/unsubscribe-auth/B72HASPWHXI6LUBPDCBNCD34T7QGZAVCNFSM6AAAAACXL6EHHOVHI2DSMVQWIX3LMV43ASLTON2WKOZUGIYDCMRUGMYDAMQ>
   > .
   > You are receiving this because you are subscribed to this thread.Message
   > ID: ***@***.***>
   >
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [I] OAuth2RedirectError lost in async chart queries (GLOBAL_ASYNC_QUERIES) [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
dosubot[bot] commented on issue #39096:
URL: https://github.com/apache/superset/issues/39096#issuecomment-4254081513

   <!-- Answer -->
   The proposed fix is on the right track — the diagnosis is correct and the approach is sound. A few thoughts:
   
   **The fix works, but I'd suggest a broader catch.** Rather than catching only `OAuth2RedirectError`, catching `SupersetErrorException` (its parent class) would preserve structured error data for *all* typed exceptions, not just OAuth2. This is more future-proof and consistent with how `load_explore_json_into_cache` already special-cases `SupersetVizException` [[1]](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset/tasks/async_queries.py#L172-L177). The recommended pattern:
   
   ```python
   except SupersetErrorException as ex:
       errors = [ex.to_dict()]
       async_query_manager.update_job(
           job_metadata, async_query_manager.STATUS_ERROR, errors=errors
       )
       raise
   except Exception as ex:
       error = ex.message if hasattr(ex, "message") else str(ex)
       errors = [{"message": error}]
       async_query_manager.update_job(
           job_metadata, async_query_manager.STATUS_ERROR, errors=errors
       )
       raise
   ```
   
   `to_dict()` on `SupersetErrorException` [[2]](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset/exceptions.py#L73-L74) already serializes the full `SupersetError` including `error_type` (which is a `StrEnum`, so JSON-safe) and the `extra` dict with `url`, `tab_id`, `redirect_uri`. No manual field extraction needed.
   
   **On the known limitations the author raised:**
   
   - **`raise` polluting logs** — valid concern. For `OAuth2RedirectError` specifically this is an expected user flow, not an error. Celery's `raise Ignore()` or simply returning after `update_job` would avoid noisy tracebacks in worker logs.
   - **`tab_id` mismatch in async context** — also a valid concern. The frontend's `OAuth2RedirectMessage` component expects `tab_id` for cross-tab communication [[3]](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/src/components/ErrorMessage/OAuth2RedirectMessage.tsx#L39-L61). In the async flow the response arrives via WebSocket/polling, so the tab context may differ from the original request. This likely needs frontend-side investigation to confirm the OAuth2 banner behavior.
   - **Apply to both functions** — agreed, both `load_chart_data_into_cache` and `load_explore_json_into_cache` need the fix [[4]](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset/tasks/async_queries.py#L82-L114) [[5]](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset/tasks/async_queries.py#L116-L182).
   
   Overall, the analysis in the issue is thorough and the fix is straightforward. A PR with the `SupersetErrorException` catch (applied to both functions) would be a clean, minimal change.
   
   
   <!-- Dosu Comment Footer -->
   *To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=brand-link).*
   
   ---
   <sup>How did I do? [Good](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-great_response#message_id=0816c2cc-6102-441b-b277-783818c66b09&feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-irrelevant_answer#message_id=0816c2cc-6102-441b-b277-783818c66b09&feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-incorrect_sources#message_id=0816c2cc-6102-441b-b277-783818c66b09&feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-too_verbose#message_id=0816c2cc-6102-441b-b277-783818c66b09&feedback_type=too_verbose) | [Hallucination](https://
 app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-hallucination#message_id=0816c2cc-6102-441b-b277-783818c66b09&feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-bug_report#message_id=0816c2cc-6102-441b-b277-783818c66b09&feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=feedback-other#message_id=0816c2cc-6102-441b-b277-783818c66b09&feedback_type=other)</sup>
   [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/a28d3c7e-a9d3-459e-9fb6-3a6f9ff4f357/ask?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=chat-badge)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=The%20proposed%20fix%20is%20on%20the%20right%20track%20%E2%80%94%20the%20diagnosis%20is%20correct%20and%20the%20approach%20is%20sound.%20A%20few%20thoughts%3A%0A%0A%2A%2AThe%20fix%20works%2C%20but%20I%27d%20suggest%20a%20broader%20catch.%2A%2A%20Rather%20than%20catching%20only%20%60OAuth2RedirectError%60%2C%20catching%20%60SupersetErrorException%60%20%28its%20parent%20class%29%20would%20preserve%20structured%20error%20data%20for%20%2Aall%2A%20typed%20exceptions%2C%20not%20just%20OAuth2.%20This%20is%20more%20future-proof%20and%20consistent%20with%20how%20%60load_explore_json_into_cache%60%20already%20special-cases%20%60SupersetVizException%60%20%5B%5B1%5D%5D%28https%3A//gith
 ub.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset/tasks/async_queries.py%23L172-L177%29.%20The%20recommended%20pattern%3A%0A%0A%60%60%60python%0Aexcept%20SupersetErrorException%20as%20ex%3A%0A%20%20%20%20errors%20%3D%20%5Bex.to_dict%28%29%5D%0A%20%20%20%20async_query_manager.update_job%28%0A%20%20%20%20%20%20%20%20job_metadata%2C%20async_query_manager.STATUS_ERROR%2C%20errors%3Derrors%0A%20%20%20%20%29%0A%20%20%20%20raise%0Aexcept%20Exception%20as%20ex%3A%0A%20%20%20%20error%20%3D%20ex.message%20if%20hasattr%28ex%2C%20%22message%22%29%20else%20str%28ex%29%0A%20%20%20%20errors%20%3D%20%5B%7B%22message%22%3A%20error%7D%5D%0A%20%20%20%20async_query_manager.update_job%28%0A%20%20%20%20%20%20%20%20job_metadata%2C%20async_query_manager.STATUS_ERROR%2C%20errors%3Derrors%0A%20%20%20%20%29%0A%20%20%20%20raise%0A%60%60%60%0A%0A%60to_dict%28%29%60%20on%20%60SupersetErrorException%60%20%5B%5B2%5D%5D%28https%3A//github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3
 b063ffe45377799c/superset/exceptions.py%23L73-L74%29%20already%20serializes%20the%20full%20%60SupersetError%60%20including%20%60error_type%60%20%28which%20is%20a%20%60StrEnum%60%2C%20so%20JSON-safe%29%20and%20the%20%60extra%60%20dict%20with%20%60url%60%2C%20%60tab_id%60%2C%20%60redirect_uri%60.%20No%20manual%20field%20extraction%20needed.%0A%0A%2A%2AOn%20the%20known%20limitations%20the%20author%20raised%3A%2A%2A%0A%0A-%20%2A%2A%60raise%60%20polluting%20logs%2A%2A%20%E2%80%94%20valid%20concern.%20For%20%60OAuth2RedirectError%60%20specifically%20this%20is%20an%20expected%20user%20flow%2C%20not%20an%20error.%20Celery%27s%20%60raise%20Ignore%28%29%60%20or%20simply%20returning%20after%20%60update_job%60%20would%20avoid%20noisy%20tracebacks%20in%20worker%20logs.%0A-%20%2A%2A%60tab_id%60%20mismatch%20in%20async%20context%2A%2A%20%E2%80%94%20also%20a%20valid%20concern.%20The%20frontend%27s%20%60OAuth2RedirectMessage%60%20component%20expects%20%60tab_id%60%20for%20cross-tab%20communication%2
 0%5B%5B3%5D%5D%28https%3A//github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/src/components/ErrorMessage/OAuth2RedirectMessage.tsx%23L39-L61%29.%20In%20the%20async%20flow%20the%20response%20arrives%20via%20WebSocket/polling%2C%20so%20the%20tab%20context%20may%20differ%20from%20the%20original%20request.%20This%20likely%20needs%20frontend-side%20investigation%20to%20confirm%20the%20OAuth2%20banner%20behavior.%0A-%20%2A%2AApply%20to%20both%20functions%2A%2A%20%E2%80%94%20agreed%2C%20both%20%60load_chart_data_into_cache%60%20and%20%60load_explore_json_into_cache%60%20need%20the%20fix%20%5B%5B4%5D%5D%28https%3A//github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset/tasks/async_queries.py%23L82-L114%29%20%5B%5B5%5D%5D%28https%3A//github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset/tasks/async_queries.py%23L116-L182%29.%0A%0AOverall%2C%20the%20analysis%20in%20the%20issue%20is%20thorough%20and
 %20the%20fix%20is%20straightforward.%20A%20PR%20with%20the%20%60SupersetErrorException%60%20catch%20%28applied%20to%20both%20functions%29%20would%20be%20a%20clean%2C%20minimal%20change.)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-assistant&utm_content=join-discord)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/issues/39096)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org