-
Notifications
You must be signed in to change notification settings - Fork 1k
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
[YSQL] Committed transactions lost when the cluster config placement was invalid #16402
Comments
@FranckPachot For multi-zone/multi-region setup using yugabyted, its mandatory to run the Currently, in yugabyted, when a 3rd node joins the cluster, we automatically apply the data placement with the default placement constraint Proposed changeDuring the cluster creation, when a 3rd node joins the cluster, apply the data placement constraint based on the
|
Summary: Changes to set the cluster config including data placement policy and rf to 3 as soon as the 3rd node joins through start command. `yugabyted configure data_placement` is still necessary for setting up a multi-zone/region cluster. Test Plan: Manual Testing Reviewers: nikhil Reviewed By: nikhil Subscribers: sgarg-yb Differential Revision: https://phabricator.dev.yugabyte.com/D23971
…he 3rd node joins Summary: Changes to set the cluster config including data placement policy and rf to 3 as soon as the 3rd node joins through start command. `yugabyted configure data_placement` is still necessary for setting up a multi-zone/region cluster. Test Plan: Manual Testing Reviewers: nikhil Reviewed By: nikhil Subscribers: sgarg-yb Differential Revision: https://phabricator.dev.yugabyte.com/D24133
Landed the changes to master and Backported to 2.17.3 |
…e joins Summary: Changes to set the cluster config including data placement policy and rf to 3 as soon as the 3rd node joins through start command. `yugabyted configure data_placement` is still necessary for setting up a multi-zone/region cluster. Test Plan: Manual Testing Reviewers: nikhil Reviewed By: nikhil Subscribers: sgarg-yb Differential Revision: https://phabricator.dev.yugabyte.com/D23971
@gargsans-yb I see the changes for yugabyted to avoid this misconfiguration but shouldn't we raise an error in DocDB when the transaction table cannot be created correctly? |
Jira Link: DB-5811
Description
If we create a cluster without a valid cluster level data placement config, which is the default with
yugabyted start
, we cannot create tables and get an errorNot enough tablet servers in the requested placements
However, I can set the placement at tablespace level, like with all leaders in one region and followers in the other regions, and can create tables and run transactions.
In this case it seems that the transaction table is not replicated (because of the invalid cluster-level config) which means that if one region fails we cannot read data anymore (
ERROR: Query error: GetTransactionStatus RPC
) until it is back, and if it never comes back the committed changes are lost.This is easy to reproduce following all steps of https://dev.to/yugabyte/simulate-network-latency-in-a-yugabytedb-cluster-on-a-docker-lab-264a except the
yugabyted configure data_placement
. In this case we will see that the COMMIT (END;
in PgBench) doesn't wait on other nodes to acknowlege and taking down the first node (where the leaders are) will make the committed changes unreadable.Warning: Please confirm that this issue does not contain any sensitive information
The text was updated successfully, but these errors were encountered: