If the seafile server is running on low end hardware or has slow storage and the android device is uploading several large images or a video file it can hang at 99% and then fail even though the file did upload succesfully.
The android client will then often retry again sometimes more than once, eventually the app does recongise the server did actually complete the upload (presumably it checks the checksum file on the server vs the one it has locally) and cancells the in progress attempt to re-upload.
The problem is this wastes bandwidth perticullarly when the file is a several hundred MB video file.
Ideally what really needs to happen is there be an exchange between the client/server where they both confirm the upload completed but the server is still doing some proccessing on the incoming data.
Or even a retry delay in the case of the andorid app thinking the upload failed.