mirror of
https://github.com/nextcloud/server.git
synced 2026-06-11 09:42:09 -04:00
Soft fail in CustomPropertiesBackend whenever storage not available
When a storage is not available, it will not fail the whole call any more but still return a usable file list.
This commit is contained in:
parent
a9b4f0d842
commit
eb894e6625
2 changed files with 15 additions and 1 deletions
|
|
@ -30,6 +30,7 @@ use Sabre\DAV\PropFind;
|
|||
use Sabre\DAV\PropPatch;
|
||||
use Sabre\DAV\Tree;
|
||||
use Sabre\DAV\Exception\NotFound;
|
||||
use Sabre\DAV\Exception\ServiceUnavailable;
|
||||
|
||||
class CustomPropertiesBackend implements BackendInterface {
|
||||
|
||||
|
|
@ -100,6 +101,9 @@ class CustomPropertiesBackend implements BackendInterface {
|
|||
if (!($node instanceof Node)) {
|
||||
return;
|
||||
}
|
||||
} catch (ServiceUnavailable $e) {
|
||||
// might happen for unavailable mount points, skip
|
||||
return;
|
||||
} catch (NotFound $e) {
|
||||
// in some rare (buggy) cases the node might not be found,
|
||||
// we catch the exception to prevent breaking the whole list with a 404
|
||||
|
|
|
|||
|
|
@ -105,11 +105,16 @@ class CustomPropertiesBackend extends \Test\TestCase {
|
|||
* Test that propFind on a missing file soft fails
|
||||
*/
|
||||
public function testPropFindMissingFileSoftFail() {
|
||||
$this->tree->expects($this->any())
|
||||
$this->tree->expects($this->at(0))
|
||||
->method('getNodeForPath')
|
||||
->with('/dummypath')
|
||||
->will($this->throwException(new \Sabre\DAV\Exception\NotFound()));
|
||||
|
||||
$this->tree->expects($this->at(1))
|
||||
->method('getNodeForPath')
|
||||
->with('/dummypath')
|
||||
->will($this->throwException(new \Sabre\DAV\Exception\ServiceUnavailable()));
|
||||
|
||||
$propFind = new \Sabre\DAV\PropFind(
|
||||
'/dummypath',
|
||||
array(
|
||||
|
|
@ -125,6 +130,11 @@ class CustomPropertiesBackend extends \Test\TestCase {
|
|||
$propFind
|
||||
);
|
||||
|
||||
$this->plugin->propFind(
|
||||
'/dummypath',
|
||||
$propFind
|
||||
);
|
||||
|
||||
// no exception, soft fail
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue