mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 08:10:05 +00:00
Change the selection of the most recent level 2 scan to avoid certain
improper removal from causing issues.
This commit is contained in:
parent
314d3f5b9b
commit
1f0d2a7a66
1 changed files with 40 additions and 37 deletions
|
|
@ -367,7 +367,6 @@ AwsLevel2ChunksDataProvider::Impl::ListObjects()
|
|||
scanPrefix);
|
||||
}
|
||||
|
||||
int lastScanNumber = -1;
|
||||
// Start with last scan
|
||||
int previousScanNumber = scanNumberMap.crbegin()->first;
|
||||
const int firstScanNumber = scanNumberMap.cbegin()->first;
|
||||
|
|
@ -375,50 +374,54 @@ AwsLevel2ChunksDataProvider::Impl::ListObjects()
|
|||
// Look for a gap in scan numbers. This indicates that is the latest
|
||||
// scan.
|
||||
|
||||
// This indicates that highest number scan is the last scan
|
||||
auto possibleLastNumbers = std::unordered_set<int>();
|
||||
// This indicates that highest number scan may be the last scan
|
||||
// (including if there is only 1 scan)
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
if (previousScanNumber != 999 || scans.size() == 1)
|
||||
if (previousScanNumber != 999 || firstScanNumber != 1)
|
||||
{
|
||||
lastScanNumber = previousScanNumber;
|
||||
possibleLastNumbers.emplace(previousScanNumber);
|
||||
}
|
||||
else
|
||||
// Have already checked scan with highest number, so skip first
|
||||
previousScanNumber = firstScanNumber;
|
||||
bool first = true;
|
||||
for (const auto& scan : scanNumberMap)
|
||||
{
|
||||
// Have already checked scan with highest number, so skip first
|
||||
previousScanNumber = firstScanNumber;
|
||||
bool first = true;
|
||||
for (const auto& scan : scanNumberMap)
|
||||
if (first)
|
||||
{
|
||||
if (first)
|
||||
{
|
||||
first = false;
|
||||
continue;
|
||||
}
|
||||
if (scan.first != previousScanNumber + 1)
|
||||
{
|
||||
lastScanNumber = previousScanNumber;
|
||||
break;
|
||||
}
|
||||
previousScanNumber = scan.first;
|
||||
first = false;
|
||||
continue;
|
||||
}
|
||||
if (scan.first != previousScanNumber + 1)
|
||||
{
|
||||
possibleLastNumbers.emplace(previousScanNumber);
|
||||
}
|
||||
previousScanNumber = scan.first;
|
||||
}
|
||||
|
||||
if (possibleLastNumbers.empty())
|
||||
{
|
||||
logger_->warn("Could not find last scan");
|
||||
// TODO make sure this makes sence
|
||||
return {false, 0, 0};
|
||||
}
|
||||
|
||||
int lastScanNumber = -1;
|
||||
std::chrono::system_clock::time_point lastScanTime = {};
|
||||
std::string lastScanPrefix;
|
||||
|
||||
for (const int scanNumber : possibleLastNumbers)
|
||||
{
|
||||
const std::string& scanPrefix = scanNumberMap.at(scanNumber);
|
||||
auto scanTime = GetScanTime(scanPrefix);
|
||||
if (scanTime > lastScanTime)
|
||||
{
|
||||
lastScanTime = scanTime;
|
||||
lastScanPrefix = scanPrefix;
|
||||
lastScanNumber = scanNumber;
|
||||
}
|
||||
}
|
||||
|
||||
if (lastScanNumber == -1)
|
||||
{
|
||||
// 999 is the last scan
|
||||
if (firstScanNumber != 1)
|
||||
{
|
||||
lastScanNumber = previousScanNumber;
|
||||
}
|
||||
else
|
||||
{
|
||||
logger_->warn("Could not find last scan");
|
||||
// TODO make sure this makes sence
|
||||
return {false, 0, 0};
|
||||
}
|
||||
}
|
||||
|
||||
const std::string& lastScanPrefix = scanNumberMap.at(lastScanNumber);
|
||||
const int secondLastScanNumber =
|
||||
// 999 is the last file possible
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
|
@ -452,7 +455,7 @@ AwsLevel2ChunksDataProvider::Impl::ListObjects()
|
|||
currentScan_.valid_ = true;
|
||||
currentScan_.prefix_ = lastScanPrefix;
|
||||
currentScan_.nexradFile_ = nullptr;
|
||||
currentScan_.time_ = GetScanTime(lastScanPrefix);
|
||||
currentScan_.time_ = lastScanTime;
|
||||
currentScan_.lastModified_ = {};
|
||||
currentScan_.secondLastModified_ = {};
|
||||
currentScan_.lastKey_ = "";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue