[BUG] Move files to a different oC account using the document provider doesn't work as expected
Open
Nobody has claimed this yet.
Document Provider
Type:bug
- Dominant language
- Kotlin
- Stars
- 4.2k
- Forks
- 3.1k
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 7
Description
Updated: 2021-08-10
Steps to reproduce
- Attach two accounts to oC app
- Open Files/Download app to work with document provider
- Select several files (i selected three)
- Move the selected files to the another oC account
Actual behaviour
- Notification Couldn't move 3 items appears.
Expected behaviour
- Files are properly moved.
Environment data
Android version: 11 & 7
Device model: Pixel 2 & Nexus 6P
2021-08-10 17:02:29.489 29404-30467/? E/MoveJob: Provider side move failed for: content://org.owncloud.documents/document/2031 due to an exception:
java.io.FileNotFoundException: File /laferrari-700.jpg not found
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.os.ParcelableException.readFromParcel(ParcelableException.java:56)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:82)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:79)
at android.os.Parcel.readParcelable(Parcel.java:3281)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2368)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:732)
at android.content.ContentProviderClient.call(ContentProviderClient.java:603)
at android.content.ContentResolver.call(ContentResolver.java:2395)
at android.provider.DocumentsContract.moveDocument(DocumentsContract.java:1514)
at com.android.documentsui.services.MoveJob.processDocument(MoveJob.java:150)
at com.android.documentsui.services.CopyJob.processDocumentThenUpdateProgress(CopyJob.java:386)
at com.android.documentsui.services.CopyJob.start(CopyJob.java:243)
at com.android.documentsui.services.Job.run(Job.java:162)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
2021-08-10 17:02:29.490 4109-12150/? I/MediaProvider: End Intent { act=android.intent.action.MEDIA_SCANNER_SCAN_FILE dat=file:///storage/emulated/0/owncloud/user1@192.168.1.20%3A37000/laferrari-700 (2).jpg flg=0x1000010 cmp=com.google.android.providers.media.module/com.android.providers.media.MediaService }
2021-08-10 17:02:29.492 4109-12150/? I/MediaProvider: Begin Intent { act=android.intent.action.MEDIA_SCANNER_SCAN_FILE dat=file:///storage/emulated/0/owncloud/user1@192.168.1.20%3A37000/laferrari-700 (2).jpg flg=0x1000010 cmp=com.google.android.providers.media.module/com.android.providers.media.MediaService }
2021-08-10 17:02:29.498 4109-12150/? I/MediaProvider: End Intent { act=android.intent.action.MEDIA_SCANNER_SCAN_FILE dat=file:///storage/emulated/0/owncloud/user1@192.168.1.20%3A37000/laferrari-700 (2).jpg flg=0x1000010 cmp=com.google.android.providers.media.module/com.android.providers.media.MediaService }
2021-08-10 17:02:29.676 29439-30413/com.owncloud.android.debug E/DatabaseUtils: Writing exception to parcel
android.os.ParcelableException: java.io.FileNotFoundException: Remote Operation failed
at android.provider.DocumentsProvider.call(DocumentsProvider.java:1069)
at android.content.ContentProvider.call(ContentProvider.java:2448)
at android.content.ContentProvider$Transport.call(ContentProvider.java:517)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:295)
at android.os.Binder.execTransactInternal(Binder.java:1154)
at android.os.Binder.execTransact(Binder.java:1123)
Caused by: java.io.FileNotFoundException: Remote Operation failed
at com.owncloud.android.providers.DocumentsStorageProvider.checkOperationResult(DocumentsStorageProvider.kt:404)
at com.owncloud.android.providers.DocumentsStorageProvider.deleteDocument(DocumentsStorageProvider.kt:333)
at android.provider.DocumentsProvider.callUnchecked(DocumentsProvider.java:1170)
at android.provider.DocumentsProvider.call(DocumentsProvider.java:1067)
at android.content.ContentProvider.call(ContentProvider.java:2448)
at android.content.ContentProvider$Transport.call(ContentProvider.java:517)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:295)
at android.os.Binder.execTransactInternal(Binder.java:1154)
at android.os.Binder.execTransact(Binder.java:1123)
2021-08-10 17:02:29.677 29404-30467/? E/CopyJob: Failed to copy content://org.owncloud.documents/document/2031
com.android.documentsui.services.ResourceException: Failed to delete file content://org.owncloud.documents/document/2031 due to an exception.
at com.android.documentsui.services.Job.deleteDocument(Job.java:290)
at com.android.documentsui.services.MoveJob.processDocument(MoveJob.java:186)
at com.android.documentsui.services.CopyJob.processDocumentThenUpdateProgress(CopyJob.java:386)
at com.android.documentsui.services.CopyJob.start(CopyJob.java:243)
at com.android.documentsui.services.Job.run(Job.java:162)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.io.FileNotFoundException: Remote Operation failed
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.os.ParcelableException.readFromParcel(ParcelableException.java:56)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:82)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:79)
at android.os.Parcel.readParcelable(Parcel.java:3281)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2368)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:732)
at android.content.ContentProviderClient.call(ContentProviderClient.java:603)
at android.content.ContentResolver.call(ContentResolver.java:2395)
at android.provider.DocumentsContract.deleteDocument(DocumentsContract.java:1460)
at com.android.documentsui.services.Job.deleteDocument(Job.java:281)
at com.android.documentsui.services.MoveJob.processDocument(MoveJob.java:186)
at com.android.documentsui.services.CopyJob.processDocumentThenUpdateProgress(CopyJob.java:386)
at com.android.documentsui.services.CopyJob.start(CopyJob.java:243)
at com.android.documentsui.services.Job.run(Job.java:162)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
2021-08-10 17:02:29.792 1478-1478/? D/NotificationService: 0|com.owncloud.android.debug|2131886795|null|13475: granting content://settings/system/notification_sound
2021-08-10 17:02:29.793 1478-1478/? D/NotificationService: 0|com.owncloud.android.debug|2131886795|null|13475: granting content://settings/system/notification_sound
2021-08-10 17:02:29.809 1979-1979/? D/InterruptionStateProvider: No bubble up: not allowed to bubble: 0|com.owncloud.android.debug|2131886795|null|13475
2021-08-10 17:02:29.809 1979-1979/? D/InterruptionStateProvider: No heads up: unimportant notification: 0|com.owncloud.android.debug|2131886795|null|13475
2021-08-10 17:02:29.971 29404-30467/? W/DocumentsContract: Failed to move document
android.os.ParcelableException: java.io.FileNotFoundException: File /ownCloud.log not found
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:82)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:79)
at android.os.Parcel.readParcelable(Parcel.java:3281)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2368)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:732)
at android.content.ContentProviderClient.call(ContentProviderClient.java:603)
at android.content.ContentResolver.call(ContentResolver.java:2395)
at android.provider.DocumentsContract.moveDocument(DocumentsContract.java:1514)
at com.android.documentsui.services.MoveJob.processDocument(MoveJob.java:150)
at com.android.documentsui.services.CopyJob.processDocumentThenUpdateProgress(CopyJob.java:386)
at com.android.documentsui.services.CopyJob.start(CopyJob.java:243)
at com.android.documentsui.services.Job.run(Job.java:162)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.io.FileNotFoundException: File /ownCloud.log not found
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.os.ParcelableException.readFromParcel(ParcelableException.java:56)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:82)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:79)
at android.os.Parcel.readParcelable(Parcel.java:3281)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2368)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:732)
at android.content.ContentProviderClient.call(ContentProviderClient.java:603)
at android.content.ContentResolver.call(ContentResolver.java:2395)
at android.provider.DocumentsContract.moveDocument(DocumentsContract.java:1514)
at com.android.documentsui.services.MoveJob.processDocument(MoveJob.java:150)
at com.android.documentsui.services.CopyJob.processDocumentThenUpdateProgress(CopyJob.java:386)
at com.android.documentsui.services.CopyJob.start(CopyJob.java:243)
at com.android.documentsui.services.Job.run(Job.java:162)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
2021-08-10 17:02:29.972 29404-30467/? E/MoveJob: Provider side move failed for: content://org.owncloud.documents/document/16 due to an exception:
java.io.FileNotFoundException: File /ownCloud.log not found
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.os.ParcelableException.readFromParcel(ParcelableException.java:56)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:82)
at android.os.ParcelableException$1.createFromParcel(ParcelableException.java:79)
at android.os.Parcel.readParcelable(Parcel.java:3281)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2368)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.call(ContentProviderNative.java:732)
at android.content.ContentProviderClient.call(ContentProviderClient.java:603)
at android.content.ContentResolver.call(ContentResolver.java:2395)
at android.provider.DocumentsContract.moveDocument(DocumentsContract.java:1514)
at com.android.documentsui.services.MoveJob.processDocument(MoveJob.java:150)
at com.android.documentsui.services.CopyJob.processDocumentThenUpdateProgress(CopyJob.java:386)
at com.android.documentsui.services.CopyJob.start(CopyJob.java:243)
at com.android.documentsui.services.Job.run(Job.java:162)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with DocumentsStorageProvider.kt, especially deleteDocument and checkOperationResult at the stack-trace locations, then trace the Android document-provider move flow shown in the logs. Reproduce moving several files between two attached accounts and verify that the move completes without the provider-side copy or delete failures.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100