nextcloud / nextcloud/ios

Failed uploads stay in queue and never try again

Open
#770 5 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Swift
Stars
2.5k
Forks
1k
Avg merge
2d 18h
Merged PRs (30d)
13

Description

Expected behaviour

If the server is temporarily unable to accept an upload (for example, permissions or file-size restrictions) of one or more files/images, a user should be able to manually trigger a retry for queued files.

Actual behaviour

During a server migration last month, 140 images/videos got stuck in queue. Each queue element looks like:

<More Transfers
[IMG] 18-12-20 16-04-04 7127.jpg
Error code 413
O
[IMG] 18-12-20 16-04-15 7128.jpg
Error code 413
O
...
[IMG] 19-01-03 19-22-50 7573.jpg
You don't have permission to complete the...
O
[IMG] 18-12-30-14-22-03 7328.jpg
Internal server error
O

The circle at right has a square "stop" button but that only cancels the transfer of that item, permanently. There is no other option, so I leave the queue in place hoping for a fix.

Steps to reproduce
  1. Install an nginx reverse-proxy in front of Nextcloud server
  2. Set the client-body-buffer-size / proxy-body-size nginx parameters to a value smaller than the images you have on your phone, say 100K
  3. Take a few pictures
  4. Start Nextcloud IOS app and look for the 413 errors to show up
  5. Adjust the nginx parameters back to a normal level (unlimited, or >=1G)
  6. Go back into this IOS app and see the queued pictures remain stuck
iOS version

12.1.1

App version

2.22.7.4

Server configuration

16GB RAM 1TB SSD gigE Ethernet

Operating system:
Ubuntu 18.04

Web server:
nginx from quay.io kubernetes plus the apache2 built into docker image

Database:
Internal sqlite

PHP version:
7.2.13 built into official image

Nextcloud version: (see Nextcloud admin page)
NextCloud 15.0.0 official docker image, 4GB allocated

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the iOS upload queue that retains failed 413, permission, and server-error items, then trace the existing stop/cancel control. Reproduce the nginx size-limit failure and verify that, after the limit is raised, a user can manually retry queued files without losing them.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.