Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ui: reset sql stats link disappeared from SQL activity page after staying on the page for a while #97996

Closed
dongniwang opened this issue Mar 3, 2023 · 4 comments · Fixed by #109720
Assignees
Labels
A-sql-observability Related to observability of the SQL layer C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.

Comments

@dongniwang
Copy link

dongniwang commented Mar 3, 2023

Logged in as admin user and have the SQL activity page opened for a while (around 30 mins), the reset sql stats link next to the time window picker suddenly disappeared from the page. Refresh the page brings back the link.

Expected behavior: the reset sql stats link should always be visible to admin users

cc: @maryliag

Jira issue: CRDB-25009

@dongniwang dongniwang added C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior. A-sql-observability Related to observability of the SQL layer T-sql-observability labels Mar 3, 2023
@xinhaoz xinhaoz self-assigned this Jul 31, 2023
@xinhaoz
Copy link
Member

xinhaoz commented Aug 29, 2023

@dongniwang Do you remember what version this was on or any other repro details? I can't seem to reproduce this on master currently.

@maryliag
Copy link
Contributor

@xinhaoz this was on CC Console

@xinhaoz
Copy link
Member

xinhaoz commented Aug 29, 2023

@maryliag Gotcha, I think I have a repro.

@xinhaoz
Copy link
Member

xinhaoz commented Aug 29, 2023

It seems like this is caused by a circular import issue. There are several saga files that import rootActions from the reducers file. All saga files import actions from their respective reducer files, and store/reducers.ts is the where we create the root reducer for cluster-ui. This caused a circular import that looked like saga file <- reducer file <- root reducer file <- saga file in some files.

This meant that one of those keys (in this case it just so happened to be uiConfig) would not get their reducer populated. This explains why when I went to debug this issue using redux dev tools the uiConfig key was missing from redux (and also a console error was being shown indicating this).

Extracting rootActions into its own file will solve this issue.

Weirdly enough there was no issue when I used a non-production build of cluster-ui.

craig bot pushed a commit that referenced this issue Aug 31, 2023
109378: backupccl: avoid splitting if the split point might be unsafe r=lidorcarmel a=lidorcarmel

Restore may use unsafe keys as split points, which may cause unsafe splits
between column families, which may cause SQL to fail when reading the row, or
worse, return wrong resutls.

This commit avoids splitting on keys that might be unsafe.

See the issue for more info.

Epic: none
Informs: #109483

Release note: None.

109631: sql: serialize under stress and unskip TestQueryCache r=cucaroach a=cucaroach

This test would timeout under stress+race, this is because it exploits
t.Parallel to run 15 tests concurrently that each fire up a TestServer.
Fix the timeout by running the tests serially under stress.

Fixes: #105174
Epic: none
Release note: none


109683: spanconfig: skip protected timestamps on non-table data  r=arulajmani a=aadityasondhi

Previously, we were placing a protected timestamp using the
`EverythingSpan` which covered the entire keyspace when targeting a
cluster backup. This was non-ideal because not all are used for backup.
This is especially problematic for high churn ranges, such as node
liveness and timeseries, that can accumulate lots of MVCC garbage very
quickly. Placing a protected timestamp on these ranges, thus preventing
the MVCC GC to run, can cause badness.

This patch introduces a new span that covers the keyspace excluded from
backup. When we encounter a span that is within those bounds, we skip
placing a protected timestamp on it.

Fixes: #102338

Release note: None

109720: cluster-ui: break circular import of `rootActions` r=xinhaoz a=xinhaoz

Importing  `rootActions` from `reducers.ts` in cluster-ui was causing a circular import, preventing one of the redux fields experiencing the cyclic dependency from having their reducer populated, which omitted that field from the store altogether. Currently, this field is `uiConfig` which is affecting features that rely on checking the sql role of a user, such as displaying the `Reset SQL Stats` button.

This commit extracts `rootActions` into its own file to remove the cyclic dependencies created.

Fixes: #97996

Release note (bug fix): On CC, `Reset Sql Stats` button is now visible if the user has admin role.

Using a production buiild 23.1 cluster-ui version:
<img width="1909" alt="image" src="https://github.com/cockroachdb/cockroach/assets/20136951/348a941a-3be5-42ad-8b16-47cbf48f3f19">

109734: bulk,ccl: refactor tracing aggregator integration r=stevendanna a=adityamaru

The motivation for this change was to fix the leaked goroutine in #109658 but it led to a larger cleanup as explained below.

In #108458 and other PRs we taught the processors of backup, restore and c2c to periodically send metas containing the TracingAggregatorEvents, for the coordinator to then process and persist for improved observability. In that logic we were defensive against a scenario in which the processor received a root context with no tracing span. In which case we never initialized the tracing aggregator on the processor. This should never be possible in production code, but we want to prevent failing the replication job if this were to happen. As part of this defense we also returned `nil` instead of the meta in `Next()`. What We didn't realize was that return a nil row and nil meta indicates that the consumer has been completely drained and causes the processor to pre-emptively drain and shutdown.

With this change, if the root context does not have a tracing span and we are unable to init a tracing aggregator, we simply do not allow the timer controlling the return of the TracingAggergatorEvents to fire. By doing this, we avoid a situation where a nil row and nil meta are returned too early.

As part of this cleanup this change also simplifies the tracing aggregator. The aggregator is no longer responsible for creating a child span and registering a listener. Instead it simply returns an object that can be registered as an event listener by the caller. The former was an approach that was necessary when we wanted to decorate the span with LazyTags, but nobody uses LazyTags and we have a much better workflow to consume aggregator events with the `Advanced Debugging` job details page.

This simplification was motivated by the fact that `processorbase.StartInternal` now takes event listeners that can be registered with the tracing span of the context that hangs of the processor, and is accessible via the `processor.Ctx()` method.

Fixes: #109658
Release note: None

Co-authored-by: Lidor Carmel <[email protected]>
Co-authored-by: Tommy Reilly <[email protected]>
Co-authored-by: Aaditya Sondhi <[email protected]>
Co-authored-by: Xin Hao Zhang <[email protected]>
Co-authored-by: adityamaru <[email protected]>
@craig craig bot closed this as completed in 9281990 Aug 31, 2023
xinhaoz added a commit to xinhaoz/cockroach that referenced this issue Sep 8, 2023
Importing  `rootActions` from `reducers.ts` in cluster-ui was causing a
circular imort, preventing one of the redux fields experiencing the
cyclic dependency from having their reducer populated, which omitted that
field from the store altogether. Currently, this field is `uiConfig` which is
affecting features that rely on checking the sql role of a user, such
as displaying the `Reset SQL Stats` button.

This commit extracts `rootActions` into its own file to remove the cyclic
dependencies created.

Fixes: cockroachdb#97996

Release note (bug fix): On CC, `Rest Sql Stats` button is now
visible if the user has admin role.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-sql-observability Related to observability of the SQL layer C-bug Code not up to spec/doc, specs & docs deemed correct. Solution expected to change code/behavior.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants