allow availability recheck for external storages

This commit is contained in:
Robin Appelman 2016-03-03 14:19:34 +01:00
parent 4f25f34178
commit 6990100e6e
2 changed files with 14 additions and 6 deletions

View File

@ -23,6 +23,7 @@
namespace OCA\Files_External\Config;
use OC\Files\Storage\Wrapper\Availability;
use OCA\Files_external\Migration\StorageMigrator;
use OCP\Files\Storage;
use OC\Files\Mount\MountPoint;
@ -132,7 +133,7 @@ class ConfigAdapter implements IMountProvider {
try {
$availability = $impl->getAvailability();
if (!$availability['available']) {
if (!$availability['available'] && !Availability::shouldRecheck($availability)) {
$impl = new FailedStorage(['exception' => null]);
}
} catch (\Exception $e) {

View File

@ -29,6 +29,16 @@ namespace OC\Files\Storage\Wrapper;
class Availability extends Wrapper {
const RECHECK_TTL_SEC = 600; // 10 minutes
public static function shouldRecheck($availability) {
if (!$availability['available']) {
// trigger a recheck if TTL reached
if ((time() - $availability['last_checked']) > self::RECHECK_TTL_SEC) {
return true;
}
}
return false;
}
/**
* @return bool
*/
@ -47,11 +57,8 @@ class Availability extends Wrapper {
*/
private function isAvailable() {
$availability = $this->getAvailability();
if (!$availability['available']) {
// trigger a recheck if TTL reached
if ((time() - $availability['last_checked']) > self::RECHECK_TTL_SEC) {
return $this->updateAvailability();
}
if (self::shouldRecheck($availability)) {
return $this->updateAvailability();
}
return $availability['available'];
}