diff --git a/platform/local_country_file_utils.cpp b/platform/local_country_file_utils.cpp index 8593bdbb74..dac1d80b4f 100644 --- a/platform/local_country_file_utils.cpp +++ b/platform/local_country_file_utils.cpp @@ -152,8 +152,7 @@ void FindAllDiffsInDirectory(string const & dir, vector & diff auto const isDiffReady = strings::EndsWith(name, strings::to_string(DIFF_FILE_EXTENSION) + READY_FILE_EXTENSION); - auto const isDiff = - strings::EndsWith(name, DIFF_FILE_EXTENSION); + auto const isDiff = strings::EndsWith(name, DIFF_FILE_EXTENSION); if (!isDiff && !isDiffReady) continue; diff --git a/platform/marketing_service.cpp b/platform/marketing_service.cpp index 7ffd24fe6e..01726f2e82 100644 --- a/platform/marketing_service.cpp +++ b/platform/marketing_service.cpp @@ -28,6 +28,8 @@ char const * const kBookmarksBookmarkAction = "Bookmarks_Bookmark_action"; char const * const kPlacepageHotelBook = "Placepage_Hotel_book"; char const * const kEditorAddStart = "EditorAdd_start"; char const * const kEditorEditStart = "EditorEdit_start"; +char const * const kDiffSchemeFallback = "Downloader_DiffScheme_OnStart_fallback"; +char const * const kDiffSchemeError = "Downloader_DiffScheme_error"; // Settings. char const * const kFrom = "utm_source"; diff --git a/platform/marketing_service.hpp b/platform/marketing_service.hpp index be8a57b5a1..3b5bf40374 100644 --- a/platform/marketing_service.hpp +++ b/platform/marketing_service.hpp @@ -33,6 +33,8 @@ extern char const * const kBookmarksBookmarkAction; extern char const * const kPlacepageHotelBook; extern char const * const kEditorAddStart; extern char const * const kEditorEditStart; +extern char const * const kDiffSchemeFallback; +extern char const * const kDiffSchemeError; // Settings. extern char const * const kFrom; diff --git a/storage/diff_scheme/diff_manager.cpp b/storage/diff_scheme/diff_manager.cpp index 1fbd6bcf21..b5508ed2ed 100644 --- a/storage/diff_scheme/diff_manager.cpp +++ b/storage/diff_scheme/diff_manager.cpp @@ -31,7 +31,8 @@ void Manager::Load(LocalMapsInfo && info) if (diffs.empty()) { m_status = Status::NotAvailable; - // TODO: Log fall back to the old scheme (Downloader_DiffScheme_OnStart_fallback (Aloha)). + + GetPlatform().GetMarketingService().SendMarketingEvent(marketing::kDiffSchemeFallback, {}); } else { @@ -40,8 +41,7 @@ void Manager::Load(LocalMapsInfo && info) auto & observers = m_observers; auto status = m_status; - GetPlatform().RunOnGuiThread([observers, status]() mutable - { + GetPlatform().RunOnGuiThread([observers, status]() mutable { observers.ForEach(&Observer::OnDiffStatusReceived, status); }); }); @@ -62,13 +62,14 @@ void Manager::ApplyDiff(ApplyDiffParams && p, std::functionSyncWithDisk(); auto const isOnDisk = diffFile->OnDisk(MapOptions::Diff); + auto const isFilePrepared = isOnDisk || my::RenameFileX(diffReadyPath, diffPath); - if (isOnDisk || my::RenameFileX(diffReadyPath, diffPath)) + if (isFilePrepared) { // Sync with disk after renaming. if (!isOnDisk) diffFile->SyncWithDisk(); - + string const oldMwmPath = p.m_oldMwmFile->GetPath(MapOptions::Map); string const newMwmPath = diffFile->GetPath(MapOptions::Map); result = generator::mwm_diff::ApplyDiff(oldMwmPath, newMwmPath, diffPath); @@ -87,7 +88,11 @@ void Manager::ApplyDiff(ApplyDiffParams && p, std::function lock(m_mutex); m_status = Status::NotAvailable; - // TODO: Log the diff applying error (Downloader_DiffScheme_error (Aloha)). + + GetPlatform().GetMarketingService().SendMarketingEvent( + marketing::kDiffSchemeError, + {{"type", "patching"}, + {"error", !isFilePrepared ? "Cannot to prepare file" : "Cannot to apply diff"}}); } task(result); diff --git a/storage/diff_scheme/diff_scheme_checker.cpp b/storage/diff_scheme/diff_scheme_checker.cpp index 86ad927fe4..88564c5bef 100644 --- a/storage/diff_scheme/diff_scheme_checker.cpp +++ b/storage/diff_scheme/diff_scheme_checker.cpp @@ -6,6 +6,7 @@ #include "base/logging.hpp" #include +#include #include #include #include @@ -125,8 +126,12 @@ NameFileInfoMap Checker::Check(LocalMapsInfo const & info) } else { - LOG(LINFO, ("Request to diffs server failed. Code =", request.ErrorCode(), - ", Redirection =", request.WasRedirected())); + ostringstream ost; + ost << "Request to diffs server failed. Code = " << request.ErrorCode() + << ", redirection = " << request.WasRedirected(); + LOG(LINFO, (ost.str())); + GetPlatform().GetMarketingService().SendMarketingEvent( + marketing::kDiffSchemeError, {{"type", "network"}, {"error", ost.str()}}); } return diffs; diff --git a/storage/storage.cpp b/storage/storage.cpp index a7e8f28fa0..7d282fad9f 100644 --- a/storage/storage.cpp +++ b/storage/storage.cpp @@ -276,7 +276,7 @@ void Storage::RegisterAllLocalMaps(bool enableDiffs) i = j; } - + FindAllDiffs(m_dataDir, m_notAppliedDiffs); if (enableDiffs) LoadDiffScheme();