Skip to content

Commit 6fb4c09

Browse files
author
brgayazov
committed
feat ydb: fixed dangling string_view on task cancellation
The previous PR "feat ydb: support retries for interactive tx" was causing a use-after-free if a task was cancelled during a YDB request. commit_hash:2a689d549a705a5cc053f0d4ac054d6fe1bbaab2
1 parent 8b49570 commit 6fb4c09

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

ydb/src/ydb/table.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ auto TableClient::ExecuteWithPathImpl(
145145
query_settings = std::forward<QuerySettings>(query_settings),
146146
settings = context.settings,
147147
deadline = context.deadline,
148-
trace_id = context.span.GetTraceId()](FuncArg arg) mutable {
148+
trace_id = std::string{context.span.GetTraceId()}](FuncArg arg) mutable {
149149
impl::ApplyToRequestSettings(query_settings, settings, deadline, trace_id);
150150
return func(std::forward<FuncArg>(arg), full_path, query_settings);
151151
}
@@ -188,7 +188,7 @@ ReadTableResults TableClient::ReadTable(
188188
read_settings = std::move(read_settings),
189189
settings = context.settings,
190190
deadline = context.deadline,
191-
trace_id = context.span.GetTraceId()](NYdb::NTable::TSession session) mutable {
191+
trace_id = std::string{context.span.GetTraceId()}](NYdb::NTable::TSession session) mutable {
192192
impl::ApplyToRequestSettings(read_settings, settings, deadline, trace_id);
193193
return session.ReadTable(impl::ToString(full_path), read_settings);
194194
}
@@ -212,7 +212,7 @@ ScanQueryResults TableClient::ExecuteScanQuery(
212212
scan_settings = std::move(scan_settings),
213213
settings = context.settings,
214214
deadline = context.deadline,
215-
trace_id = context.span.GetTraceId()](NYdb::NTable::TTableClient& table_client) mutable {
215+
trace_id = std::string{context.span.GetTraceId()}](NYdb::NTable::TTableClient& table_client) mutable {
216216
impl::ApplyToRequestSettings(scan_settings, settings, deadline, trace_id);
217217
return table_client.StreamExecuteScanQuery(impl::ToString(query.GetStatementView()), params, scan_settings);
218218
}
@@ -357,7 +357,7 @@ Transaction TableClient::Begin(DynamicTransactionName transaction_name, Operatio
357357
[tx_settings = std::move(tx_settings),
358358
settings = context.settings,
359359
deadline = context.deadline,
360-
trace_id = context.span.GetTraceId()](NYdb::NQuery::TSession session) {
360+
trace_id = std::string{context.span.GetTraceId()}](NYdb::NQuery::TSession session) {
361361
const auto begin_tx_settings = impl::PrepareRequestSettings<
362362
NYdb::NQuery::TBeginTxSettings>(settings, deadline, trace_id);
363363
return session.BeginTransaction(tx_settings, begin_tx_settings);
@@ -373,7 +373,7 @@ Transaction TableClient::Begin(DynamicTransactionName transaction_name, Operatio
373373
[tx_settings = std::move(tx_settings),
374374
settings = context.settings,
375375
deadline = context.deadline,
376-
trace_id = context.span.GetTraceId()](NYdb::NTable::TSession session) {
376+
trace_id = std::string{context.span.GetTraceId()}](NYdb::NTable::TSession session) {
377377
const auto begin_tx_settings = impl::PrepareRequestSettings<
378378
NYdb::NTable::TBeginTxSettings>(settings, deadline, trace_id);
379379
return session.BeginTransaction(tx_settings, begin_tx_settings);
@@ -394,7 +394,7 @@ void TableClient::ExecuteSchemeQuery(const std::string& query) {
394394
[query,
395395
settings = context.settings,
396396
deadline = context.deadline,
397-
trace_id = context.span.GetTraceId()](NYdb::NTable::TSession session) {
397+
trace_id = std::string{context.span.GetTraceId()}](NYdb::NTable::TSession session) {
398398
const auto exec_settings = impl::PrepareRequestSettings<
399399
NYdb::NTable::TExecSchemeQuerySettings>(settings, deadline, trace_id);
400400
return session.ExecuteSchemeQuery(impl::ToString(query), exec_settings);
@@ -431,7 +431,7 @@ ExecuteResponse TableClient::ExecuteDataQuery(
431431
exec_settings = ToExecDataQuerySettings(query_settings),
432432
settings = context.settings,
433433
deadline = context.deadline,
434-
trace_id = context.span.GetTraceId()](NYdb::NTable::TSession session) mutable {
434+
trace_id = std::string{context.span.GetTraceId()}](NYdb::NTable::TSession session) mutable {
435435
impl::ApplyToRequestSettings(exec_settings, settings, deadline, trace_id);
436436
const auto tx_settings = MakeTableTxSettings(settings.tx_mode.value());
437437
const auto tx = NYdb::NTable::TTxControl::BeginTx(tx_settings).CommitTx();
@@ -465,7 +465,7 @@ ExecuteResponse TableClient::ExecuteQuery(
465465
exec_settings = std::move(exec_settings),
466466
settings = context.settings,
467467
deadline = context.deadline,
468-
trace_id = context.span.GetTraceId()](NYdb::NQuery::TSession session) mutable {
468+
trace_id = std::string{context.span.GetTraceId()}](NYdb::NQuery::TSession session) mutable {
469469
impl::ApplyToRequestSettings(exec_settings, settings, deadline, trace_id);
470470
const auto tx_settings = MakeTxSettings(settings.tx_mode.value());
471471
const auto tx = NYdb::NQuery::TTxControl::BeginTx(tx_settings).CommitTx();

0 commit comments

Comments
 (0)