Make sure cache clearing works easily in all cases

main
Jordi Boggiano 9 years ago
parent 09a6a19257
commit 8808638ea9

@ -43,7 +43,7 @@ abstract class ArchiveDownloader extends FileDownloader
$this->extract($fileName, $temporaryDir); $this->extract($fileName, $temporaryDir);
} catch (\Exception $e) { } catch (\Exception $e) {
// remove cache if the file was corrupted // remove cache if the file was corrupted
parent::clearCache($package, $path); parent::clearLastCacheWrite($package);
throw $e; throw $e;
} }

@ -39,6 +39,7 @@ class FileDownloader implements DownloaderInterface
protected $filesystem; protected $filesystem;
protected $cache; protected $cache;
protected $outputProgress = true; protected $outputProgress = true;
private $lastCacheWrites = array();
/** /**
* Constructor. * Constructor.
@ -147,6 +148,7 @@ class FileDownloader implements DownloaderInterface
} }
if ($this->cache) { if ($this->cache) {
$this->lastCacheWrites[$package->getName()] = $cacheKey;
$this->cache->copyFrom($cacheKey, $fileName); $this->cache->copyFrom($cacheKey, $fileName);
} }
} else { } else {
@ -164,7 +166,7 @@ class FileDownloader implements DownloaderInterface
} catch (\Exception $e) { } catch (\Exception $e) {
// clean up // clean up
$this->filesystem->removeDirectory($path); $this->filesystem->removeDirectory($path);
$this->clearCache($package, $path, $processedUrl); $this->clearLastCacheWrite($package);
throw $e; throw $e;
} }
@ -181,10 +183,11 @@ class FileDownloader implements DownloaderInterface
return $this; return $this;
} }
protected function clearCache(PackageInterface $package, $path, $processedUrl) protected function clearLastCacheWrite(PackageInterface $package)
{ {
if ($this->cache) { if ($this->cache && isset($this->lastCacheWrites[$package->getName()])) {
$this->cache->remove($this->getCacheKey($package, $processedUrl)); $this->cache->remove($this->lastCacheWrites[$package->getName()]);
unset($this->lastCacheWrites[$package->getName()]);
} }
} }

Loading…
Cancel
Save