Skip to content

Commit f883321

Browse files
committed
Keep track of whether the cache needs rebuilding (#24)
This is in addition to always rebuilding when the cache is empty Fix NuGet/NuGetGallery#3277 (cherry picked from commit 466f321)
1 parent 64a7883 commit f883321

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

src/NuGet.Server.Core/Infrastructure/ServerPackageRepository.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ public class ServerPackageRepository
3434

3535
private readonly bool _runBackgroundTasks;
3636
private FileSystemWatcher _fileSystemWatcher;
37-
private bool _isFileSystemWatcherSuppressed;
37+
private bool _isFileSystemWatcherSuppressed = false;
38+
private bool _needsRebuild = true;
3839

3940
private Timer _persistenceTimer;
4041
private Timer _rebuildTimer;
@@ -375,11 +376,11 @@ private IEnumerable<ServerPackage> CachedPackages
375376
{
376377
get
377378
{
378-
if (!_serverPackageStore.HasPackages())
379+
if (_needsRebuild || !_serverPackageStore.HasPackages())
379380
{
380381
lock (_syncLock)
381382
{
382-
if (!_serverPackageStore.HasPackages())
383+
if (_needsRebuild || !_serverPackageStore.HasPackages())
383384
{
384385
RebuildPackageStore();
385386
}
@@ -420,6 +421,8 @@ private void RebuildPackageStore()
420421
// Persist
421422
_serverPackageStore.PersistIfDirty();
422423

424+
_needsRebuild = false;
425+
423426
_logger.Log(LogLevel.Info, "Finished rebuilding package store.");
424427
}
425428
}
@@ -557,6 +560,7 @@ public void ClearCache()
557560

558561
_serverPackageStore.Clear();
559562
_serverPackageStore.Persist();
563+
_needsRebuild = true;
560564
_logger.Log(LogLevel.Info, "Cleared package cache.");
561565
}
562566
}

0 commit comments

Comments
 (0)