Merge pull request #22928 from nextcloud/backport/22915/stable20

[stable20] improve handling of out of space errors for smb
This commit is contained in:
Roeland Jago Douma 2020-09-22 13:08:21 +02:00 committed by GitHub
commit 46babff37b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 0 deletions

View File

@ -44,6 +44,7 @@ use Icewind\SMB\Exception\Exception;
use Icewind\SMB\Exception\ForbiddenException; use Icewind\SMB\Exception\ForbiddenException;
use Icewind\SMB\Exception\InvalidArgumentException; use Icewind\SMB\Exception\InvalidArgumentException;
use Icewind\SMB\Exception\NotFoundException; use Icewind\SMB\Exception\NotFoundException;
use Icewind\SMB\Exception\OutOfSpaceException;
use Icewind\SMB\Exception\TimedOutException; use Icewind\SMB\Exception\TimedOutException;
use Icewind\SMB\IFileInfo; use Icewind\SMB\IFileInfo;
use Icewind\SMB\Native\NativeServer; use Icewind\SMB\Native\NativeServer;
@ -57,6 +58,7 @@ use OC\Files\Filesystem;
use OC\Files\Storage\Common; use OC\Files\Storage\Common;
use OCA\Files_External\Lib\Notify\SMBNotifyHandler; use OCA\Files_External\Lib\Notify\SMBNotifyHandler;
use OCP\Constants; use OCP\Constants;
use OCP\Files\EntityTooLargeException;
use OCP\Files\Notify\IChange; use OCP\Files\Notify\IChange;
use OCP\Files\Notify\IRenameChange; use OCP\Files\Notify\IRenameChange;
use OCP\Files\Storage\INotifyStorage; use OCP\Files\Storage\INotifyStorage;
@ -497,6 +499,8 @@ class SMB extends Common implements INotifyStorage {
return false; return false;
} catch (ForbiddenException $e) { } catch (ForbiddenException $e) {
return false; return false;
} catch (OutOfSpaceException $e) {
throw new EntityTooLargeException("not enough available space to create file", 0, $e);
} catch (ConnectException $e) { } catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while opening file']); $this->logger->logException($e, ['message' => 'Error while opening file']);
throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);
@ -538,6 +542,8 @@ class SMB extends Common implements INotifyStorage {
return true; return true;
} }
return false; return false;
} catch (OutOfSpaceException $e) {
throw new EntityTooLargeException("not enough available space to create file", 0, $e);
} catch (ConnectException $e) { } catch (ConnectException $e) {
$this->logger->logException($e, ['message' => 'Error while creating file']); $this->logger->logException($e, ['message' => 'Error while creating file']);
throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e);