Fix storage fast statistics after file checking.

GitOrigin-RevId: c912dc17c00ba61e1ad5b11bf6d411783fba58df
This commit is contained in:
levlam 2019-01-11 20:08:56 +03:00
parent 5ea6fda925
commit 15dda847f4
6 changed files with 15 additions and 13 deletions

View File

@ -134,7 +134,7 @@ Status FileDownloader::on_ok(int64 size) {
TRY_RESULT(perm_path, create_from_temp(path_, dir, name_)); TRY_RESULT(perm_path, create_from_temp(path_, dir, name_));
path = std::move(perm_path); path = std::move(perm_path);
} }
callback_->on_ok(FullLocalFileLocation(remote_.file_type_, std::move(path), 0), size); callback_->on_ok(FullLocalFileLocation(remote_.file_type_, std::move(path), 0), size, !only_check_);
return Status::OK(); return Status::OK();
} }
void FileDownloader::on_error(Status status) { void FileDownloader::on_error(Status status) {

View File

@ -29,7 +29,7 @@ class FileDownloader : public FileLoader {
public: public:
virtual void on_start_download() = 0; virtual void on_start_download() = 0;
virtual void on_partial_download(const PartialLocalFileLocation &partial_local, int64 ready_size, int64 size) = 0; virtual void on_partial_download(const PartialLocalFileLocation &partial_local, int64 ready_size, int64 size) = 0;
virtual void on_ok(const FullLocalFileLocation &full_local, int64 size) = 0; virtual void on_ok(const FullLocalFileLocation &full_local, int64 size, bool is_new) = 0;
virtual void on_error(Status status) = 0; virtual void on_error(Status status) = 0;
}; };

View File

@ -220,14 +220,14 @@ void FileLoadManager::on_partial_upload(const PartialRemoteFileLocation &partial
} }
} }
void FileLoadManager::on_ok_download(const FullLocalFileLocation &local, int64 size) { void FileLoadManager::on_ok_download(const FullLocalFileLocation &local, int64 size, bool is_new) {
auto node_id = get_link_token(); auto node_id = get_link_token();
auto node = nodes_container_.get(node_id); auto node = nodes_container_.get(node_id);
if (node == nullptr) { if (node == nullptr) {
return; return;
} }
if (!stop_flag_) { if (!stop_flag_) {
send_closure(callback_, &Callback::on_download_ok, node->query_id_, local, size); send_closure(callback_, &Callback::on_download_ok, node->query_id_, local, size, is_new);
} }
close_node(node_id); close_node(node_id);
loop(); loop();

View File

@ -42,7 +42,7 @@ class FileLoadManager final : public Actor {
virtual void on_hash(QueryId id, string hash) = 0; virtual void on_hash(QueryId id, string hash) = 0;
virtual void on_upload_ok(QueryId id, FileType file_type, const PartialRemoteFileLocation &remtoe, int64 size) = 0; virtual void on_upload_ok(QueryId id, FileType file_type, const PartialRemoteFileLocation &remtoe, int64 size) = 0;
virtual void on_upload_full_ok(QueryId id, const FullRemoteFileLocation &remote) = 0; virtual void on_upload_full_ok(QueryId id, const FullRemoteFileLocation &remote) = 0;
virtual void on_download_ok(QueryId id, const FullLocalFileLocation &local, int64 size) = 0; virtual void on_download_ok(QueryId id, const FullLocalFileLocation &local, int64 size, bool is_new) = 0;
virtual void on_error(QueryId id, Status status) = 0; virtual void on_error(QueryId id, Status status) = 0;
}; };
@ -89,7 +89,7 @@ class FileLoadManager final : public Actor {
void on_partial_download(const PartialLocalFileLocation &partial_local, int64 ready_size, int64 size); void on_partial_download(const PartialLocalFileLocation &partial_local, int64 ready_size, int64 size);
void on_partial_upload(const PartialRemoteFileLocation &partial_remote, int64 ready_size); void on_partial_upload(const PartialRemoteFileLocation &partial_remote, int64 ready_size);
void on_hash(string hash); void on_hash(string hash);
void on_ok_download(const FullLocalFileLocation &local, int64 size); void on_ok_download(const FullLocalFileLocation &local, int64 size, bool is_new);
void on_ok_upload(FileType file_type, const PartialRemoteFileLocation &remote, int64 size); void on_ok_upload(FileType file_type, const PartialRemoteFileLocation &remote, int64 size);
void on_ok_upload_full(const FullRemoteFileLocation &remote); void on_ok_upload_full(const FullRemoteFileLocation &remote);
void on_error(Status status); void on_error(Status status);
@ -109,8 +109,8 @@ class FileLoadManager final : public Actor {
void on_partial_download(const PartialLocalFileLocation &partial_local, int64 ready_size, int64 size) override { void on_partial_download(const PartialLocalFileLocation &partial_local, int64 ready_size, int64 size) override {
send_closure(actor_id_, &FileLoadManager::on_partial_download, partial_local, ready_size, size); send_closure(actor_id_, &FileLoadManager::on_partial_download, partial_local, ready_size, size);
} }
void on_ok(const FullLocalFileLocation &full_local, int64 size) override { void on_ok(const FullLocalFileLocation &full_local, int64 size, bool is_new) override {
send_closure(std::move(actor_id_), &FileLoadManager::on_ok_download, full_local, size); send_closure(std::move(actor_id_), &FileLoadManager::on_ok_download, full_local, size, is_new);
} }
void on_error(Status status) override { void on_error(Status status) override {
send_closure(std::move(actor_id_), &FileLoadManager::on_error, std::move(status)); send_closure(std::move(actor_id_), &FileLoadManager::on_error, std::move(status));
@ -163,7 +163,7 @@ class FileLoadManager final : public Actor {
ActorShared<FileLoadManager> actor_id_; ActorShared<FileLoadManager> actor_id_;
void on_ok(const FullLocalFileLocation &full_local, int64 size) override { void on_ok(const FullLocalFileLocation &full_local, int64 size) override {
send_closure(std::move(actor_id_), &FileLoadManager::on_ok_download, full_local, size); send_closure(std::move(actor_id_), &FileLoadManager::on_ok_download, full_local, size, true);
} }
void on_error(Status status) override { void on_error(Status status) override {
send_closure(std::move(actor_id_), &FileLoadManager::on_error, std::move(status)); send_closure(std::move(actor_id_), &FileLoadManager::on_error, std::move(status));

View File

@ -2381,19 +2381,21 @@ void FileManager::on_partial_upload(QueryId query_id, const PartialRemoteFileLoc
try_flush_node(file_node, "on_partial_upload"); try_flush_node(file_node, "on_partial_upload");
} }
void FileManager::on_download_ok(QueryId query_id, const FullLocalFileLocation &local, int64 size) { void FileManager::on_download_ok(QueryId query_id, const FullLocalFileLocation &local, int64 size, bool is_new) {
if (is_closed_) { if (is_closed_) {
return; return;
} }
auto query = finish_query(query_id).first; auto query = finish_query(query_id).first;
auto file_id = query.file_id_; auto file_id = query.file_id_;
LOG(INFO) << "ON DOWNLOAD OK file " << file_id << " of size " << size; LOG(INFO) << "ON DOWNLOAD OK of " << (is_new ? "new" : "checked") << " file " << file_id << " of size " << size;
auto r_new_file_id = register_local(local, DialogId(), size); auto r_new_file_id = register_local(local, DialogId(), size);
if (r_new_file_id.is_error()) { if (r_new_file_id.is_error()) {
LOG(ERROR) << "Can't register local file after download: " << r_new_file_id.error(); LOG(ERROR) << "Can't register local file after download: " << r_new_file_id.error();
} else { } else {
context_->on_new_file(size, 1); if (is_new) {
context_->on_new_file(size, 1);
}
LOG_STATUS(merge(r_new_file_id.ok(), file_id)); LOG_STATUS(merge(r_new_file_id.ok(), file_id));
} }
} }

View File

@ -502,7 +502,7 @@ class FileManager : public FileLoadManager::Callback {
int64 size) override; int64 size) override;
void on_hash(QueryId query_id, string hash) override; void on_hash(QueryId query_id, string hash) override;
void on_partial_upload(QueryId query_id, const PartialRemoteFileLocation &partial_remote, int64 ready_size) override; void on_partial_upload(QueryId query_id, const PartialRemoteFileLocation &partial_remote, int64 ready_size) override;
void on_download_ok(QueryId query_id, const FullLocalFileLocation &local, int64 size) override; void on_download_ok(QueryId query_id, const FullLocalFileLocation &local, int64 size, bool is_new) override;
void on_upload_ok(QueryId query_id, FileType file_type, const PartialRemoteFileLocation &partial_remote, void on_upload_ok(QueryId query_id, FileType file_type, const PartialRemoteFileLocation &partial_remote,
int64 size) override; int64 size) override;
void on_upload_full_ok(QueryId query_id, const FullRemoteFileLocation &remote) override; void on_upload_full_ok(QueryId query_id, const FullRemoteFileLocation &remote) override;