raw_requests.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. #pragma once
  2. #include "raw_batch_request.h"
  3. #include <yt/cpp/mapreduce/common/fwd.h>
  4. #include <yt/cpp/mapreduce/http/context.h>
  5. #include <yt/cpp/mapreduce/interface/client_method_options.h>
  6. #include <yt/cpp/mapreduce/interface/operation.h>
  7. namespace NYT {
  8. ////////////////////////////////////////////////////////////////////////////////
  9. class IRequestRetryPolicy;
  10. struct TClientContext;
  11. struct TExecuteBatchOptions;
  12. ////////////////////////////////////////////////////////////////////////////////
  13. namespace NDetail::NRawClient {
  14. ////////////////////////////////////////////////////////////////////////////////
  15. TOperationAttributes ParseOperationAttributes(const TNode& node);
  16. TCheckPermissionResponse ParseCheckPermissionResponse(const TNode& node);
  17. ////////////////////////////////////////////////////////////////////////////////
  18. //
  19. // marks `batchRequest' as executed
  20. void ExecuteBatch(
  21. IRequestRetryPolicyPtr retryPolicy,
  22. const TClientContext& context,
  23. TRawBatchRequest& batchRequest,
  24. const TExecuteBatchOptions& options = TExecuteBatchOptions());
  25. //
  26. // Cypress
  27. //
  28. TNode Get(
  29. const IRequestRetryPolicyPtr& retryPolicy,
  30. const TClientContext& context,
  31. const TTransactionId& transactionId,
  32. const TYPath& path,
  33. const TGetOptions& options = TGetOptions());
  34. TNode TryGet(
  35. const IRequestRetryPolicyPtr& retryPolicy,
  36. const TClientContext& context,
  37. const TTransactionId& transactionId,
  38. const TYPath& path,
  39. const TGetOptions& options);
  40. void Set(
  41. const IRequestRetryPolicyPtr& retryPolicy,
  42. const TClientContext& context,
  43. const TTransactionId& transactionId,
  44. const TYPath& path,
  45. const TNode& value,
  46. const TSetOptions& options = TSetOptions());
  47. void MultisetAttributes(
  48. const IRequestRetryPolicyPtr& retryPolicy,
  49. const TClientContext& context,
  50. const TTransactionId& transactionId,
  51. const TYPath& path,
  52. const TNode::TMapType& value,
  53. const TMultisetAttributesOptions& options = TMultisetAttributesOptions());
  54. bool Exists(
  55. const IRequestRetryPolicyPtr& retryPolicy,
  56. const TClientContext& context,
  57. const TTransactionId& transactionId,
  58. const TYPath& path,
  59. const TExistsOptions& options = TExistsOptions());
  60. TNodeId Create(
  61. const IRequestRetryPolicyPtr& retryPolicy,
  62. const TClientContext& context,
  63. const TTransactionId& transactionId,
  64. const TYPath& path,
  65. const ENodeType& type,
  66. const TCreateOptions& options = TCreateOptions());
  67. TNodeId CopyWithoutRetries(
  68. const TClientContext& context,
  69. const TTransactionId& transactionId,
  70. const TYPath& sourcePath,
  71. const TYPath& destinationPath,
  72. const TCopyOptions& options = TCopyOptions());
  73. TNodeId CopyInsideMasterCell(
  74. const IRequestRetryPolicyPtr& retryPolicy,
  75. const TClientContext& context,
  76. const TTransactionId& transactionId,
  77. const TYPath& sourcePath,
  78. const TYPath& destinationPath,
  79. const TCopyOptions& options = TCopyOptions());
  80. TNodeId MoveWithoutRetries(
  81. const TClientContext& context,
  82. const TTransactionId& transactionId,
  83. const TYPath& sourcePath,
  84. const TYPath& destinationPath,
  85. const TMoveOptions& options = TMoveOptions());
  86. TNodeId MoveInsideMasterCell(
  87. const IRequestRetryPolicyPtr& retryPolicy,
  88. const TClientContext& context,
  89. const TTransactionId& transactionId,
  90. const TYPath& sourcePath,
  91. const TYPath& destinationPath,
  92. const TMoveOptions& options = TMoveOptions());
  93. void Remove(
  94. const IRequestRetryPolicyPtr& retryPolicy,
  95. const TClientContext& context,
  96. const TTransactionId& transactionId,
  97. const TYPath& path,
  98. const TRemoveOptions& options = TRemoveOptions());
  99. TNode::TListType List(
  100. const IRequestRetryPolicyPtr& retryPolicy,
  101. const TClientContext& context,
  102. const TTransactionId& transactionId,
  103. const TYPath& path,
  104. const TListOptions& options = TListOptions());
  105. TNodeId Link(
  106. const IRequestRetryPolicyPtr& retryPolicy,
  107. const TClientContext& context,
  108. const TTransactionId& transactionId,
  109. const TYPath& targetPath,
  110. const TYPath& linkPath,
  111. const TLinkOptions& options = TLinkOptions());
  112. TLockId Lock(
  113. const IRequestRetryPolicyPtr& retryPolicy,
  114. const TClientContext& context,
  115. const TTransactionId& transactionId,
  116. const TYPath& path,
  117. ELockMode mode,
  118. const TLockOptions& options = TLockOptions());
  119. void Unlock(
  120. IRequestRetryPolicyPtr retryPolicy,
  121. const TClientContext& context,
  122. const TTransactionId& transactionId,
  123. const TYPath& path,
  124. const TUnlockOptions& options = TUnlockOptions());
  125. void Concatenate(
  126. const TClientContext& context,
  127. const TTransactionId& transactionId,
  128. const TVector<TRichYPath>& sourcePaths,
  129. const TRichYPath& destinationPath,
  130. const TConcatenateOptions& options = TConcatenateOptions());
  131. //
  132. // Transactions
  133. //
  134. void PingTx(
  135. const IRequestRetryPolicyPtr& retryPolicy,
  136. const TClientContext& context,
  137. const TTransactionId& transactionId);
  138. //
  139. // Operations
  140. //
  141. TOperationAttributes GetOperation(
  142. const IRequestRetryPolicyPtr& retryPolicy,
  143. const TClientContext& context,
  144. const TOperationId& operationId,
  145. const TGetOperationOptions& options = TGetOperationOptions());
  146. TOperationAttributes GetOperation(
  147. const IRequestRetryPolicyPtr& retryPolicy,
  148. const TClientContext& context,
  149. const TString& operationId,
  150. const TGetOperationOptions& options = TGetOperationOptions());
  151. void AbortOperation(
  152. const IRequestRetryPolicyPtr& retryPolicy,
  153. const TClientContext& context,
  154. const TOperationId& operationId);
  155. void CompleteOperation(
  156. const IRequestRetryPolicyPtr& retryPolicy,
  157. const TClientContext& context,
  158. const TOperationId& operationId);
  159. void SuspendOperation(
  160. const IRequestRetryPolicyPtr& retryPolicy,
  161. const TClientContext& context,
  162. const TOperationId& operationId,
  163. const TSuspendOperationOptions& options = TSuspendOperationOptions());
  164. void ResumeOperation(
  165. const IRequestRetryPolicyPtr& retryPolicy,
  166. const TClientContext& context,
  167. const TOperationId& operationId,
  168. const TResumeOperationOptions& options = TResumeOperationOptions());
  169. TListOperationsResult ListOperations(
  170. const IRequestRetryPolicyPtr& retryPolicy,
  171. const TClientContext& context,
  172. const TListOperationsOptions& options = TListOperationsOptions());
  173. void UpdateOperationParameters(
  174. const IRequestRetryPolicyPtr& retryPolicy,
  175. const TClientContext& context,
  176. const TOperationId& operationId,
  177. const TUpdateOperationParametersOptions& options = TUpdateOperationParametersOptions());
  178. //
  179. // Jobs
  180. //
  181. TJobAttributes GetJob(
  182. const IRequestRetryPolicyPtr& retryPolicy,
  183. const TClientContext& context,
  184. const TOperationId& operationId,
  185. const TJobId& jobId,
  186. const TGetJobOptions& options = TGetJobOptions());
  187. TListJobsResult ListJobs(
  188. const IRequestRetryPolicyPtr& retryPolicy,
  189. const TClientContext& context,
  190. const TOperationId& operationId,
  191. const TListJobsOptions& options = TListJobsOptions());
  192. ::TIntrusivePtr<IFileReader> GetJobInput(
  193. const TClientContext& context,
  194. const TJobId& jobId,
  195. const TGetJobInputOptions& options = TGetJobInputOptions());
  196. ::TIntrusivePtr<IFileReader> GetJobFailContext(
  197. const TClientContext& context,
  198. const TOperationId& operationId,
  199. const TJobId& jobId,
  200. const TGetJobFailContextOptions& options = TGetJobFailContextOptions());
  201. TString GetJobStderrWithRetries(
  202. const IRequestRetryPolicyPtr& retryPolicy,
  203. const TClientContext& context,
  204. const TOperationId& operationId,
  205. const TJobId& jobId,
  206. const TGetJobStderrOptions& /* options */ = TGetJobStderrOptions());
  207. ::TIntrusivePtr<IFileReader> GetJobStderr(
  208. const TClientContext& context,
  209. const TOperationId& operationId,
  210. const TJobId& jobId,
  211. const TGetJobStderrOptions& options = TGetJobStderrOptions());
  212. std::vector<TJobTraceEvent> GetJobTrace(
  213. const IRequestRetryPolicyPtr& retryPolicy,
  214. const TClientContext& context,
  215. const TOperationId& operationId,
  216. const TGetJobTraceOptions& options = TGetJobTraceOptions());
  217. //
  218. // File cache
  219. //
  220. TMaybe<TYPath> GetFileFromCache(
  221. const IRequestRetryPolicyPtr& retryPolicy,
  222. const TClientContext& context,
  223. const TTransactionId& transactionId,
  224. const TString& md5Signature,
  225. const TYPath& cachePath,
  226. const TGetFileFromCacheOptions& options = TGetFileFromCacheOptions());
  227. TYPath PutFileToCache(
  228. const IRequestRetryPolicyPtr& retryPolicy,
  229. const TClientContext& context,
  230. const TTransactionId& transactionId,
  231. const TYPath& filePath,
  232. const TString& md5Signature,
  233. const TYPath& cachePath,
  234. const TPutFileToCacheOptions& options = TPutFileToCacheOptions());
  235. //
  236. // SkyShare
  237. //
  238. TNode::TListType SkyShareTable(
  239. const IRequestRetryPolicyPtr& retryPolicy,
  240. const TClientContext& context,
  241. const std::vector<TYPath>& tablePaths,
  242. const TSkyShareTableOptions& options);
  243. //
  244. // Misc
  245. //
  246. TCheckPermissionResponse CheckPermission(
  247. const IRequestRetryPolicyPtr& retryPolicy,
  248. const TClientContext& context,
  249. const TString& user,
  250. EPermission permission,
  251. const TYPath& path,
  252. const TCheckPermissionOptions& options = TCheckPermissionOptions());
  253. TVector<TTabletInfo> GetTabletInfos(
  254. const IRequestRetryPolicyPtr& retryPolicy,
  255. const TClientContext& context,
  256. const TYPath& path,
  257. const TVector<int>& tabletIndexes,
  258. const TGetTabletInfosOptions& options);
  259. TVector<TTableColumnarStatistics> GetTableColumnarStatistics(
  260. const IRequestRetryPolicyPtr& retryPolicy,
  261. const TClientContext& context,
  262. const TTransactionId& transactionId,
  263. const TVector<TRichYPath>& paths,
  264. const TGetTableColumnarStatisticsOptions& options);
  265. TMultiTablePartitions GetTablePartitions(
  266. const IRequestRetryPolicyPtr& retryPolicy,
  267. const TClientContext& context,
  268. const TTransactionId& transactionId,
  269. const TVector<TRichYPath>& paths,
  270. const TGetTablePartitionsOptions& options);
  271. TRichYPath CanonizeYPath(
  272. const IRequestRetryPolicyPtr& retryPolicy,
  273. const TClientContext& context,
  274. const TRichYPath& path);
  275. TVector<TRichYPath> CanonizeYPaths(
  276. const IRequestRetryPolicyPtr& retryPolicy,
  277. const TClientContext& context,
  278. const TVector<TRichYPath>& paths);
  279. //
  280. // Tables
  281. //
  282. void AlterTable(
  283. const IRequestRetryPolicyPtr& retryPolicy,
  284. const TClientContext& context,
  285. const TTransactionId& transactionId,
  286. const TYPath& path,
  287. const TAlterTableOptions& options);
  288. void AlterTableReplica(
  289. const IRequestRetryPolicyPtr& retryPolicy,
  290. const TClientContext& context,
  291. const TReplicaId& replicaId,
  292. const TAlterTableReplicaOptions& options);
  293. void DeleteRows(
  294. const IRequestRetryPolicyPtr& retryPolicy,
  295. const TClientContext& context,
  296. const TYPath& path,
  297. const TNode::TListType& keys,
  298. const TDeleteRowsOptions& options);
  299. void FreezeTable(
  300. const IRequestRetryPolicyPtr& retryPolicy,
  301. const TClientContext& context,
  302. const TYPath& path,
  303. const TFreezeTableOptions& options);
  304. void UnfreezeTable(
  305. const IRequestRetryPolicyPtr& retryPolicy,
  306. const TClientContext& context,
  307. const TYPath& path,
  308. const TUnfreezeTableOptions& options);
  309. // Transactions
  310. void AbortTransaction(
  311. const IRequestRetryPolicyPtr& retryPolicy,
  312. const TClientContext& context,
  313. const TTransactionId& transactionId);
  314. void CommitTransaction(
  315. const IRequestRetryPolicyPtr& retryPolicy,
  316. const TClientContext& context,
  317. const TTransactionId& transactionId);
  318. TTransactionId StartTransaction(
  319. const IRequestRetryPolicyPtr& retryPolicy,
  320. const TClientContext& context,
  321. const TTransactionId& parentId,
  322. const TStartTransactionOptions& options);
  323. ////////////////////////////////////////////////////////////////////////////////
  324. template<typename TSrc, typename TBatchAdder>
  325. auto BatchTransform(
  326. const IRequestRetryPolicyPtr& retryPolicy,
  327. const TClientContext& context,
  328. const TSrc& src,
  329. TBatchAdder batchAdder,
  330. const TExecuteBatchOptions& executeBatchOptions = {})
  331. {
  332. TRawBatchRequest batch(context.Config);
  333. using TFuture = decltype(batchAdder(batch, *std::begin(src)));
  334. TVector<TFuture> futures;
  335. for (const auto& el : src) {
  336. futures.push_back(batchAdder(batch, el));
  337. }
  338. ExecuteBatch(retryPolicy, context, batch, executeBatchOptions);
  339. using TDst = decltype(futures[0].ExtractValueSync());
  340. TVector<TDst> result;
  341. result.reserve(std::size(src));
  342. for (auto& future : futures) {
  343. result.push_back(future.ExtractValueSync());
  344. }
  345. return result;
  346. }
  347. ////////////////////////////////////////////////////////////////////////////////
  348. } // namespace NDetail::NRawClient
  349. } // namespace NYT