Skip to content

Commit dc6badd

Browse files
kastedeathaxe
authored andcommitted
Do not cache "file:///" resources (#1697)
Fixes #1695 We generally cache to save the network latency, not because our transformations of the data were so expensive. We expect that "file:///" protocol resources can be read fast enough for our purposes and want to ensure that changes of such local files are available immediately, e.g. without restart Sublime Text or clearing the cache as a whole (`clear_cache`).
1 parent cd1da78 commit dc6badd

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

package_control/package_manager.py

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,10 @@ def list_repositories(self):
493493

494494
# Caches various info from channels for performance
495495
cache_key = channel + '.repositories'
496-
channel_repositories = get_cache(cache_key)
496+
if channel[:8].lower() == "file:///":
497+
channel_repositories = None
498+
else:
499+
channel_repositories = get_cache(cache_key)
497500

498501
merge_cache_under_settings(self, 'renamed_packages', channel)
499502
merge_cache_under_settings(self, 'unavailable_packages', channel, list_=True)
@@ -512,7 +515,8 @@ def list_repositories(self):
512515

513516
try:
514517
channel_repositories = provider.get_repositories()
515-
set_cache(cache_key, channel_repositories, cache_ttl)
518+
if channel[:8].lower() != "file:///":
519+
set_cache(cache_key, channel_repositories, cache_ttl)
516520

517521
unavailable_packages = []
518522
unavailable_libraries = []
@@ -636,17 +640,19 @@ def download_repo(url):
636640
console_write('Removed malicious repository %s' % repo)
637641
continue
638642

639-
cache_key = repo + '.packages'
640-
repository_packages = get_cache(cache_key)
641-
642-
if repository_packages:
643-
packages.update(repository_packages)
644-
645-
cache_key = repo + '.libraries'
646-
repository_libraries = get_cache(cache_key)
643+
if repo[:8].lower() == "file:///":
644+
repository_packages = None
645+
repository_libraries = None
646+
else:
647+
cache_key = repo + '.packages'
648+
repository_packages = get_cache(cache_key)
649+
if repository_packages:
650+
packages.update(repository_packages)
647651

648-
if repository_libraries:
649-
libraries.update(repository_libraries)
652+
cache_key = repo + '.libraries'
653+
repository_libraries = get_cache(cache_key)
654+
if repository_libraries:
655+
libraries.update(repository_libraries)
650656

651657
if repository_packages is None and repository_libraries is None:
652658
if executor is None:
@@ -692,12 +698,13 @@ def download_repo(url):
692698
for _, exception in provider.get_broken_libraries():
693699
console_write(exception)
694700

695-
cache_key = provider.repo_url + '.packages'
696-
set_cache(cache_key, repository_packages, cache_ttl)
697-
packages.update(repository_packages)
701+
if provider.repo_url[:8].lower() != "file:///":
702+
cache_key = provider.repo_url + '.packages'
703+
set_cache(cache_key, repository_packages, cache_ttl)
704+
cache_key = provider.repo_url + '.libraries'
705+
set_cache(cache_key, repository_libraries, cache_ttl)
698706

699-
cache_key = provider.repo_url + '.libraries'
700-
set_cache(cache_key, repository_libraries, cache_ttl)
707+
packages.update(repository_packages)
701708
libraries.update(repository_libraries)
702709

703710
renamed_packages = provider.get_renamed_packages()

0 commit comments

Comments
 (0)