From ce785da706c58a01115556b8be9fb0dfe943a13c Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Fri, 1 Apr 2016 20:17:14 +0300 Subject: [PATCH 1/2] Routing unpacking error workaround. --- routing/turns_generator.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/routing/turns_generator.cpp b/routing/turns_generator.cpp index 6d743b4ffd..f6ae39f2dd 100644 --- a/routing/turns_generator.cpp +++ b/routing/turns_generator.cpp @@ -11,6 +11,7 @@ #include "base/macros.hpp" +#include "3party/Alohalytics/src/alohalytics.h" #include "3party/osrm/osrm-backend/data_structures/internal_route_result.hpp" #include "std/cmath.hpp" @@ -476,6 +477,17 @@ LoadedPathSegment::LoadedPathSegment(RoutingMapping & mapping, Index const & ind { buffer_vector buffer; mapping.m_segMapping.ForEachFtSeg(osrmPathSegment.node, MakeBackInsertFunctor(buffer)); + if (buffer.empty()) + { + LOG(LWARNING, ("Can't unpack geometry for map:", mapping.GetCountryName(), " node: ", + osrmPathSegment.node)); + alohalytics::Stats::Instance().LogEvent( + "RouteTracking_UnpackingError", + {{"node", strings::to_string(osrmPathSegment.node)}, + {"map", mapping.GetCountryName()}, + {"version", strings::to_string(mapping.GetMwmId().GetInfo()->GetVersion())}}); + return; + } LoadPathGeometry(buffer, 0, buffer.size(), index, mapping, FeatureGraphNode(), FeatureGraphNode(), false /* isStartNode */, false /*isEndNode*/); } @@ -924,7 +936,8 @@ size_t CheckUTurnOnRoute(vector const & segments, size_t curr ASSERT_GREATER(currentSegment, 0, ()); ASSERT_GREATER(segments.size(), currentSegment, ()); auto const & masterSegment = segments[currentSegment - 1]; - ASSERT_GREATER(masterSegment.m_path.size(), 1, ()); + if (masterSegment.m_path.size() < 2) + return 0; // Roundabout is not the UTurn. if (masterSegment.m_onRoundabout) return 0; From 917351d58ee45bf8704886d8c6dd538f8fdd1a03 Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Tue, 5 Apr 2016 12:28:51 +0300 Subject: [PATCH 2/2] Review fixes. --- routing/turns_generator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/routing/turns_generator.cpp b/routing/turns_generator.cpp index f6ae39f2dd..3f95843d4b 100644 --- a/routing/turns_generator.cpp +++ b/routing/turns_generator.cpp @@ -479,8 +479,8 @@ LoadedPathSegment::LoadedPathSegment(RoutingMapping & mapping, Index const & ind mapping.m_segMapping.ForEachFtSeg(osrmPathSegment.node, MakeBackInsertFunctor(buffer)); if (buffer.empty()) { - LOG(LWARNING, ("Can't unpack geometry for map:", mapping.GetCountryName(), " node: ", - osrmPathSegment.node)); + LOG(LERROR, ("Can't unpack geometry for map:", mapping.GetCountryName(), " node: ", + osrmPathSegment.node)); alohalytics::Stats::Instance().LogEvent( "RouteTracking_UnpackingError", {{"node", strings::to_string(osrmPathSegment.node)},