Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moving a folder with local storage should not trigger an error if it is accessed directly after moving it #420

Closed
2 tasks done
SailReal opened this issue Mar 20, 2022 · 0 comments
Labels
storage:local type:bug Something isn't working
Milestone

Comments

@SailReal
Copy link
Member

SailReal commented Mar 20, 2022

Please agree to the following

Summary

Moving a folder using local storage should not trigger an error when accessing it directly. Refreshing and then navigating into the folder works as workaround.

System Setup

- Android: 12
- Cryptomator: 1.7.1

Cloud Type

Local storage

Steps to Reproduce

  1. Create folder bar in foo
  2. Move folder bar to baz
  3. Open folder bar

Expected Behavior

Folder bar gets opened without problems

Actual Behavior

An general error occurs:

device-2022-03-20-024123.mp4

Reproducibility

Always

Relevant Log Output

org.cryptomator.debug D/BackgroundTasks: type:1 all:1 register@ org.cryptomator.domain.usecases.cloud.GetCloudListUseCase$Launcher#run:62
org.cryptomator.debug D/GetCloudListUseCase: started 24fb04a9
org.cryptomator.debug D/GetCloudListUseCase: failed 24fb04a9
org.cryptomator.debug D/ExceptionHandler: 			Unexpected error
    org.cryptomator.domain.exception.FatalBackendException: java.io.IOException: read failed: EISDIR (Is a directory)
        at org.cryptomator.data.util.CopyStream.copyStreamToStream(CopyStream.kt:23)
        at org.cryptomator.data.util.CopyStream.copyStreamToStream(CopyStream.kt:15)
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkImpl.read(LocalStorageAccessFrameworkImpl.kt:369)
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkContentRepository.read(LocalStorageAccessFrameworkContentRepository.kt:90)
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkContentRepository.read(LocalStorageAccessFrameworkContentRepository.kt:18)
        at org.cryptomator.data.repository.DispatchingCloudContentRepository.read(DispatchingCloudContentRepository.kt:160)
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.loadContentsOfDirFile(CryptoImplVaultFormat7.kt:284)
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.loadDirId(CryptoImplVaultFormat7.kt:274)
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.createDirIdInfo(CryptoImplVaultFormat7.kt:251)
        at org.cryptomator.data.cloud.crypto.CryptoImplDecorator.dirIdInfo(CryptoImplDecorator.kt:356)
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.list(CryptoImplVaultFormat7.kt:135)
        at org.cryptomator.data.cloud.crypto.CryptoCloudContentRepository.list(CryptoCloudContentRepository.kt:58)
        at org.cryptomator.data.cloud.crypto.CryptoCloudContentRepository.list(CryptoCloudContentRepository.kt:21)
        at org.cryptomator.data.repository.DispatchingCloudContentRepository.list(DispatchingCloudContentRepository.kt:103)
        at org.cryptomator.domain.usecases.cloud.GetCloudList.execute(GetCloudList.java:24)
        at org.cryptomator.domain.usecases.cloud.GetCloudListUseCase$Launcher$2.call(GetCloudListUseCase.java:92)
        at org.cryptomator.domain.usecases.cloud.GetCloudListUseCase$Launcher$2.call(GetCloudListUseCase.java:86)
        at io.reactivex.internal.operators.flowable.FlowableFromCallable.subscribeActual(FlowableFromCallable.java:39)
        at io.reactivex.Flowable.subscribe(Flowable.java:14935)
        at io.reactivex.Flowable.subscribe(Flowable.java:14882)
        at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
        at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288)
        at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253)
        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:920)
     Caused by: java.io.IOException: read failed: EISDIR (Is a directory)
        at libcore.io.IoBridge.read(IoBridge.java:616)
        at java.io.FileInputStream.read(FileInputStream.java:323)
        at android.os.ParcelFileDescriptor$AutoCloseInputStream.read(ParcelFileDescriptor.java:1023)
        at java.io.FileInputStream.read(FileInputStream.java:292)
        at android.os.ParcelFileDescriptor$AutoCloseInputStream.read(ParcelFileDescriptor.java:1014)
        at org.cryptomator.data.util.CopyStream.copyStreamToStream(CopyStream.kt:21)
        at org.cryptomator.data.util.CopyStream.copyStreamToStream(CopyStream.kt:15) 
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkImpl.read(LocalStorageAccessFrameworkImpl.kt:369) 
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkContentRepository.read(LocalStorageAccessFrameworkContentRepository.kt:90) 
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkContentRepository.read(LocalStorageAccessFrameworkContentRepository.kt:18) 
        at org.cryptomator.data.repository.DispatchingCloudContentRepository.read(DispatchingCloudContentRepository.kt:160) 
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.loadContentsOfDirFile(CryptoImplVaultFormat7.kt:284) 
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.loadDirId(CryptoImplVaultFormat7.kt:274) 
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.createDirIdInfo(CryptoImplVaultFormat7.kt:251) 
        at org.cryptomator.data.cloud.crypto.CryptoImplDecorator.dirIdInfo(CryptoImplDecorator.kt:356) 
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.list(CryptoImplVaultFormat7.kt:135) 
        at org.cryptomator.data.cloud.crypto.CryptoCloudContentRepository.list(CryptoCloudContentRepository.kt:58) 
        at org.cryptomator.data.cloud.crypto.CryptoCloudContentRepository.list(CryptoCloudContentRepository.kt:21) 
        at org.cryptomator.data.repository.DispatchingCloudContentRepository.list(DispatchingCloudContentRepository.kt:103) 
        at org.cryptomator.domain.usecases.cloud.GetCloudList.execute(GetCloudList.java:24) 
        at org.cryptomator.domain.usecases.cloud.GetCloudListUseCase$Launcher$2.call(GetCloudListUseCase.java:92) 
        at org.cryptomator.domain.usecases.cloud.GetCloudListUseCase$Launcher$2.call(GetCloudListUseCase.java:86) 
        at io.reactivex.internal.operators.flowable.FlowableFromCallable.subscribeActual(FlowableFromCallable.java:39) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14935) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14882) 
        at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82) 
        at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288) 
        at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253) 
        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:920) 
     Caused by: android.system.ErrnoException: read failed: EISDIR (Is a directory)
        at libcore.io.Linux.readBytes(Native Method)
        at libcore.io.Linux.read(Linux.java:190)
        at libcore.io.ForwardingOs.read(ForwardingOs.java:617)
        at libcore.io.BlockGuardOs.read(BlockGuardOs.java:324)
        at libcore.io.ForwardingOs.read(ForwardingOs.java:617)
        at libcore.io.IoBridge.read(IoBridge.java:606)
        at java.io.FileInputStream.read(FileInputStream.java:323) 
        at android.os.ParcelFileDescriptor$AutoCloseInputStream.read(ParcelFileDescriptor.java:1023) 
        at java.io.FileInputStream.read(FileInputStream.java:292) 
        at android.os.ParcelFileDescriptor$AutoCloseInputStream.read(ParcelFileDescriptor.java:1014) 
        at org.cryptomator.data.util.CopyStream.copyStreamToStream(CopyStream.kt:21) 
        at org.cryptomator.data.util.CopyStream.copyStreamToStream(CopyStream.kt:15) 
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkImpl.read(LocalStorageAccessFrameworkImpl.kt:369) 
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkContentRepository.read(LocalStorageAccessFrameworkContentRepository.kt:90) 
        at org.cryptomator.data.cloud.local.LocalStorageAccessFrameworkContentRepository.read(LocalStorageAccessFrameworkContentRepository.kt:18) 
        at org.cryptomator.data.repository.DispatchingCloudContentRepository.read(DispatchingCloudContentRepository.kt:160) 
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.loadContentsOfDirFile(CryptoImplVaultFormat7.kt:284) 
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.loadDirId(CryptoImplVaultFormat7.kt:274) 
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.createDirIdInfo(CryptoImplVaultFormat7.kt:251) 
        at org.cryptomator.data.cloud.crypto.CryptoImplDecorator.dirIdInfo(CryptoImplDecorator.kt:356) 
        at org.cryptomator.data.cloud.crypto.CryptoImplVaultFormat7.list(CryptoImplVaultFormat7.kt:135) 
        at org.cryptomator.data.cloud.crypto.CryptoCloudContentRepository.list(CryptoCloudContentRepository.kt:58) 
        at org.cryptomator.data.cloud.crypto.CryptoCloudContentRepository.list(CryptoCloudContentRepository.kt:21) 
        at org.cryptomator.data.repository.DispatchingCloudContentRepository.list(DispatchingCloudContentRepository.kt:103) 
        at org.cryptomator.domain.usecases.cloud.GetCloudList.execute(GetCloudList.java:24) 
        at org.cryptomator.domain.usecases.cloud.GetCloudListUseCase$Launcher$2.call(GetCloudListUseCase.java:92) 
        at org.cryptomator.domain.usecases.cloud.GetCloudListUseCase$Launcher$2.call(GetCloudListUseCase.java:86) 
        at io.reactivex.internal.operators.flowable.FlowableFromCallable.subscribeActual(FlowableFromCallable.java:39) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14935) 
        at io.reactivex.Flowable.subscribe(Flowable.java:14882) 
        at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82) 
        at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288) 
        at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253) 
        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:920) 
    
    			ErrorCode: QF3O:6B7C

Anything else?

Refreshing and then navigating into the folder works as workaround.

@SailReal SailReal added type:bug Something isn't working storage:local labels Mar 20, 2022
@SailReal SailReal added this to the 1.8.0 milestone Mar 20, 2022
@SailReal SailReal modified the milestones: 1.8.0, 1.7.2 Mar 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
storage:local type:bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant