@@ -126,14 +126,22 @@ bool TClientBase::Exists(
126
126
const TYPath& path,
127
127
const TExistsOptions& options)
128
128
{
129
- return NRawClient::Exists (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, path, options);
129
+ return RequestWithRetry<bool >(
130
+ ClientRetryPolicy_->CreatePolicyForGenericRequest (),
131
+ [this , &path, &options] (TMutationId& mutationId) {
132
+ return RawClient_->Exists (mutationId, TransactionId_, path, options);
133
+ });
130
134
}
131
135
132
136
TNode TClientBase::Get (
133
137
const TYPath& path,
134
138
const TGetOptions& options)
135
139
{
136
- return NRawClient::Get (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, path, options);
140
+ return RequestWithRetry<TNode>(
141
+ ClientRetryPolicy_->CreatePolicyForGenericRequest (),
142
+ [this , &path, &options] (TMutationId& mutationId) {
143
+ return RawClient_->Get (mutationId, TransactionId_, path, options);
144
+ });
137
145
}
138
146
139
147
void TClientBase::Set (
@@ -149,12 +157,17 @@ void TClientBase::Set(
149
157
}
150
158
151
159
void TClientBase::MultisetAttributes (
152
- const TYPath& path, const TNode::TMapType& value, const TMultisetAttributesOptions& options)
160
+ const TYPath& path,
161
+ const TNode::TMapType& value,
162
+ const TMultisetAttributesOptions& options)
153
163
{
154
- NRawClient::MultisetAttributes (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, path, value, options);
164
+ RequestWithRetry<void >(
165
+ ClientRetryPolicy_->CreatePolicyForGenericRequest (),
166
+ [this , &path, &value, &options] (TMutationId& mutationId) {
167
+ RawClient_->MultisetAttributes (mutationId, TransactionId_, path, value, options);
168
+ });
155
169
}
156
170
157
-
158
171
TNode::TListType TClientBase::List (
159
172
const TYPath& path,
160
173
const TListOptions& options)
@@ -290,6 +303,7 @@ IFileReaderPtr TClientBase::CreateBlobTableReader(
290
303
return new TBlobTableReader (
291
304
path,
292
305
key,
306
+ RawClient_,
293
307
ClientRetryPolicy_,
294
308
GetTransactionPinger (),
295
309
Context_,
@@ -303,6 +317,7 @@ IFileReaderPtr TClientBase::CreateFileReader(
303
317
{
304
318
return new TFileReader (
305
319
CanonizeYPath (path),
320
+ RawClient_,
306
321
ClientRetryPolicy_,
307
322
GetTransactionPinger (),
308
323
Context_,
@@ -315,11 +330,18 @@ IFileWriterPtr TClientBase::CreateFileWriter(
315
330
const TFileWriterOptions& options)
316
331
{
317
332
auto realPath = CanonizeYPath (path);
318
- if (!NRawClient::Exists (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, realPath.Path_ )) {
333
+
334
+ auto exists = RequestWithRetry<bool >(
335
+ ClientRetryPolicy_->CreatePolicyForGenericRequest (),
336
+ [this , &realPath] (TMutationId& mutationId) {
337
+ return RawClient_->Exists (mutationId, TransactionId_, realPath.Path_ );
338
+ });
339
+ if (!exists) {
319
340
NRawClient::Create (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, realPath.Path_ , NT_FILE,
320
341
TCreateOptions ().IgnoreExisting (true ));
321
342
}
322
- return new TFileWriter (realPath, ClientRetryPolicy_, GetTransactionPinger (), Context_, TransactionId_, options);
343
+
344
+ return new TFileWriter (realPath, RawClient_, ClientRetryPolicy_, GetTransactionPinger (), Context_, TransactionId_, options);
323
345
}
324
346
325
347
TTableWriterPtr<::google::protobuf::Message> TClientBase::CreateTableWriter (
@@ -343,6 +365,7 @@ TRawTableWriterPtr TClientBase::CreateRawWriter(
343
365
const TTableWriterOptions& options)
344
366
{
345
367
return ::MakeIntrusive<TRetryfulWriter>(
368
+ RawClient_,
346
369
ClientRetryPolicy_,
347
370
GetTransactionPinger (),
348
371
Context_,
@@ -673,7 +696,7 @@ void TClientBase::CompleteOperation(const TOperationId& operationId)
673
696
674
697
void TClientBase::WaitForOperation (const TOperationId& operationId)
675
698
{
676
- NYT::NDetail::WaitForOperation (ClientRetryPolicy_, Context_, operationId);
699
+ NYT::NDetail::WaitForOperation (ClientRetryPolicy_, RawClient_, Context_, operationId);
677
700
}
678
701
679
702
void TClientBase::AlterTable (
@@ -691,6 +714,7 @@ ::TIntrusivePtr<TClientReader> TClientBase::CreateClientReader(
691
714
{
692
715
return ::MakeIntrusive<TClientReader>(
693
716
CanonizeYPath (path),
717
+ RawClient_,
694
718
ClientRetryPolicy_,
695
719
GetTransactionPinger (),
696
720
Context_,
@@ -706,12 +730,20 @@ THolder<TClientWriter> TClientBase::CreateClientWriter(
706
730
const TTableWriterOptions& options)
707
731
{
708
732
auto realPath = CanonizeYPath (path);
709
- if (!NRawClient::Exists (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, realPath.Path_ )) {
733
+
734
+ auto exists = RequestWithRetry<bool >(
735
+ ClientRetryPolicy_->CreatePolicyForGenericRequest (),
736
+ [this , &realPath] (TMutationId& mutationId) {
737
+ return RawClient_->Exists (mutationId, TransactionId_, realPath.Path_ );
738
+ });
739
+ if (!exists) {
710
740
NRawClient::Create (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, realPath.Path_ , NT_TABLE,
711
741
TCreateOptions ().IgnoreExisting (true ));
712
742
}
743
+
713
744
return MakeHolder<TClientWriter>(
714
745
realPath,
746
+ RawClient_,
715
747
ClientRetryPolicy_,
716
748
GetTransactionPinger (),
717
749
Context_,
@@ -851,15 +883,16 @@ const IClientRetryPolicyPtr& TClientBase::GetRetryPolicy() const
851
883
// //////////////////////////////////////////////////////////////////////////////
852
884
853
885
TTransaction::TTransaction (
854
- IRawClientPtr rawClient,
886
+ const IRawClientPtr& rawClient,
855
887
TClientPtr parentClient,
856
888
const TClientContext& context,
857
889
const TTransactionId& parentTransactionId,
858
890
const TStartTransactionOptions& options)
859
- : TClientBase(std::move( rawClient) , context, parentTransactionId, parentClient->GetRetryPolicy ())
891
+ : TClientBase(rawClient, context, parentTransactionId, parentClient->GetRetryPolicy ())
860
892
, TransactionPinger_(parentClient->GetTransactionPinger ())
861
893
, PingableTx_(
862
894
MakeHolder<TPingableTransaction>(
895
+ rawClient,
863
896
parentClient->GetRetryPolicy (),
864
897
context,
865
898
parentTransactionId,
@@ -871,15 +904,16 @@ TTransaction::TTransaction(
871
904
}
872
905
873
906
TTransaction::TTransaction (
874
- IRawClientPtr rawClient,
907
+ const IRawClientPtr& rawClient,
875
908
TClientPtr parentClient,
876
909
const TClientContext& context,
877
910
const TTransactionId& transactionId,
878
911
const TAttachTransactionOptions& options)
879
- : TClientBase(std::move( rawClient) , context, transactionId, parentClient->GetRetryPolicy())
912
+ : TClientBase(rawClient, context, transactionId, parentClient->GetRetryPolicy ())
880
913
, TransactionPinger_(parentClient->GetTransactionPinger ())
881
914
, PingableTx_(
882
915
new TPingableTransaction(
916
+ rawClient,
883
917
parentClient->GetRetryPolicy (),
884
918
context,
885
919
transactionId,
0 commit comments