@@ -126,14 +126,22 @@ bool TClientBase::Exists(
126126 const TYPath& path,
127127 const TExistsOptions& options)
128128{
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+ });
130134}
131135
132136TNode TClientBase::Get (
133137 const TYPath& path,
134138 const TGetOptions& options)
135139{
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+ });
137145}
138146
139147void TClientBase::Set (
@@ -149,12 +157,17 @@ void TClientBase::Set(
149157}
150158
151159void 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)
153163{
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+ });
155169}
156170
157-
158171TNode::TListType TClientBase::List (
159172 const TYPath& path,
160173 const TListOptions& options)
@@ -290,6 +303,7 @@ IFileReaderPtr TClientBase::CreateBlobTableReader(
290303 return new TBlobTableReader (
291304 path,
292305 key,
306+ RawClient_,
293307 ClientRetryPolicy_,
294308 GetTransactionPinger (),
295309 Context_,
@@ -303,6 +317,7 @@ IFileReaderPtr TClientBase::CreateFileReader(
303317{
304318 return new TFileReader (
305319 CanonizeYPath (path),
320+ RawClient_,
306321 ClientRetryPolicy_,
307322 GetTransactionPinger (),
308323 Context_,
@@ -315,11 +330,18 @@ IFileWriterPtr TClientBase::CreateFileWriter(
315330 const TFileWriterOptions& options)
316331{
317332 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) {
319340 NRawClient::Create (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, realPath.Path_ , NT_FILE,
320341 TCreateOptions ().IgnoreExisting (true ));
321342 }
322- return new TFileWriter (realPath, ClientRetryPolicy_, GetTransactionPinger (), Context_, TransactionId_, options);
343+
344+ return new TFileWriter (realPath, RawClient_, ClientRetryPolicy_, GetTransactionPinger (), Context_, TransactionId_, options);
323345}
324346
325347TTableWriterPtr<::google::protobuf::Message> TClientBase::CreateTableWriter (
@@ -343,6 +365,7 @@ TRawTableWriterPtr TClientBase::CreateRawWriter(
343365 const TTableWriterOptions& options)
344366{
345367 return ::MakeIntrusive<TRetryfulWriter>(
368+ RawClient_,
346369 ClientRetryPolicy_,
347370 GetTransactionPinger (),
348371 Context_,
@@ -673,7 +696,7 @@ void TClientBase::CompleteOperation(const TOperationId& operationId)
673696
674697void TClientBase::WaitForOperation (const TOperationId& operationId)
675698{
676- NYT::NDetail::WaitForOperation (ClientRetryPolicy_, Context_, operationId);
699+ NYT::NDetail::WaitForOperation (ClientRetryPolicy_, RawClient_, Context_, operationId);
677700}
678701
679702void TClientBase::AlterTable (
@@ -691,6 +714,7 @@ ::TIntrusivePtr<TClientReader> TClientBase::CreateClientReader(
691714{
692715 return ::MakeIntrusive<TClientReader>(
693716 CanonizeYPath (path),
717+ RawClient_,
694718 ClientRetryPolicy_,
695719 GetTransactionPinger (),
696720 Context_,
@@ -706,12 +730,20 @@ THolder<TClientWriter> TClientBase::CreateClientWriter(
706730 const TTableWriterOptions& options)
707731{
708732 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) {
710740 NRawClient::Create (ClientRetryPolicy_->CreatePolicyForGenericRequest (), Context_, TransactionId_, realPath.Path_ , NT_TABLE,
711741 TCreateOptions ().IgnoreExisting (true ));
712742 }
743+
713744 return MakeHolder<TClientWriter>(
714745 realPath,
746+ RawClient_,
715747 ClientRetryPolicy_,
716748 GetTransactionPinger (),
717749 Context_,
@@ -851,15 +883,16 @@ const IClientRetryPolicyPtr& TClientBase::GetRetryPolicy() const
851883// //////////////////////////////////////////////////////////////////////////////
852884
853885TTransaction::TTransaction (
854- IRawClientPtr rawClient,
886+ const IRawClientPtr& rawClient,
855887 TClientPtr parentClient,
856888 const TClientContext& context,
857889 const TTransactionId& parentTransactionId,
858890 const TStartTransactionOptions& options)
859- : TClientBase(std::move( rawClient) , context, parentTransactionId, parentClient->GetRetryPolicy ())
891+ : TClientBase(rawClient, context, parentTransactionId, parentClient->GetRetryPolicy ())
860892 , TransactionPinger_(parentClient->GetTransactionPinger ())
861893 , PingableTx_(
862894 MakeHolder<TPingableTransaction>(
895+ rawClient,
863896 parentClient->GetRetryPolicy (),
864897 context,
865898 parentTransactionId,
@@ -871,15 +904,16 @@ TTransaction::TTransaction(
871904}
872905
873906TTransaction::TTransaction (
874- IRawClientPtr rawClient,
907+ const IRawClientPtr& rawClient,
875908 TClientPtr parentClient,
876909 const TClientContext& context,
877910 const TTransactionId& transactionId,
878911 const TAttachTransactionOptions& options)
879- : TClientBase(std::move( rawClient) , context, transactionId, parentClient->GetRetryPolicy())
912+ : TClientBase(rawClient, context, transactionId, parentClient->GetRetryPolicy ())
880913 , TransactionPinger_(parentClient->GetTransactionPinger ())
881914 , PingableTx_(
882915 new TPingableTransaction(
916+ rawClient,
883917 parentClient->GetRetryPolicy (),
884918 context,
885919 transactionId,
0 commit comments