mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
7e58206c30
Summary: Since imports are now queued in `HgQueuedBackingStore` the metrics for queued imports were broken the queueing use to happen in `HgBackingStore`, but now the queue happens before the imports get here, in `HgQueuedBackingStore`, thus these metrics were only measuring live imports => this moves the metrics for queued imports into `HgQueuedBackingStore` so that they capture both live and queued imports **note**: since prefetching in `HgQueuedBackingStore` is in progress, these metrics are only set-up for when prefetching this is finished Reviewed By: chadaustin Differential Revision: D20714494 fbshipit-source-id: 392337aaa60b44b75184889e6c92cb5d2c2577cc
68 lines
2.0 KiB
C++
68 lines
2.0 KiB
C++
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This software may be used and distributed according to the terms of the
|
|
* GNU General Public License version 2.
|
|
*/
|
|
|
|
#include "eden/fs/store/hg/HgImportRequest.h"
|
|
|
|
#include <folly/Try.h>
|
|
#include <folly/futures/Future.h>
|
|
#include <folly/futures/Promise.h>
|
|
|
|
#include "eden/fs/telemetry/RequestMetricsScope.h"
|
|
|
|
namespace facebook {
|
|
namespace eden {
|
|
|
|
namespace {
|
|
template <typename Request, typename Input>
|
|
std::pair<HgImportRequest, folly::SemiFuture<typename Request::Response>>
|
|
makeRequest(
|
|
Input&& input,
|
|
ImportPriority priority,
|
|
std::unique_ptr<RequestMetricsScope> metricsScope) {
|
|
auto [promise, future] =
|
|
folly::makePromiseContract<typename Request::Response>();
|
|
return std::make_pair(
|
|
HgImportRequest{Request{std::forward<Input>(input)},
|
|
priority,
|
|
std::move(promise),
|
|
std::move(metricsScope)},
|
|
std::move(future));
|
|
}
|
|
} // namespace
|
|
|
|
std::pair<HgImportRequest, folly::SemiFuture<std::unique_ptr<Blob>>>
|
|
HgImportRequest::makeBlobImportRequest(
|
|
Hash hash,
|
|
ImportPriority priority,
|
|
std::unique_ptr<RequestMetricsScope> metricsScope) {
|
|
return makeRequest<BlobImport>(hash, priority, std::move(metricsScope));
|
|
}
|
|
|
|
std::pair<HgImportRequest, folly::SemiFuture<std::unique_ptr<Tree>>>
|
|
HgImportRequest::makeTreeImportRequest(
|
|
Hash hash,
|
|
ImportPriority priority,
|
|
std::unique_ptr<RequestMetricsScope> metricsScope) {
|
|
return makeRequest<TreeImport>(hash, priority, std::move(metricsScope));
|
|
}
|
|
|
|
std::pair<HgImportRequest, folly::SemiFuture<folly::Unit>>
|
|
HgImportRequest::makePrefetchRequest(
|
|
std::vector<Hash> hashes,
|
|
ImportPriority priority,
|
|
std::unique_ptr<RequestMetricsScope> metricsScope) {
|
|
return makeRequest<Prefetch>(hashes, priority, std::move(metricsScope));
|
|
}
|
|
|
|
std::unique_ptr<RequestMetricsScope>
|
|
HgImportRequest::getOwnershipOfImportTracker() {
|
|
return std::move(metrics_);
|
|
}
|
|
|
|
} // namespace eden
|
|
} // namespace facebook
|