@@ -327,6 +327,29 @@ std::pair<TString, NYT::TTransactionId> TTransactionCache::TEntry::GetBinarySnap
327
327
return std::make_pair (snapshotPath, snapshotTx->GetId ());
328
328
}
329
329
330
+ void TTransactionCache::TEntry::UpdateCacheMetrics (const TString& fileName, ECacheStatus status) {
331
+ static const TString cacheHitMrjob = " CacheHitMrjob" ;
332
+ static const TString cacheMissMrjob = " CacheMissMrjob" ;
333
+ static const TString cacheOtherMrjob = " CacheOtherMrjob" ;
334
+ static const TString cacheHitUdf = " CacheHitUdf" ;
335
+ static const TString cacheMissUdf = " CacheMissUdf" ;
336
+ static const TString cacheOtherUdf = " CacheOtherUdf" ;
337
+
338
+ if (Metrics) {
339
+ bool isMrJob = fileName == " mrjob" ;
340
+ switch (status) {
341
+ case ECacheStatus::Hit:
342
+ isMrJob ? Metrics->IncCounter (cacheHitMrjob, Server) : Metrics->IncCounter (cacheHitUdf, Server);
343
+ break ;
344
+ case ECacheStatus::Miss:
345
+ isMrJob ? Metrics->IncCounter (cacheMissMrjob, Server) : Metrics->IncCounter (cacheMissUdf, Server);
346
+ break ;
347
+ default :
348
+ isMrJob ? Metrics->IncCounter (cacheOtherMrjob, Server) : Metrics->IncCounter (cacheOtherUdf, Server);
349
+ }
350
+ }
351
+ };
352
+
330
353
TMaybe<std::pair<TString, NYT::TTransactionId>> TTransactionCache::TEntry::GetBinarySnapshotFromCache (TString binaryCacheFolder, const TString& md5, const TString& fileName) {
331
354
if (binaryCacheFolder.StartsWith (NYT::TConfig::Get ()->Prefix )) {
332
355
binaryCacheFolder = binaryCacheFolder.substr (NYT::TConfig::Get ()->Prefix .size ());
@@ -341,6 +364,7 @@ TMaybe<std::pair<TString, NYT::TTransactionId>> TTransactionCache::TEntry::GetBi
341
364
}
342
365
snapshotTx = BinarySnapshotTx;
343
366
if (auto p = BinarySnapshots.FindPtr (remotePath)) {
367
+ UpdateCacheMetrics (fileName, ECacheStatus::Hit);
344
368
return std::make_pair (*p, snapshotTx->GetId ());
345
369
}
346
370
}
@@ -350,6 +374,11 @@ TMaybe<std::pair<TString, NYT::TTransactionId>> TTransactionCache::TEntry::GetBi
350
374
snapshotPath = TStringBuilder () << ' #' << GetGuidAsString (fileLock->GetLockedNodeId ());
351
375
} catch (const TErrorResponse& e) {
352
376
YQL_CLOG (WARN, ProviderYt) << " Can't load binary for \" " << fileName << " \" from BinaryCacheFolder: " << e.what ();
377
+ if (e.IsResolveError ()) {
378
+ UpdateCacheMetrics (fileName, ECacheStatus::Miss);
379
+ } else {
380
+ UpdateCacheMetrics (fileName, ECacheStatus::Other);
381
+ }
353
382
return Nothing ();
354
383
}
355
384
with_lock (Lock_) {
@@ -358,6 +387,8 @@ TMaybe<std::pair<TString, NYT::TTransactionId>> TTransactionCache::TEntry::GetBi
358
387
YQL_CLOG (DEBUG, ProviderYt) << " Snapshot \" "
359
388
<< fileName << " \" -> \" " << remotePath << " \" -> "
360
389
<< snapshotPath << " , tx=" << GetGuidAsString (snapshotTx->GetId ());
390
+ UpdateCacheMetrics (fileName, ECacheStatus::Hit);
391
+
361
392
return std::make_pair (snapshotPath, snapshotTx->GetId ());
362
393
}
363
394
@@ -389,7 +420,7 @@ TTransactionCache::TEntry::TPtr TTransactionCache::TryGetEntry(const TString& se
389
420
}
390
421
391
422
TTransactionCache::TEntry::TPtr TTransactionCache::GetOrCreateEntry (const TString& server, const TString& token,
392
- const TMaybe<TString>& impersonationUser, const TSpecProvider& specProvider, const TYtSettings::TConstPtr& config)
423
+ const TMaybe<TString>& impersonationUser, const TSpecProvider& specProvider, const TYtSettings::TConstPtr& config, IMetricsRegistryPtr metrics )
393
424
{
394
425
TEntry::TPtr createdEntry = nullptr ;
395
426
NYT::TTransactionId externalTx = config->ExternalTx .Get ().GetOrElse (TGUID ());
@@ -430,6 +461,7 @@ TTransactionCache::TEntry::TPtr TTransactionCache::GetOrCreateEntry(const TStrin
430
461
}
431
462
createdEntry->InflightTempTablesLimit = config->InflightTempTablesLimit .Get ().GetOrElse (Max<ui32>());
432
463
createdEntry->KeepTables = GetReleaseTempDataMode (*config) == EReleaseTempDataMode::Never;
464
+ createdEntry->Metrics = metrics;
433
465
434
466
TxMap_.emplace (server, createdEntry);
435
467
}
0 commit comments