Skip to content

WIP: dedicated pool dialers to vtorc and to throttler functions, no change in "concurrency"#15560

Closed
shlomi-noach wants to merge 8 commits intovitessio:mainfrom
planetscale:tmc-pool-dialer-4
Closed

WIP: dedicated pool dialers to vtorc and to throttler functions, no change in "concurrency"#15560
shlomi-noach wants to merge 8 commits intovitessio:mainfrom
planetscale:tmc-pool-dialer-4

Conversation

@shlomi-noach
Copy link
Contributor

@shlomi-noach shlomi-noach commented Mar 24, 2024

Description

One final alternative, this is similar to #15559, but while #15559 remvoes the so-called "concurrency" element, this PR preserves it. In this PR:

  • We have different poolDialers, which do not share resources. We have one general purpose one ; another, dedicated to vtorc ; another, dedicated to the tablet throttler.
  • dialPool function returns an invalidator, much like Fix for FullStatus gRPC connection pooling #15520. However, only FullStatus and CheckThrottler choose to invoke it. When they do, they do not affect any other pool dialer.

Related Issue(s)

#15563

Checklist

  • "Backport to:" labels have been added if this change should be back-ported to release branches
  • If this change is to be back-ported to previous releases, a justification is included in the PR description
  • Tests were added or are not required
  • Did the new or modified tests pass consistently locally and on CI?
  • Documentation was added or is not required

Deployment Notes

GuptaManan100 and others added 6 commits March 19, 2024 14:49
Signed-off-by: Manan Gupta <manan@planetscale.com>
Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com>
Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com>
Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com>
Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com>
Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com>
@vitess-bot
Copy link
Contributor

vitess-bot bot commented Mar 24, 2024

Review Checklist

Hello reviewers! 👋 Please follow this checklist when reviewing this Pull Request.

General

  • Ensure that the Pull Request has a descriptive title.
  • Ensure there is a link to an issue (except for internal cleanup and flaky test fixes), new features should have an RFC that documents use cases and test cases.

Tests

  • Bug fixes should have at least one unit or end-to-end test, enhancement and new features should have a sufficient number of tests.

Documentation

  • Apply the release notes (needs details) label if users need to know about this change.
  • New features should be documented.
  • There should be some code comments as to why things are implemented the way they are.
  • There should be a comment at the top of each new or modified test to explain what the test does.

New flags

  • Is this flag really necessary?
  • Flag names must be clear and intuitive, use dashes (-), and have a clear help text.

If a workflow is added or modified:

  • Each item in Jobs should be named in order to mark it as required.
  • If the workflow needs to be marked as required, the maintainer team must be notified.

Backward compatibility

  • Protobuf changes should be wire-compatible.
  • Changes to _vt tables and RPCs need to be backward compatible.
  • RPC changes should be compatible with vitess-operator
  • If a flag is removed, then it should also be removed from vitess-operator and arewefastyet, if used there.
  • vtctl command output order should be stable and awk-able.

@vitess-bot vitess-bot bot added NeedsBackportReason If backport labels have been applied to a PR, a justification is required NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsIssue A linked issue is missing for this Pull Request NeedsWebsiteDocsUpdate What it says labels Mar 24, 2024
@github-actions github-actions bot added this to the v20.0.0 milestone Mar 24, 2024
Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com>
Comment on lines +106 to +116
// rpcClientMap maps an address to a tmc
type rpcClientMap map[string](chan *tmc)

// grpcClient implements both dialer and poolDialer.
type grpcClient struct {
// This cache of connections is to maximize QPS for ExecuteFetchAs{Dba,App},
// CheckThrottler and FullStatus. Note we'll keep the clients open and close them upon Close() only.
// But that's OK because usually the tasks that use them are one-purpose only.
// The map is protected by the mutex.
mu sync.Mutex
rpcClientMap map[string]chan *tmc
mu sync.Mutex
rpcClientMaps map[DialPoolGroup]rpcClientMap
Copy link
Member

Choose a reason for hiding this comment

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

DialPoolGroupThrottler and DialPoolGroupVTOrc do not need a channel and should only open One connection per tablet address.
better to have a different type for them and leave the other concurrent one seperate.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Is it OK if I still make the code idential for all of them, but use channel size 1 for VTOrc and Throttler?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

See proposed solution in a2dd6fe

Copy link
Contributor Author

Choose a reason for hiding this comment

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

CI doesn't like a2dd6fe

Signed-off-by: Shlomi Noach <2607934+shlomi-noach@users.noreply.github.com>
@shlomi-noach
Copy link
Contributor Author

Yeah I messed up something here. I'm gonna create yet another final draft PR, where I keep all the existing logic, and add bespoke logic for the non-default dial groups (vtorc, throttler).

@shlomi-noach
Copy link
Contributor Author

Closing in favor of #15562

@shlomi-noach shlomi-noach deleted the tmc-pool-dialer-4 branch March 25, 2024 10:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component: TabletManager Component: Throttler Component: VTOrc Vitess Orchestrator integration NeedsBackportReason If backport labels have been applied to a PR, a justification is required NeedsDescriptionUpdate The description is not clear or comprehensive enough, and needs work NeedsIssue A linked issue is missing for this Pull Request NeedsWebsiteDocsUpdate What it says Type: Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants