Nextcloud

Zdarzyła się taka sytuacja, że podczas wysyłania pliku podwiesiła się sesja. Po jakimś czasie klient Androida próbował wznowić wysyłanie ale serwer się wywalił (a konkretnie SabreDAV) twierdząc że już taki plik (tymczasowy) istnieje.

xx.xx.xxx.xxx - xxxxx [14/Jun/2022:21:15:24 +0200] "HEAD /remote.php/dav/files/xxxxx//InstantUpload/Mate40Pro/DCIM/IMG_20220614_203947.jpg HTTP/1.0" 404 0 "-" "Mozilla/5.0 (Android) Nextcloud-android/3.20.2"
xx.xx.xxx.xxx - xxxxx [14/Jun/2022:21:15:24 +0200] "MKCOL /remote.php/dav/uploads/xxxxx/3c9d8e8f37c4422eb756ba8d0b282d9d HTTP/1.0" 405 247 "-" "Mozilla/5.0 (Android) Nextcloud-android/3.20.2"
xx.xx.xxx.xxx - xxxxx [14/Jun/2022:21:15:25 +0200] "PROPFIND /remote.php/dav/uploads/xxxxx/3c9d8e8f37c4422eb756ba8d0b282d9d HTTP/1.0" 207 772 "-" "Mozilla/5.0 (Android) Nextcloud-android/3.20.2"

Ten HTTP/405 powoduje że klient zwraca „błąd serwera” i po jakimś czasie próbuje na nowo. Niestety zakłada taki sam hash na tymczasowy upload, więc sytuacja się powtarza i tak kółko..

Rozwiązaniem jest wywalenie uszkodzonego uploadu z katalogu nextcloud/data/xxxxx/uploads/ i przeskanowanie na nowo całej struktury plików ale chwilę to trwa:

# sudo -u www php occ files:scan --all
Starting scan for user 1 out of 4 (xxxxx)
Starting scan for user 2 out of 4 (xxxxxxx)
Starting scan for user 3 out of 4 (xxxxxxx)
Starting scan for user 4 out of 4 (xxxxxxx)
+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 1992    | 29767 | 00:04:11     |
+---------+-------+--------------+