mirror of
https://github.com/rbalsleyMSFT/FFU.git
synced 2026-06-13 18:07:20 -06:00
Adds TTL-based refresh for Surface cache
Treats driver index cache older than 7 days as stale to trigger re-downloads and avoid outdated metadata. Improves resiliency by falling back to a refresh when the cache timestamp can’t be read, and adds clearer logging for cache age and refresh decisions.
This commit is contained in:
@@ -37,6 +37,9 @@ function Import-SurfaceDriverIndexCache {
|
||||
)
|
||||
|
||||
$cachePath = Get-SurfaceDriverIndexCachePath -DriversFolder $DriversFolder
|
||||
|
||||
# Surface cache TTL (7 days): treat stale caches as missing so we re-download Sources A/B/C as needed.
|
||||
$cacheTtlDays = 7
|
||||
if (-not (Test-Path -Path $cachePath -PathType Leaf)) {
|
||||
return [pscustomobject]@{
|
||||
ModelIndex = @()
|
||||
@@ -45,6 +48,28 @@ function Import-SurfaceDriverIndexCache {
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$cacheAgeDays = ((Get-Date) - (Get-Item -Path $cachePath -ErrorAction Stop).LastWriteTime).TotalDays
|
||||
if ($cacheAgeDays -ge $cacheTtlDays) {
|
||||
WriteLog "Surface cache: Cache file '$cachePath' is older than $cacheTtlDays days ($([math]::Round($cacheAgeDays, 1)) days). Refreshing."
|
||||
return [pscustomobject]@{
|
||||
ModelIndex = @()
|
||||
SkuIndex = @()
|
||||
DownloadCenterDetails = @()
|
||||
}
|
||||
}
|
||||
|
||||
WriteLog "Surface cache: Loading cached SurfaceDriverIndex.json from '$cachePath' (age: $([math]::Round($cacheAgeDays, 1)) days)."
|
||||
}
|
||||
catch {
|
||||
WriteLog "Surface cache: Failed to read cache timestamp for '$cachePath'. Refreshing. Error: $($_.Exception.Message)"
|
||||
return [pscustomobject]@{
|
||||
ModelIndex = @()
|
||||
SkuIndex = @()
|
||||
DownloadCenterDetails = @()
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$cache = Get-Content -Path $cachePath -Raw | ConvertFrom-Json -ErrorAction Stop
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user