-
Notifications
You must be signed in to change notification settings - Fork 1.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
Handle splitting-related retries on YB level instead of returning back to client app/driver #5854
Labels
Projects
Comments
Closed
ttyusupov
added a commit
that referenced
this issue
Apr 14, 2021
Summary: Implements handling tablet-splitting related errors at YBSession level instead of propagating them up to the client app. - Added its own `ErrorCollector` instance to the `Batcher` - Once `Batcher` flush is done, `YBSession` checks if we had any errors, and if all errors are retriable at the session level, creates another `Batcher` for retrying failed operations. If there is at least one non-retriable error, all errors are moved (using `std::move` on `unique_ptr`) into `YBSession::error_collector_`. - Added `yb::client:: IsRetryableClientError()` and `yb::client::ShouldSessionRetryError()` functions. - The whole batch will be aborted if tablet resolution failed at least for 1 op to keep the guarantee of operations order for the same row. Operations failed with errors retriable at session-level are retried until we either succeed or get at least one non-retriable error (which includes a timeout error due to deadline). Also fixed memory management issue with heap-use-after-free in redis service. Test Plan: ``` ./bin/yb-ctl --rf=1 create --num_shards_per_tserver=1 --ysql_num_shards_per_tserver=1 --master_flags '"tablet_split_size_threshold_bytes=300000"' --tserver_flags "db_write_buffer_size=100000" java -jar ~/code/yb-sample-apps/target/yb-sample-apps.jar --workload SqlSecondaryIndex --nodes 127.0.0.1:5433 --num_threads_read 2 --num_threads_write 2 --num_unique_keys 1000000000 --nouuid --drop_table_name SqlSecondaryIndex ``` Reviewers: bogdan, mbautin, sergei, rsami Reviewed By: mbautin, sergei Differential Revision: https://phabricator.dev.yugabyte.com/D10972
YintongMa
pushed a commit
to YintongMa/yugabyte-db
that referenced
this issue
May 26, 2021
…level Summary: Implements handling tablet-splitting related errors at YBSession level instead of propagating them up to the client app. - Added its own `ErrorCollector` instance to the `Batcher` - Once `Batcher` flush is done, `YBSession` checks if we had any errors, and if all errors are retriable at the session level, creates another `Batcher` for retrying failed operations. If there is at least one non-retriable error, all errors are moved (using `std::move` on `unique_ptr`) into `YBSession::error_collector_`. - Added `yb::client:: IsRetryableClientError()` and `yb::client::ShouldSessionRetryError()` functions. - The whole batch will be aborted if tablet resolution failed at least for 1 op to keep the guarantee of operations order for the same row. Operations failed with errors retriable at session-level are retried until we either succeed or get at least one non-retriable error (which includes a timeout error due to deadline). Also fixed memory management issue with heap-use-after-free in redis service. Test Plan: ``` ./bin/yb-ctl --rf=1 create --num_shards_per_tserver=1 --ysql_num_shards_per_tserver=1 --master_flags '"tablet_split_size_threshold_bytes=300000"' --tserver_flags "db_write_buffer_size=100000" java -jar ~/code/yb-sample-apps/target/yb-sample-apps.jar --workload SqlSecondaryIndex --nodes 127.0.0.1:5433 --num_threads_read 2 --num_threads_write 2 --num_unique_keys 1000000000 --nouuid --drop_table_name SqlSecondaryIndex ``` Reviewers: bogdan, mbautin, sergei, rsami Reviewed By: mbautin, sergei Differential Revision: https://phabricator.dev.yugabyte.com/D10972
ddorian
added a commit
to ddorian/yugabyte-db
that referenced
this issue
Jul 26, 2021
polarweasel
pushed a commit
that referenced
this issue
Jul 27, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
No description provided.
The text was updated successfully, but these errors were encountered: