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

Support for MySQL MAX_EXECUTION_TIME as query timeout method #14460

Closed

Conversation

timvaillancourt
Copy link
Contributor

@timvaillancourt timvaillancourt commented Nov 4, 2023

Description

This PR implements #12518 by allowing the MySQL Optimizer Hint MAX_EXECUTION_TIME(<millis>), based on the existing vttablet query timeout (seconds) to be automatically added to queries using when the new --query-timeout-method flag is set to mysql (default vttablet)

The vttablet will wait up to --query-timeout-seconds + 1 for MySQL to do this, before falling back to the existing behaviour that issues a MySQL KILL operation

Suggestions on how to make the PR more robust is appreciated 🙇

Related Issue(s)

#12518

Checklist

  • "Backport to:" labels have been added if this change should be back-ported
  • Tests were added or are not required
  • Did the new or modified tests pass consistently locally and on the CI
  • Documentation was added or is not required

Deployment Notes

Copy link
Contributor

vitess-bot bot commented Nov 4, 2023

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 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 Nov 4, 2023
@github-actions github-actions bot added this to the v19.0.0 milestone Nov 4, 2023
Signed-off-by: Tim Vaillancourt <[email protected]>
Copy link
Contributor

github-actions bot commented Dec 5, 2023

This PR is being marked as stale because it has been open for 30 days with no activity. To rectify, you may do any of the following:

  • Push additional commits to the associated branch.
  • Remove the stale label.
  • Add a comment indicating why it is not stale.

If no action is taken within 7 days, this PR will be closed.

@github-actions github-actions bot added the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Dec 5, 2023
@timvaillancourt
Copy link
Contributor Author

Planning to get this ready to review shortly, some tweaks needed first

@github-actions github-actions bot removed the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Dec 6, 2023
Copy link
Contributor

github-actions bot commented Jan 6, 2024

This PR is being marked as stale because it has been open for 30 days with no activity. To rectify, you may do any of the following:

  • Push additional commits to the associated branch.
  • Remove the stale label.
  • Add a comment indicating why it is not stale.

If no action is taken within 7 days, this PR will be closed.

@github-actions github-actions bot added the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Jan 6, 2024
@timvaillancourt
Copy link
Contributor Author

Bump, still planning to complete this

@github-actions github-actions bot removed the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Jan 7, 2024
Signed-off-by: Tim Vaillancourt <[email protected]>
@frouioui frouioui modified the milestones: v19.0.0, v20.0.0 Feb 6, 2024
Signed-off-by: Tim Vaillancourt <[email protected]>
Signed-off-by: Tim Vaillancourt <[email protected]>
Signed-off-by: Tim Vaillancourt <[email protected]>
Signed-off-by: Tim Vaillancourt <[email protected]>
Signed-off-by: Tim Vaillancourt <[email protected]>
@timvaillancourt
Copy link
Contributor Author

I plan to wrap this up once I can figure out a smart way to add optimizer hints on the vttablet level. It seems vtgate has logic to add optimizer hints but it's not clear in vttablet

I'm curious if @harshit-gangal has time for a quick chat about that detail?

@harshit-gangal
Copy link
Member

I plan to wrap this up once I can figure out a smart way to add optimizer hints on the vttablet level. It seems vtgate has logic to add optimizer hints but it's not clear in vttablet

I'm curious if @harshit-gangal has time for a quick chat about that detail?

VTGate and VTTablet already have a flag for query timeouts query-timeout and queryserver-config-query-timeout.
Currently, the VTGate flag is used to set the context timeout eventually a Kill on MySQL and the VTTablet flag is used to execute the Kill on MySQL.
The current VTTablet flag can be used to repurpose it for select queries. We can modify the Build method in go/vt/vttablet/tabletserver/planbuilder/plan.go to add the optimizer hint.

Copy link
Contributor

This PR is being marked as stale because it has been open for 30 days with no activity. To rectify, you may do any of the following:

  • Push additional commits to the associated branch.
  • Remove the stale label.
  • Add a comment indicating why it is not stale.

If no action is taken within 7 days, this PR will be closed.

@github-actions github-actions bot added the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Apr 24, 2024
@timvaillancourt timvaillancourt removed the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Apr 24, 2024
Copy link
Contributor

This PR is being marked as stale because it has been open for 30 days with no activity. To rectify, you may do any of the following:

  • Push additional commits to the associated branch.
  • Remove the stale label.
  • Add a comment indicating why it is not stale.

If no action is taken within 7 days, this PR will be closed.

@github-actions github-actions bot added the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label May 25, 2024
@timvaillancourt timvaillancourt added Component: VTTablet and removed Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. labels May 25, 2024
@frouioui frouioui modified the milestones: v20.0.0, v21.0.0 Jun 20, 2024
Copy link
Contributor

This PR is being marked as stale because it has been open for 30 days with no activity. To rectify, you may do any of the following:

  • Push additional commits to the associated branch.
  • Remove the stale label.
  • Add a comment indicating why it is not stale.

If no action is taken within 7 days, this PR will be closed.

@github-actions github-actions bot added the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Jul 21, 2024
@timvaillancourt timvaillancourt removed the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Jul 24, 2024
Copy link
Contributor

This PR is being marked as stale because it has been open for 30 days with no activity. To rectify, you may do any of the following:

  • Push additional commits to the associated branch.
  • Remove the stale label.
  • Add a comment indicating why it is not stale.

If no action is taken within 7 days, this PR will be closed.

@github-actions github-actions bot added the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Aug 24, 2024
@timvaillancourt timvaillancourt removed the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Aug 24, 2024
Copy link
Contributor

This PR is being marked as stale because it has been open for 30 days with no activity. To rectify, you may do any of the following:

  • Push additional commits to the associated branch.
  • Remove the stale label.
  • Add a comment indicating why it is not stale.

If no action is taken within 7 days, this PR will be closed.

@github-actions github-actions bot added the Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period. label Sep 24, 2024
Copy link
Contributor

github-actions bot commented Oct 1, 2024

This PR was closed because it has been stale for 7 days with no activity.

@github-actions github-actions bot closed this Oct 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: VTTablet 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 Stale Marks PRs as stale after a period of inactivity, which are then closed after a grace period.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants