Skip to content

bootstrap: add cluster_id to the mysql.tidb table (#59511)#65564

Merged
ti-chi-bot[bot] merged 6 commits intopingcap:release-8.5from
ti-chi-bot:cherry-pick-59511-to-release-8.5
Mar 17, 2026
Merged

bootstrap: add cluster_id to the mysql.tidb table (#59511)#65564
ti-chi-bot[bot] merged 6 commits intopingcap:release-8.5from
ti-chi-bot:cherry-pick-59511-to-release-8.5

Conversation

@ti-chi-bot
Copy link
Member

@ti-chi-bot ti-chi-bot commented Jan 14, 2026

This is an automated cherry-pick of #59511

What problem does this PR solve?

Issue Number: close #59476

Problem Summary:

We need a mechanism to detect whether two TiDB servers are in the same tidb cluster. Adding the cluster_id to the mysql.tidb table is the most sutiable way. I've also considered other options in #59476 .

What changed and how does it work?

Add the cluster_id row to the mysql.tidb table.

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
  • No need to test
    • I checked and no code files have been changed.

Side effects

  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Breaking backward compatibility

Documentation

  • Affects user behaviors
  • Contains syntax changes
  • Contains variable changes
  • Contains experimental features
  • Changes MySQL compatibility

Release note

Please refer to Release Notes Language Style Guide to write a quality release note.

Insert the `cluster_id` to the `mysql.tidb` table.

Summary by CodeRabbit

  • Improvements
    • More reliable cluster identity persistence during bootstrap and upgrades to improve cluster consistency.
    • Bootstrap version advanced so upgrades consistently record cluster identity.
  • Tests
    • Added test coverage verifying cluster ID is written during upgrade scenarios.
  • Refactor
    • Broadened supported storage capabilities to align schema tracking and bootstrap components with additional storage features.

Signed-off-by: ti-chi-bot <ti-community-prow-bot@tidb.io>
@ti-chi-bot ti-chi-bot added do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. type/cherry-pick-for-release-8.5 This PR is cherry-picked to release-8.5 from a source PR. labels Jan 14, 2026
@ti-chi-bot
Copy link
Member Author

@YangKeao This PR has conflicts, I have hold it.
Please resolve them or ask others to resolve them, then comment /unhold to remove the hold label.

@ti-chi-bot
Copy link

ti-chi-bot bot commented Jan 14, 2026

@ti-chi-bot: ## If you want to know how to resolve it, please read the guide in TiDB Dev Guide.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository.

Signed-off-by: Yang Keao <yangkeao@chunibyo.icu>
@coderabbitai
Copy link

coderabbitai bot commented Mar 11, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Added PD-backed cluster_id persistence to mysql.tidb via a new bootstrap version (version226) that writes PD's cluster ID during bootstrap and upgrades, and expanded the DDL schema tracker's storage interface to embed kv.StorageWithPD.

Changes

Cohort / File(s) Summary
DDL Schema Tracker Interface
pkg/ddl/schematracker/checker.go
Embedded kv.StorageWithPD added to storageAndMore, widening required storage capabilities for the injector path.
Bootstrap: cluster_id persistence
pkg/session/bootstrap.go
Added tidbClusterID constant, writeClusterID routine, new bootstrap version version226, upgradeToVer226, and integrated cluster_id writes into bootstrap/upgrade flows.
Bootstrap tests
pkg/session/bootstrap_test.go
Added TestWriteClusterIDToMySQLTiDBWhenUpgradingTo225 to verify cluster_id is written back to mysql.tidb when upgrading from version224 to current (exercise upgrade path).
BR restore test update
br/pkg/restore/snap_client/systable_restore_test.go
Updated expected CurrentBootstrapVersion in test from 225 to 226 to match CurrentBootstrapVersion bump.

Sequence Diagram(s)

sequenceDiagram
    participant Bootstrap as "Bootstrap\n(process)"
    participant PD as "PD\n(Cluster ID store)"
    participant MySQL as "mysql.tidb\n(system table)"

    rect rgba(200,230,201,0.5)
    Bootstrap->>PD: request cluster_id
    PD-->>Bootstrap: return cluster_id
    end

    rect rgba(187,222,251,0.5)
    Bootstrap->>MySQL: write or update `cluster_id` in mysql.tidb
    MySQL-->>Bootstrap: ack
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hopped to PD and found the key,
I tucked it in the tidb tree,
On bootstrap leaps and upgrade runs,
The cluster's name gleams in the sun,
A tiny hop, a tidy spree.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 44.44% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The PR title accurately describes the main change: adding cluster_id to the mysql.tidb table, matching the code modifications across multiple files.
Description check ✅ Passed The PR description follows the template with issue reference, problem summary, what changed, test checklist marked, and release note provided.
Linked Issues check ✅ Passed Code changes implement the core requirement from #59476: adding cluster_id to mysql.tidb table for cluster identity detection. Bootstrap version incremented, writeClusterID function added, tests verify the functionality.
Out of Scope Changes check ✅ Passed All changes are directly scoped to the linked issue. The storageAndMore interface update in checker.go supports the bootstrap/storage layer requirements for persisting cluster_id.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ti-chi-bot ti-chi-bot bot added the needs-1-more-lgtm Indicates a PR needs 1 more LGTM. label Mar 11, 2026
…511-to-release-8.5

Signed-off-by: Yang Keao <yangkeao@chunibyo.icu>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/session/bootstrap_test.go`:
- Around line 2595-2628: The test currently references the upstream version
constant version241 and is named TestWriteClusterIDToMySQLTiDBWhenUpgradingTo242
which doesn't exist on release-8.5; update the test to use the release-8.5
constant (replace version241 with version223) and rename the test function to
match the release naming (e.g., TestWriteClusterIDToMySQLTiDBWhenUpgradingTo224)
so the test compiles and targets the correct release version; adjust any related
references in the same function (seV241, ver241) to the new names to keep
identifiers consistent (e.g., seV223, ver223 or matching the new test name).

In `@pkg/session/bootstrap.go`:
- Around line 1429-1430: The upgrade dispatch slice is missing upgradeToVer219
through upgradeToVer223, causing those migrations to be skipped; update the
slice that currently lists upgradeToVer218 and upgradeToVer224 to re-insert
upgradeToVer219, upgradeToVer220, upgradeToVer221, upgradeToVer222, and
upgradeToVer223 in order between upgradeToVer218 and upgradeToVer224 so the
migration runner (the function that iterates this slice) will execute those
versions' migration functions (e.g., upgradeToVer219 ... upgradeToVer223) before
reaching upgradeToVer224.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 86a48419-de2c-45bb-815a-9f678c95e007

📥 Commits

Reviewing files that changed from the base of the PR and between b5f2c76 and 8bd98c2.

📒 Files selected for processing (4)
  • br/pkg/restore/snap_client/systable_restore_test.go
  • pkg/ddl/schematracker/checker.go
  • pkg/session/bootstrap.go
  • pkg/session/bootstrap_test.go

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/session/bootstrap.go`:
- Around line 3327-3340: The writeClusterID function currently dereferences the
PD client returned by s.GetDomain().(*domain.Domain).GetPDClient() without a
nil-check, which can panic for stores without PD; modify writeClusterID to
retrieve the PD client into a variable, check if pdClient == nil (or the domain
assertion fails) and return early (or log/handle) when nil, and only call
pdClient.GetClusterID(ctx) when non-nil before passing clusterID into
mustExecute; reference the symbols writeClusterID, sessiontypes.Session,
s.GetDomain(), domain.Domain, GetPDClient(), GetClusterID(), mustExecute, and
tidbClusterID to locate the change.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 6b01ebf1-79f8-4f73-8120-0f315b9802ee

📥 Commits

Reviewing files that changed from the base of the PR and between 8bd98c2 and 8cad105.

📒 Files selected for processing (2)
  • pkg/session/bootstrap.go
  • pkg/session/bootstrap_test.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • pkg/session/bootstrap_test.go

Comment on lines +3327 to +3340
// writeClusterID writes cluster id into mysql.tidb
func writeClusterID(s sessiontypes.Session) {
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(internalSQLTimeout)*time.Second)
defer cancel()

clusterID := s.GetDomain().(*domain.Domain).GetPDClient().GetClusterID(ctx)

mustExecute(s, `INSERT HIGH_PRIORITY INTO %n.%n VALUES (%?, %?, "TiDB Cluster ID.") ON DUPLICATE KEY UPDATE VARIABLE_VALUE= %?`,
mysql.SystemDB,
mysql.TiDBTable,
tidbClusterID,
clusterID,
clusterID,
)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Guard the PD client before fetching cluster_id.

(*domain.Domain).GetPDClient() can return nil when the store is not kv.StorageWithPD, so this dereference will panic during bootstrap/upgrade on uni-store/mock-store style deployments.

🛠️ Suggested fix
 // writeClusterID writes cluster id into mysql.tidb
 func writeClusterID(s sessiontypes.Session) {
+	pdClient := domain.GetDomain(s).GetPDClient()
+	if pdClient == nil {
+		logutil.BgLogger().Warn("skip writing cluster_id: PD client unavailable during bootstrap/upgrade")
+		return
+	}
+
 	ctx, cancel := context.WithTimeout(context.Background(), time.Duration(internalSQLTimeout)*time.Second)
 	defer cancel()
 
-	clusterID := s.GetDomain().(*domain.Domain).GetPDClient().GetClusterID(ctx)
+	clusterID := pdClient.GetClusterID(ctx)
 
 	mustExecute(s, `INSERT HIGH_PRIORITY INTO %n.%n VALUES (%?, %?, "TiDB Cluster ID.") ON DUPLICATE KEY UPDATE VARIABLE_VALUE= %?`,
 		mysql.SystemDB,
 		mysql.TiDBTable,

As per coding guidelines, "Keep error handling actionable and contextual; avoid silently swallowing errors in Go code".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/session/bootstrap.go` around lines 3327 - 3340, The writeClusterID
function currently dereferences the PD client returned by
s.GetDomain().(*domain.Domain).GetPDClient() without a nil-check, which can
panic for stores without PD; modify writeClusterID to retrieve the PD client
into a variable, check if pdClient == nil (or the domain assertion fails) and
return early (or log/handle) when nil, and only call pdClient.GetClusterID(ctx)
when non-nil before passing clusterID into mustExecute; reference the symbols
writeClusterID, sessiontypes.Session, s.GetDomain(), domain.Domain,
GetPDClient(), GetClusterID(), mustExecute, and tidbClusterID to locate the
change.

@codecov
Copy link

codecov bot commented Mar 11, 2026

Codecov Report

❌ Patch coverage is 85.00000% with 3 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (release-8.5@a401ca4). Learn more about missing BASE report.

Additional details and impacted files
@@               Coverage Diff                @@
##             release-8.5     #65564   +/-   ##
================================================
  Coverage               ?   55.9887%           
================================================
  Files                  ?       1821           
  Lines                  ?     655880           
  Branches               ?          0           
================================================
  Hits                   ?     367219           
  Misses                 ?     261862           
  Partials               ?      26799           
Flag Coverage Δ
integration 39.6624% <75.0000%> (?)
unit 65.5061% <85.0000%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
dumpling 52.9954% <0.0000%> (?)
parser ∅ <0.0000%> (?)
br 64.3737% <0.0000%> (?)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Signed-off-by: Yang Keao <yangkeao@chunibyo.icu>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
pkg/session/bootstrap_test.go (1)

2631-2633: Use unsetStoreBootstrapped helper for consistency.

This test directly manipulates storeBootstrappedLock and storeBootstrapped map, while all other tests in this file use the unsetStoreBootstrapped(store.UUID()) helper function for the same purpose.

♻️ Suggested fix for consistency
 	// upgrade to current version
 	dom.Close()
-	storeBootstrappedLock.Lock()
-	delete(storeBootstrapped, store.UUID())
-	storeBootstrappedLock.Unlock()
+	unsetStoreBootstrapped(store.UUID())
 	domCurVer, err := BootstrapSession(store)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/session/bootstrap_test.go` around lines 2631 - 2633, The test is directly
manipulating storeBootstrappedLock and the storeBootstrapped map; replace those
three lines with a call to the existing helper unsetStoreBootstrapped using the
store's UUID: call unsetStoreBootstrapped(store.UUID()) instead of
Lock/Delete/Unlock to match other tests and keep behavior consistent with the
helper implementation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@pkg/session/bootstrap_test.go`:
- Around line 2631-2633: The test is directly manipulating storeBootstrappedLock
and the storeBootstrapped map; replace those three lines with a call to the
existing helper unsetStoreBootstrapped using the store's UUID: call
unsetStoreBootstrapped(store.UUID()) instead of Lock/Delete/Unlock to match
other tests and keep behavior consistent with the helper implementation.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 17a12d5c-8c64-4aaa-a6db-b7804a123730

📥 Commits

Reviewing files that changed from the base of the PR and between 8cad105 and f88160a.

📒 Files selected for processing (1)
  • pkg/session/bootstrap_test.go

@ti-chi-bot ti-chi-bot bot added lgtm and removed needs-1-more-lgtm Indicates a PR needs 1 more LGTM. labels Mar 11, 2026
@ti-chi-bot
Copy link

ti-chi-bot bot commented Mar 11, 2026

[LGTM Timeline notifier]

Timeline:

  • 2026-03-11 05:07:23.324065099 +0000 UTC m=+413074.836122760: ☑️ agreed by Defined2014.
  • 2026-03-11 05:55:30.789774763 +0000 UTC m=+415962.301832434: ☑️ agreed by lance6716.

@YangKeao
Copy link
Member

/retest

@YangKeao
Copy link
Member

/retest

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pkg/session/bootstrap.go (1)

1450-1452: ⚠️ Potential issue | 🔴 Critical

Add upgradeToVer226 to the upgrade dispatch list.

upgradeToVer226 is defined below, but this slice still stops at upgradeToVer225. That means an existing cluster can be marked as bootstrap version 226 without ever writing the new cluster_id row.

🛠️ Suggested fix
 		upgradeToVer223,
 		upgradeToVer224,
 		upgradeToVer225,
+		upgradeToVer226,
 	}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/session/bootstrap.go` around lines 1450 - 1452, The upgrade dispatch list
currently ends at upgradeToVer225 but upgradeToVer226 is implemented separately;
update the upgrades slice (the list that includes upgradeToVer224,
upgradeToVer225, etc.) to append upgradeToVer226 so the bootstrap path executes
the new upgrade logic (ensuring the new cluster_id row gets written) by adding
upgradeToVer226 to that slice.
♻️ Duplicate comments (1)
pkg/session/bootstrap.go (1)

3350-3364: ⚠️ Potential issue | 🔴 Critical

Guard the PD client before fetching cluster_id.

This still dereferences the PD client unconditionally. pkg/domain/domain.go:1853-1860 returns nil when the store is not kv.StorageWithPD, so bootstrap/upgrade will panic on uni-store or mock-store style deployments.

🛠️ Suggested fix
 // writeClusterID writes cluster id into mysql.tidb
 func writeClusterID(s sessiontypes.Session) {
+	pdClient := domain.GetDomain(s).GetPDClient()
+	if pdClient == nil {
+		logutil.BgLogger().Warn("skip writing cluster_id during bootstrap/upgrade: PD client unavailable")
+		return
+	}
+
 	ctx, cancel := context.WithTimeout(context.Background(), time.Duration(internalSQLTimeout)*time.Second)
 	defer cancel()
 
-	clusterID := s.GetDomain().(*domain.Domain).GetPDClient().GetClusterID(ctx)
+	clusterID := pdClient.GetClusterID(ctx)
 
 	mustExecute(s, `INSERT HIGH_PRIORITY INTO %n.%n VALUES (%?, %?, "TiDB Cluster ID.") ON DUPLICATE KEY UPDATE VARIABLE_VALUE= %?`,
 		mysql.SystemDB,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/session/bootstrap.go` around lines 3350 - 3364, In writeClusterID, avoid
unconditionally dereferencing the PD client returned from
s.GetDomain().(*domain.Domain).GetPDClient(); first obtain the domain and
pdClient (use the same symbols: writeClusterID, s.GetDomain(), domain.Domain,
GetPDClient, GetClusterID, tidbClusterID, mustExecute), check if pdClient is nil
(or assert StorageWithPD where appropriate) and only call GetClusterID when
pdClient != nil; if nil, skip the INSERT or insert a safe default/omit the
variable, and keep the existing context/cancel logic intact so bootstrap/upgrade
won’t panic on uni-store or mock-store deployments.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@pkg/session/bootstrap.go`:
- Around line 1450-1452: The upgrade dispatch list currently ends at
upgradeToVer225 but upgradeToVer226 is implemented separately; update the
upgrades slice (the list that includes upgradeToVer224, upgradeToVer225, etc.)
to append upgradeToVer226 so the bootstrap path executes the new upgrade logic
(ensuring the new cluster_id row gets written) by adding upgradeToVer226 to that
slice.

---

Duplicate comments:
In `@pkg/session/bootstrap.go`:
- Around line 3350-3364: In writeClusterID, avoid unconditionally dereferencing
the PD client returned from s.GetDomain().(*domain.Domain).GetPDClient(); first
obtain the domain and pdClient (use the same symbols: writeClusterID,
s.GetDomain(), domain.Domain, GetPDClient, GetClusterID, tidbClusterID,
mustExecute), check if pdClient is nil (or assert StorageWithPD where
appropriate) and only call GetClusterID when pdClient != nil; if nil, skip the
INSERT or insert a safe default/omit the variable, and keep the existing
context/cancel logic intact so bootstrap/upgrade won’t panic on uni-store or
mock-store deployments.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c43b1f7b-f1de-4a36-83d3-c0702e54e862

📥 Commits

Reviewing files that changed from the base of the PR and between 84ae464 and f26c5e1.

📒 Files selected for processing (2)
  • br/pkg/restore/snap_client/systable_restore_test.go
  • pkg/session/bootstrap.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • br/pkg/restore/snap_client/systable_restore_test.go

…511-to-release-8.5

Signed-off-by: Yang Keao <yangkeao@chunibyo.icu>
@YangKeao YangKeao force-pushed the cherry-pick-59511-to-release-8.5 branch from f26c5e1 to f9e9b4b Compare March 11, 2026 17:40
Copy link

@yudongusa yudongusa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need a document PR on this

@ti-chi-bot
Copy link

ti-chi-bot bot commented Mar 16, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Defined2014, lance6716, Leavrth, yudongusa

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot bot added approved cherry-pick-approved Cherry pick PR approved by release team. and removed do-not-merge/cherry-pick-not-approved labels Mar 16, 2026
@YangKeao
Copy link
Member

Need a document PR on this

@yudongusa Yes! Thanks for reminding 🍻 . They have been prepared pingcap/docs#22566 and pingcap/docs-cn#21439.

@YangKeao
Copy link
Member

/unhold

@ti-chi-bot ti-chi-bot bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 16, 2026
@EmmaDuDu
Copy link

/retest

4 similar comments
@EmmaDuDu
Copy link

/retest

@YangKeao
Copy link
Member

/retest

@EmmaDuDu
Copy link

/retest

@YangKeao
Copy link
Member

/retest

@ti-chi-bot ti-chi-bot bot merged commit b6c77e4 into pingcap:release-8.5 Mar 17, 2026
30 of 34 checks passed
@ti-chi-bot ti-chi-bot bot deleted the cherry-pick-59511-to-release-8.5 branch March 17, 2026 07:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved cherry-pick-approved Cherry pick PR approved by release team. lgtm release-note Denotes a PR that will be considered when it comes time to generate release notes. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. type/cherry-pick-for-release-8.5 This PR is cherry-picked to release-8.5 from a source PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants