From 6fa5f5facdaa623fda541d56a37321dc24c4ff28 2017-09-22 13:13:47 From: Alexandre Leroux Date: 2017-09-22 13:13:47 Subject: [PATCH] Fixes data loss in some cases of data recovery from the CosiunusProvider --- diff --git a/core/src/Variable/VariableController.cpp b/core/src/Variable/VariableController.cpp index 07674c7..32a44b3 100644 --- a/core/src/Variable/VariableController.cpp +++ b/core/src/Variable/VariableController.cpp @@ -574,8 +574,13 @@ void VariableController::VariableControllerPrivate::processRequest(std::shared_p auto varStrategyRangesRequested = m_VariableCacheStrategy->computeStrategyRanges(var->range(), rangeRequested); - auto notInCacheRangeList = var->provideNotInCacheRangeList(varStrategyRangesRequested.second); - auto inCacheRangeList = var->provideInCacheRangeList(varStrategyRangesRequested.second); + + auto notInCacheRangeList = QVector{varStrategyRangesRequested.second}; + auto inCacheRangeList = QVector{}; + if (m_VarIdToVarRequestIdQueueMap.find(varId) == m_VarIdToVarRequestIdQueueMap.cend()) { + notInCacheRangeList = var->provideNotInCacheRangeList(varStrategyRangesRequested.second); + inCacheRangeList = var->provideInCacheRangeList(varStrategyRangesRequested.second); + } if (!notInCacheRangeList.empty()) { varRequest.m_RangeRequested = varStrategyRangesRequested.first;