FTP client support
Description
- Refactored SshConnectionPool to more generic NetCopyClientConnectionPool
- Change SshClientTemplate to NetCopyClientTemplate
- Implement FTP client support. Defaults to passive FTP and implicit SSL for FTPS
- Add optional thread safety to NetCopyClientConnectionPool on executing NetCopyClientTemplate, as Apache FTPClient is not thread safe. This shall bring deadlocks when connecting to FTP servers, but let's see...
- Migrated GetSshHostFingerprintTask and SshAuthenticationTaskCallable to callable and RxJava, in align with FTP client implementation
- Downgrade Apache FTP server to 1.1.1, as problems found with enabling TLS at Amaze FTP server after previous upgrade to 1.1.4
Issue tracker
Fixes #1570
Automatic tests
- [x] Added test cases
Manual tests
- [x] Done
Tested on Pixel 2 emulator running Android 11, against Amaze FTP server running on Oneplus 2 running Lineage OS 18.1 (11).
Build tasks success
Successfully running following tasks on local:
- [x]
./gradlew assembledebug - [x]
./gradlew spotlessCheck
Code looks good.
Following issues:
- The dropdown menu to choose ftp/ftps/scp doesn't following dark theme.
- As soon as I press connect, I get following error from room
2022-07-26 04:22:45.172 24490-24490/com.amaze.filemanager.debug E/c.a.f.d.UtilsHandler: [main ]
Error getting public key for URI [ssh://[email protected]:22]androidx.room.EmptyResultSetException: Query returned empty result set: SELECT pub_key FROM sftp WHERE path = ?
at com.amaze.filemanager.database.daos.SftpEntryDao_Impl$12.call(SftpEntryDao_Impl.java:469)
at com.amaze.filemanager.database.daos.SftpEntryDao_Impl$12.call(SftpEntryDao_Impl.java:453)
at androidx.room.RxRoom$5.subscribe(RxRoom.java:229)
at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
- After socket timeout in case we're unable to connect, I get a toast, but 'Processing' dialog is still displayed and it can't be cancelled, I have to force close whole app
2022-07-26 04:24:06.151 25119-25170/com.amaze.filemanager.debug E/GetSshHostFingerprint: Unable to connect to [192.168.123.123:22]
java.net.SocketTimeoutException: failed to connect to /192.168.123.123 (port 22) from /192.168.0.156 (port 41784) after 30000ms: isConnected failed: ETIMEDOUT (Connection timed out)
at libcore.io.IoBridge.isConnected(IoBridge.java:345)
at libcore.io.IoBridge.connectErrno(IoBridge.java:238)
at libcore.io.IoBridge.connect(IoBridge.java:180)
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
at java.net.Socket.connect(Socket.java:621)
at net.schmizz.sshj.SocketClient.connect(SocketClient.java:138)
at com.amaze.filemanager.asynchronous.asynctasks.ssh.GetSshHostFingerprintTaskCallable.call(GetSshHostFingerprintTaskCallable.kt:61)
at com.amaze.filemanager.asynchronous.asynctasks.ssh.GetSshHostFingerprintTaskCallable.call(GetSshHostFingerprintTaskCallable.kt:33)
- As soon as I click connect, sometimes the processing dialog doesn't show up and application stops responding, following is the stack
2022-07-26 04:40:42.475 28821-28821/com.amaze.filemanager.debug D/OplusSystemUINavigationGesture: [GESTURE_BUTTON] Hit Gesture Region !
2022-07-26 04:40:42.650 28821-28821/com.amaze.filemanager.debug I/Quality: Skipped: false 1 cost 26.341553 refreshRate 0 processName com.amaze.filemanager.debug
2022-07-26 04:40:45.280 28821-28840/com.amaze.filemanager.debug I/Quality: stackInfo :----- pid 28821 at 2022-07-26 04:40:45.258 -----;Cmd line: com.amaze.filemanager.debug;"main" prio=5 tid=2 WAITING sysTid=28821; at sun.misc.Unsafe.park(Native Method); at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190); at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868); at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1023); at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1334); at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232); at io.reactivex.internal.observers.BlockingMultiObserver.blockingGet(BlockingMultiObserver.java:85); at io.reactivex.Single.blockingGet(Single.java:2835); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool.createFtpClient(NetCopyClientConnectionPool.kt:355); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool.access$createFtpClient(NetCopyClientConnectionPool.kt:47); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool$createNetCopyClientInternal$1.invoke(NetCopyClientConnectionPool.kt:191); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool$createNetCopyClientInternal$1.invoke(NetCopyClientConnectionPool.kt:187); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool.getConnection(NetCopyClientConnectionPool.kt:149); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.saveFtpConnectionAndLoadlist(SftpConnectDialog.kt:596); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.authenticateAndSaveSetup(SftpConnectDialog.kt:568); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.authenticateAndSaveSetup$default(SftpConnectDialog.kt:560); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.positiveButtonForFtp(SftpConnectDialog.kt:305); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.handleOnPositiveButton$lambda-10(SftpConnectDialog.kt:297); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.$r8$lambda$l8-s689flABV_peOm76Bo3x0yoU(Unknown Source:0); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog$$ExternalSyntheticLambda7.onClick(Unknown Source:4); at com.afollestad.materialdialogs.MaterialDialog.onClick(MaterialDialog.java:410); at android.view.View.performClick(View.java:7488); at android.view.View.performClickInternal(View.java:7464); at android.view.View.access$3700(View.java:841); at android.view.View$PerformClick.run(View.java:28905); at android.os.Handler.handleCallback(Handler.java:938); at android.os.Handler.dispatchMessage(Handler.java:99); at android.os.Looper.loopOnce(Looper.java:233); at android.os.Looper.loop(Looper.java:344); at android.app.ActivityThread.main(ActivityThread.java:8210);
2022-07-26 04:40:46.795 28821-28840/com.amaze.filemanager.debug I/Quality: stackInfo :----- pid 28821 at 2022-07-26 04:40:46.783 -----;Cmd line: com.amaze.filemanager.debug;"main" prio=5 tid=2 WAITING sysTid=28821; at sun.misc.Unsafe.park(Native Method); at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190); at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868); at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1023); at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1334); at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232); at io.reactivex.internal.observers.BlockingMultiObserver.blockingGet(BlockingMultiObserver.java:85); at io.reactivex.Single.blockingGet(Single.java:2835); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool.createFtpClient(NetCopyClientConnectionPool.kt:355); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool.access$createFtpClient(NetCopyClientConnectionPool.kt:47); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool$createNetCopyClientInternal$1.invoke(NetCopyClientConnectionPool.kt:191); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool$createNetCopyClientInternal$1.invoke(NetCopyClientConnectionPool.kt:187); at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool.getConnection(NetCopyClientConnectionPool.kt:149); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.saveFtpConnectionAndLoadlist(SftpConnectDialog.kt:596); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.authenticateAndSaveSetup(SftpConnectDialog.kt:568); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.authenticateAndSaveSetup$default(SftpConnectDialog.kt:560); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.positiveButtonForFtp(SftpConnectDialog.kt:305); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.handleOnPositiveButton$lambda-10(SftpConnectDialog.kt:297); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog.$r8$lambda$l8-s689flABV_peOm76Bo3x0yoU(Unknown Source:0); at com.amaze.filemanager.ui.dialogs.SftpConnectDialog$$ExternalSyntheticLambda7.onClick(Unknown Source:4); at com.afollestad.materialdialogs.MaterialDialog.onClick(MaterialDialog.java:410); at android.view.View.performClick(View.java:7488); at android.view.View.performClickInternal(View.java:7464); at android.view.View.access$3700(View.java:841); at android.view.View$PerformClick.run(View.java:28905); at android.os.Handler.handleCallback(Handler.java:938); at android.os.Handler.dispatchMessage(Handler.java:99); at android.os.Looper.loopOnce(Looper.java:233); at android.os.Looper.loop(Looper.java:344); at android.app.ActivityThread.main(ActivityThread.java:8210);
@TranceLove test cases seem to be failing because of slf4j and seem to effect this and #3401 Will you be able to check?
com.amaze.filemanager.filesystem.compressed.extractcontents.TarLzmaExtractorTest > testFixEntryName[19] STANDARD_ERROR
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/runner/.gradle/caches/transforms-3/5ad796bea48e13e45aa0771f83db5568/transformed/jetified-logback-android-2.0.0-runtime.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/runner/.gradle/caches/transforms-3/a4273385660df74fe1c198957b7912d5/transformed/jetified-logback-android-2.0.0/jars/classes.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
com.amaze.filemanager.filesystem.ssh.NetCopyClientConnectionPoolSshTest > testGetConnectionWithUrlHavingSubpath STANDARD_ERROR
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
Pending tasks:
- [x] Fix protocol spinner popup theme didn't follow system theme
- [x] ~~Fix
logback-androidrepeatedly appear in classpath, causing tests to fail on Github Actions~~ - [x] Fix
GetSshHostFingerprintTaskCallablethrowing exception on first connect. Should be safe since it's the first time, but ugly - [x] Fix FTP connection creation deadlocks
@VishnuSanal review here please
Build test APK
Okay, here you go, I created an FTPS server with Amaze on another Android device & tried to connect:
When using SSH/SFTP form the drop down:
I am getting the following on the LogCat - but no response on the app to notify that there was a failure.
W: [main ] Error getting public key for URI [ssh://[email protected]:2211]androidx.room.EmptyResultSetException: Query returned empty result set: SELECT pub_key FROM sftp WHERE path = ?
at com.amaze.filemanager.database.daos.SftpEntryDao_Impl$12.call(SftpEntryDao_Impl.java:469)
at com.amaze.filemanager.database.daos.SftpEntryDao_Impl$12.call(SftpEntryDao_Impl.java:453)
at androidx.room.RxRoom$5.subscribe(RxRoom.java:229)
at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
It gets connected when I select Secure FTP from the drop down menu (after I tap Yes on the Verify Host dialog box.
But, no files gets loaded (see the logs below)
I: NOOP
W: [AsyncTask #2 ] Failure sending NOOP to FTP serverorg.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
at org.apache.commons.net.ftp.FTP.getReply(FTP.java:314)
at org.apache.commons.net.ftp.FTP.getReply(FTP.java:719)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:514)
at org.apache.commons.net.ftp.FTPSClient.sendCommand(FTPSClient.java:561)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:635)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:609)
at org.apache.commons.net.ftp.FTP.noop(FTP.java:1865)
at org.apache.commons.net.ftp.FTPClient.sendNoOp(FTPClient.java:3361)
at com.amaze.filemanager.filesystem.ftp.FTPClientImpl.isConnectionValid(FTPClientImpl.kt:38)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool.validate(NetCopyClientConnectionPool.kt:236)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientConnectionPool.getConnection(NetCopyClientConnectionPool.kt:91)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils.execute(NetCopyClientUtils.kt:68)
at com.amaze.filemanager.filesystem.HybridFile.forEachChildrenFile(HybridFile.java:949)
at com.amaze.filemanager.asynchronous.asynctasks.LoadFilesListTask.doInBackground(LoadFilesListTask.java:180)
at com.amaze.filemanager.asynchronous.asynctasks.LoadFilesListTask.doInBackground(LoadFilesListTask.java:77)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
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)
D: Connection no longer usable. Reconnecting...
I: 220 Service ready for new user.
I: USER user
I: 331 User name okay, need password for user.
I: PASS pass
I: 230 User logged in, proceed.
I: PBSZ 0
I: 200 Command PBSZ okay.
I: PROT P
I: 200 Command PROT okay.
I: SYST
I: 215 UNIX Type: Apache FtpServer
I: PASV
I: 227 Entering Passive Mode (192,168,1,3,156,165)
I: LIST /
I: 550 Requested action not taken.
Now I switched off Secure Connection from FTP server & tried to connect using FTP from the drop down menu, it gets connected but no files gets loaded:
I: NOOP
I: 200 Command NOOP okay.
I: PASV
I: 227 Entering Passive Mode (192,168,1,3,144,237)
I: LIST /
I: 550 Requested action not taken.
Question: How to connect to an anonymous connection?
Next, I tried creating an FTP server with Material Files & Amaze was able to connect & lists files without any problems. Though, I wasn't able to open any file (see the logs below):
- for music files
E: Writing exception to parcel
java.lang.SecurityException: Permission Denial: reading androidx.core.content.FileProvider uri content://com.amaze.filemanager.debug/storage_root/ftp%3A/user%3Apass%40192.168.1.3%3A2211/Music/Music/%5BHD%5D%20Evergreen%20Jayachandran%20Nostalgic%20Devotional%20Songs%20Malayalam.mp3 from pid=16346, uid=10448 requires the provider be exported, or grantUriPermission()
at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:820)
at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:684)
at android.content.ContentProvider$Transport.enforceFilePermission(ContentProvider.java:674)
at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:548)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:328)
at android.os.Binder.execTransactInternal(Binder.java:1166)
at android.os.Binder.execTransact(Binder.java:1130)
- for text files - opened with Amaze Text Editor
E: [main ] Error on text readjava.io.IOException: Cannot read or write text file!
at com.amaze.filemanager.asynchronous.asynctasks.texteditor.read.ReadTextFileCallable.loadFile(ReadTextFileCallable.java:152)
at com.amaze.filemanager.asynchronous.asynctasks.texteditor.read.ReadTextFileCallable.call(ReadTextFileCallable.java:86)
at com.amaze.filemanager.asynchronous.asynctasks.texteditor.read.ReadTextFileCallable.call(ReadTextFileCallable.java:46)
at io.reactivex.internal.operators.flowable.FlowableFromCallable.subscribeActual(FlowableFromCallable.java:39)
at io.reactivex.Flowable.subscribe(Flowable.java:14826)
at io.reactivex.Flowable.subscribe(Flowable.java:14773)
at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
- image thumbnails are broken
- I was able to create a file, but wasn't able to open it!
(will test more as soon when I can get vsftpd working on my PC!)
@VishnuSanal you should also test copy files to and from the connection as well, also test delete / rename. and from your report it seem amaze server has some issue? @TranceLove cmiiw
I: 227 Entering Passive Mode (192,168,1,3,144,237) I: LIST / I: 550 Requested action not taken.
@VishalNehra Okay
from your report it seem amaze server has some issue?
I think yes, or I must have missed something.
@VishnuSanal I was using OnePlus 2 running LineageOS 18 (11) to run Amaze FTP server using the same codebase as this PR.
You may try using the same codebase for FTP server, and just share the internal storage space, on the safe side - to work around any SAF problems you may encounter.
More pending tasks:
- [x] FTP anonymous login support
- [x] Handle ~~
content://URIs for~~ opening files on FTP server - (With use ofCloudStreamer)
I see test cases failing
com.amaze.filemanager.filesystem.ftp.FtpsHybridFileTest > testRenameFile FAILED
java.lang.AssertionError: Unable to obtain connection.
Was trying ***127.0.0.1:22222, FTP server is running at 127.0.0.1 and port 22222
at org.junit.Assert.fail(Assert.java:89)
at com.amaze.filemanager.filesystem.ftp.FtpHybridFileTest.setUp(FtpHybridFileTest.kt:124)
at com.amaze.filemanager.filesystem.ftp.FtpsHybridFileTest.setUp(FtpsHybridFileTest.kt:67)
com.amaze.filemanager.filesystem.ftp.FtpsHybridFileTest > testMkdir FAILED
java.lang.AssertionError: Unable to obtain connection.
Was trying ***127.0.0.1:22222, FTP server is running at 127.0.0.1 and port 22222
at org.junit.Assert.fail(Assert.java:89)
at com.amaze.filemanager.filesystem.ftp.FtpHybridFileTest.setUp(FtpHybridFileTest.kt:124)
at com.amaze.filemanager.filesystem.ftp.FtpsHybridFileTest.setUp(FtpsHybridFileTest.kt:67)
Please rebase
Even more pending tasks:
- [x] Fix upload file to FTP server. When upload an image to Amaze FTP it is seen corrupt at the other side, size is different than original
FTP server with Amaze (code from the same branch):
- [ ] list files
- [ ] ~didn't load files on some folders at first, but worked fine when I reopened Amaze~ okay, this is weird, when I open a directory at first, it lists files perfectly fine, but when I try to open a file, go back and open another directory, it doesn't list any files inside - it appears empty. if I do not try to open any files, this works fine
- [ ] when I make a change on the source device & swipe refresh on the client device, the changes doesn't reflect
- [ ] open files
- [ ] image file (PS: no thumbnails too)
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 227 Entering Passive Mode (192,168,1,3,144,231)
com.amaze.filemanager.debug I/System.out: MLST /DCIM/Screenshots/IMG_20200917_064856.jpg
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-23 ] Error executing template methodjava.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at org.apache.commons.net.ftp.FTP.getReplyString(FTP.java:745)
at org.apache.commons.net.ftp.FTPClient.mlistFile(FTPClient.java:3012)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:485)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:483)
at com.amaze.filemanager.filesystem.ftp.FtpClientTemplate.execute(FtpClientTemplate.kt:36)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.invoke$lambda-0(NetCopyClientUtils.kt:74)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.$r8$lambda$pNzOTgzPLyu7kmoWwk_ou75KcmY(Unknown Source:0)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1$$ExternalSyntheticLambda0.call(Unknown Source:4)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 250-
com.amaze.filemanager.debug I/System.out: Size=2042184;Modify=20211002182208.000;Type=file; IMG_20200917_064856.jpg
com.amaze.filemanager.debug I/System.out:
com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed.
com.amaze.filemanager.debug I/System.out: MLST /DCIM/Screenshots/IMG_20200917_064856.jpg
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-23 ] Error executing template methodjava.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at org.apache.commons.net.ftp.FTP.getReplyString(FTP.java:745)
at org.apache.commons.net.ftp.FTPClient.mlistFile(FTPClient.java:3012)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:485)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:483)
at com.amaze.filemanager.filesystem.ftp.FtpClientTemplate.execute(FtpClientTemplate.kt:36)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.invoke$lambda-0(NetCopyClientUtils.kt:74)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.$r8$lambda$pNzOTgzPLyu7kmoWwk_ou75KcmY(Unknown Source:0)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1$$ExternalSyntheticLambda0.call(Unknown Source:4)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 250-
com.amaze.filemanager.debug I/System.out: Size=2042184;Modify=20211002182208.000;Type=file; IMG_20200917_064856.jpg
com.amaze.filemanager.debug I/System.out:
com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed.
com.amaze.filemanager.debug I/System.out: PASV
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-23 ] Error executing template methodjava.lang.NullPointerException: The callable returned a null value
at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
com.amaze.filemanager.debug E/Parcel: Reading a NULL string not supported here.
- [ ] document file - as said for listing files, the first file opens seemlessly, but when I try to open another one, it doesn't work (logs below)
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 227 Entering Passive Mode (192,168,1,3,128,1)
com.amaze.filemanager.debug I/System.out: MLST /Documents/StatusReport.pdf
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-35 ] Error executing template methodjava.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at org.apache.commons.net.ftp.FTP.getReplyString(FTP.java:745)
at org.apache.commons.net.ftp.FTPClient.mlistFile(FTPClient.java:3012)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:485)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:483)
at com.amaze.filemanager.filesystem.ftp.FtpClientTemplate.execute(FtpClientTemplate.kt:36)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.invoke$lambda-0(NetCopyClientUtils.kt:74)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.$r8$lambda$pNzOTgzPLyu7kmoWwk_ou75KcmY(Unknown Source:0)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1$$ExternalSyntheticLambda0.call(Unknown Source:4)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 250-
com.amaze.filemanager.debug I/System.out: Size=118446;Modify=20220705155435.000;Type=file; StatusReport.pdf
com.amaze.filemanager.debug I/System.out:
com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed.
com.amaze.filemanager.debug I/System.out: MLST /Documents/StatusReport.pdf
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-35 ] Error executing template methodjava.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at org.apache.commons.net.ftp.FTP.getReplyString(FTP.java:745)
at org.apache.commons.net.ftp.FTPClient.mlistFile(FTPClient.java:3012)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:485)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:483)
at com.amaze.filemanager.filesystem.ftp.FtpClientTemplate.execute(FtpClientTemplate.kt:36)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.invoke$lambda-0(NetCopyClientUtils.kt:74)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.$r8$lambda$pNzOTgzPLyu7kmoWwk_ou75KcmY(Unknown Source:0)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1$$ExternalSyntheticLambda0.call(Unknown Source:4)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 250-
com.amaze.filemanager.debug I/System.out: Size=118446;Modify=20220705155435.000;Type=file; StatusReport.pdf
com.amaze.filemanager.debug I/System.out:
com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed.
com.amaze.filemanager.debug I/System.out: PASV
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-35 ] Error executing template methodjava.lang.NullPointerException: The callable returned a null value
at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
com.amaze.filemanager.debug E/Parcel: Reading a NULL string not supported here.
- [ ] music files - the same problem - it works at first, but doesn't work on the next tries, let it be the same file or a different file
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 226 Transfer complete.
com.amaze.filemanager.debug I/System.out: MLST /Music/Music.mp3
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-22 ] Error executing template methodjava.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at org.apache.commons.net.ftp.FTP.getReplyString(FTP.java:745)
at org.apache.commons.net.ftp.FTPClient.mlistFile(FTPClient.java:3012)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:485)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:483)
at com.amaze.filemanager.filesystem.ftp.FtpClientTemplate.execute(FtpClientTemplate.kt:36)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.invoke$lambda-0(NetCopyClientUtils.kt:74)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.$r8$lambda$pNzOTgzPLyu7kmoWwk_ou75KcmY(Unknown Source:0)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1$$ExternalSyntheticLambda0.call(Unknown Source:4)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 250-
com.amaze.filemanager.debug I/System.out: Size=14145965;Modify=20220823182442.000;Type=file; Music.mp3
com.amaze.filemanager.debug I/System.out:
com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed.
com.amaze.filemanager.debug I/System.out: MLST /Music/Music.mp3
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-22 ] Error executing template methodjava.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at org.apache.commons.net.ftp.FTP.getReplyString(FTP.java:745)
at org.apache.commons.net.ftp.FTPClient.mlistFile(FTPClient.java:3012)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:485)
at com.amaze.filemanager.filesystem.HybridFile$3.executeWithFtpClient(HybridFile.java:483)
at com.amaze.filemanager.filesystem.ftp.FtpClientTemplate.execute(FtpClientTemplate.kt:36)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.invoke$lambda-0(NetCopyClientUtils.kt:74)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1.$r8$lambda$pNzOTgzPLyu7kmoWwk_ou75KcmY(Unknown Source:0)
at com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils$execute$exec$1$$ExternalSyntheticLambda0.call(Unknown Source:4)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug I/System.out: 250-
com.amaze.filemanager.debug I/System.out: Size=14145965;Modify=20220823182442.000;Type=file; Music.mp3
com.amaze.filemanager.debug I/System.out:
com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed.
com.amaze.filemanager.debug I/System.out: PASV
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [Thread-22 ] Error executing template methodjava.lang.NullPointerException: The callable returned a null value
at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
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)
- [ ] delete files
- [ ] music file, image file, document file (single & multiple files of each type) - deletion works fine. if I haven't tried opening any files so far, the new list loads with updates changes - but if I have tried to open any files, it wnds up with an empty list when Amaze tries to reload the directory
- [ ] folder - doesn't work - shows an operaiton unsuccessful dialog
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug D/OpenGLRenderer: endAllActiveAnimators on 0xb4000076063d0700 (RippleDrawable) with handle 0xb4000076153b6920
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug I/System.out: DELE /Pictures/Thumbnails/Abc
com.amaze.filemanager.debug I/System.out: 550 Not a valid file "/Pictures/Thumbnails/Abc".
com.amaze.filemanager.debug I/System.out: NOOP
com.amaze.filemanager.debug D/TestOverScroll: getScaledOverscrollDistance: b
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay.
com.amaze.filemanager.debug I/System.out: PASV
com.amaze.filemanager.debug I/System.out: 227 Entering Passive Mode (192,168,1,3,174,241)
com.amaze.filemanager.debug I/System.out: LIST /Pictures/Thumbnails
com.amaze.filemanager.debug D/ColorViewRootUtil: initSwipState, isDisplayCompatApp false
com.amaze.filemanager.debug D/ColorViewRootUtil: mScreenHeight 1600, mScreenWidth 720
com.amaze.filemanager.debug D/WindowManager: Add to mViews: DecorView@ffd8083[MainActivity],pkg= com.amaze.filemanager.debug
com.amaze.filemanager.debug I/System.out: 150 File status okay; about to open data connection.
com.amaze.filemanager.debug I/System.out: 226 Closing data connection.
```
- [x] rename files - works perfectly fine!
- [x] music file, image file, document file
- [x] folder
- [x] write - works fine - both files & folders
- [ ] copy -
- [ ] folder - copies the folder, but no content inside
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Thumbnails com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4096;Modify=20220823184744.000;Type=dir; Thumbnails com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Thumbnails com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4096;Modify=20220823184744.000;Type=dir; Thumbnails com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Thumbnails com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4096;Modify=20220823184744.000;Type=dir; Thumbnails com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: PASV com.amaze.filemanager.debug I/System.out: 227 Entering Passive Mode (192,168,1,3,169,65) com.amaze.filemanager.debug I/System.out: LIST /Pictures/Thumbnails com.amaze.filemanager.debug I/System.out: 150 File status okay; about to open data connection. com.amaze.filemanager.debug I/System.out: 226 Closing data connection.
- [x] single file - copying works fine (if I haven't tried to open any files before, else the operation unsuccessful dialog) - but as mentioned before, no files are listed after this operation - let it be the same folder or other folders
- [x] multiple files - copying works fine for one file & operation unsuccessful dialog for the rest
com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: PASV com.amaze.filemanager.debug I/System.out: 227 Entering Passive Mode (192,168,1,3,153,189) com.amaze.filemanager.debug I/System.out: LIST /Pictures com.amaze.filemanager.debug I/System.out: 150 File status okay; about to open data connection. com.amaze.filemanager.debug I/System.out: 226 Closing data connection. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: PASV com.amaze.filemanager.debug I/System.out: 227 Entering Passive Mode (192,168,1,3,165,123) com.amaze.filemanager.debug I/System.out: LIST /Pictures/Move com.amaze.filemanager.debug I/System.out: 150 File status okay; about to open data connection. com.amaze.filemanager.debug I/System.out: 226 Closing data connection.com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3907wy.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=3676;Modify=20220617041310.000;Type=file; 3907wy.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3931.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4031;Modify=20220617041310.000;Type=file; 3931.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug D/ViewRootImpl: enqueueInputEventMotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=579.0, y[0]=1073.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15913719, downTime=15913719, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/ViewRootImpl[MainActivity]: processMotionEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=579.0, y[0]=1073.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15913719, downTime=15913719, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/ViewRootImpl[MainActivity]: dispatchPointerEvent handled=true, event=MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=579.0, y[0]=1073.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15913719, downTime=15913719, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/ViewRootImpl[MainActivity]: processMotionEvent MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=411.0, y[0]=1072.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15913800, downTime=15913719, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/ViewRootImpl[MainActivity]: dispatchPointerEvent handled=true, event=MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=411.0, y[0]=1072.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15913800, downTime=15913719, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/LeakCanary: Setting up flushing for Thread[queued-work-looper,5,main] com.amaze.filemanager.debug D/ViewRootImpl: enqueueInputEventMotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=489.0, y[0]=1155.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15914723, downTime=15914723, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/ViewRootImpl[MainActivity]: processMotionEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=489.0, y[0]=1155.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15914723, downTime=15914723, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/ViewRootImpl[MainActivity]: dispatchPointerEvent handled=true, event=MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=489.0, y[0]=1155.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15914723, downTime=15914723, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/ViewRootImpl[MainActivity]: processMotionEvent MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=489.0, y[0]=1155.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15914753, downTime=15914723, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/ViewRootImpl[MainActivity]: dispatchPointerEvent handled=true, event=MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=489.0, y[0]=1155.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=15914753, downTime=15914723, deviceId=3, source=0x1002, displayId=0 } com.amaze.filemanager.debug D/skia: --- Failed to create image decoder with message 'unimplemented' com.amaze.filemanager.debug I/chatty: uid=10270(com.amaze.filemanager.debug) glide-source-th identical 4 lines com.amaze.filemanager.debug D/skia: --- Failed to create image decoder with message 'unimplemented' com.amaze.filemanager.debug W/Glide: Load failed for /storage/emulated/0/Pictures/3931.jpg with size [68x68] class com.bumptech.glide.load.engine.GlideException: Failed to load resource There were 3 causes: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{FileInputStream->Object->Drawable}, LOCAL Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->GifDrawable->Drawable} Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->Bitmap->Drawable} Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->BitmapDrawable->Drawable} Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ParcelFileDescriptor->Object->Drawable}, LOCAL There were 2 causes: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->Bitmap->Drawable} There was 1 cause: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->BitmapDrawable->Drawable} There was 1 cause: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{AssetFileDescriptor->Object->Drawable}, LOCAL There was 1 cause: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{AssetFileDescriptor->Bitmap->Drawable} There was 1 cause: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA com.amaze.filemanager.debug I/Glide: Root cause (1 of 3) java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:185) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) Caused by: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at android.media.MediaMetadataRetriever.setDataSource(Native Method) at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:329) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$ParcelFileDescriptorInitializer.initialize(VideoDecoder.java:306) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$ParcelFileDescriptorInitializer.initialize(VideoDecoder.java:301) at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:173) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) com.amaze.filemanager.debug I/Glide: Root cause (2 of 3) java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:185) at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:58) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) Caused by: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at android.media.MediaMetadataRetriever.setDataSource(Native Method) at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:329) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$ParcelFileDescriptorInitializer.initialize(VideoDecoder.java:306) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$ParcelFileDescriptorInitializer.initialize(VideoDecoder.java:301) at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:173) at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:58) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) com.amaze.filemanager.debug I/Glide: Root cause (3 of 3) java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:185) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) Caused by: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at android.media.MediaMetadataRetriever.setDataSource(Native Method) com.amaze.filemanager.debug I/Glide: at com.bumptech.glide.load.resource.bitmap.VideoDecoder$AssetFileDescriptorInitializer.initialize(VideoDecoder.java:296) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$AssetFileDescriptorInitializer.initialize(VideoDecoder.java:291) at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:173) ... 42 more com.amaze.filemanager.debug D/skia: --- Failed to create image decoder with message 'unimplemented' com.amaze.filemanager.debug I/chatty: uid=10270(com.amaze.filemanager.debug) glide-source-th identical 2 lines com.amaze.filemanager.debug D/skia: --- Failed to create image decoder with message 'unimplemented' com.amaze.filemanager.debug D/TestOverScroll: getScaledOverscrollDistance: b com.amaze.filemanager.debug D/ColorViewRootUtil: initSwipState, isDisplayCompatApp false com.amaze.filemanager.debug D/ColorViewRootUtil: mScreenHeight 1600, mScreenWidth 720 com.amaze.filemanager.debug D/TestOverScroll: getScaledOverscrollDistance: b com.amaze.filemanager.debug D/WindowManager: Add to mViews: DecorView@bb2f447[MainActivity],pkg= com.amaze.filemanager.debug com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug V/OplusZoomWindowDecorViewHelper: setLastReportedMergedConfiguration mZoomDisplayHeight: 1600 getDecorView.DecorView@bb2f447[MainActivity] com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3907wy.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=3676;Modify=20220617041310.000;Type=file; 3907wy.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3907wy.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=3676;Modify=20220617041310.000;Type=file; 3907wy.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3931.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4031;Modify=20220617041310.000;Type=file; 3931.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3931.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4031;Modify=20220617041310.000;Type=file; 3931.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3907wy.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=3676;Modify=20220617041310.000;Type=file; 3907wy.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3907wy.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=3676;Modify=20220617041310.000;Type=file; 3907wy.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3931.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4031;Modify=20220617041310.000;Type=file; 3931.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move/3931.jpg com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4031;Modify=20220617041310.000;Type=file; 3931.jpg com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: PASV com.amaze.filemanager.debug I/System.out: 227 Entering Passive Mode (192,168,1,3,176,161) com.amaze.filemanager.debug I/System.out: RETR /Pictures/Move/3907wy.jpg com.amaze.filemanager.debug I/System.out: 150 File status okay; about to open data connection. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 226 Transfer complete. com.amaze.filemanager.debug I/System.out: PASV com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug E/c.a.f.f.f.NetCopyClientUtils: [AsyncTask #2 ] Error executing template methodjava.lang.NullPointerException: The callable returned a null value at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39) at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44) at io.reactivex.Single.subscribe(Single.java:3603) at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89) at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301) 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) com.amaze.filemanager.debug E/c.a.f.a.s.CopyService: [AsyncTask #2 ] Got exception checkout: ftp://user:[email protected]:2211/Pictures/Move/3931.jpg com.amaze.filemanager.debug E/MultiApp.Impl: OplusMultiAppImpl com.amaze.filemanager.debug D/LeakCanary: Setting up flushing for Thread[android.bg,5,main] com.amaze.filemanager.debug D/MediaScannerConnection: Scanned /storage/emulated/0/Pictures/Temp/3907wy.jpg to content://media/external_primary/images/media/106103 com.amaze.filemanager.debug D/TestOverScroll: getScaledOverscrollDistance: b com.amaze.filemanager.debug D/MediaScannerConnection: Scanned /storage/emulated/0/Pictures/Temp/3931.jpg to content://media/external_primary/images/media/106104 com.amaze.filemanager.debug D/ColorViewRootUtil: initSwipState, isDisplayCompatApp false com.amaze.filemanager.debug D/ColorViewRootUtil: mScreenHeight 1600, mScreenWidth 720 com.amaze.filemanager.debug D/WindowManager: Add to mViews: DecorView@4cb8f7[MainActivity],pkg= com.amaze.filemanager.debug com.amaze.filemanager.debug W/lemanager.debu: Accessing hidden field Landroid/app/ActivityThread;->mServices:Landroid/util/ArrayMap; (greylist, reflection, allowed) com.amaze.filemanager.debug D/LeakCanary: Watching instance of com.amaze.filemanager.asynchronous.services.CopyService (com.amaze.filemanager.asynchronous.services.CopyService received Service#onDestroy() callback) with key 1e46c3da-d93c-48fb-985a-a26080950618 com.amaze.filemanager.debug V/OplusZoomWindowDecorViewHelper: setLastReportedMergedConfiguration mZoomDisplayHeight: 1600 getDecorView.DecorView@4cb8f7[MainActivity] com.amaze.filemanager.debug D/skia: --- Failed to create image decoder with message 'unimplemented' com.amaze.filemanager.debug I/chatty: uid=10270(com.amaze.filemanager.debug) glide-source-th identical 2 lines com.amaze.filemanager.debug D/skia: --- Failed to create image decoder with message 'unimplemented' com.amaze.filemanager.debug D/skia: --- Failed to create image decoder with message 'unimplemented' com.amaze.filemanager.debug D/skia: --- Failed to create image decoder with message 'unimplemented' com.amaze.filemanager.debug W/Glide: Load failed for /storage/emulated/0/Pictures/Temp/3931.jpg with size [68x68] class com.bumptech.glide.load.engine.GlideException: Failed to load resource There were 3 causes: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{FileInputStream->Object->Drawable}, LOCAL Cause (1 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->GifDrawable->Drawable} Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->Bitmap->Drawable} Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{FileInputStream->BitmapDrawable->Drawable} Cause (2 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ParcelFileDescriptor->Object->Drawable}, LOCAL There were 2 causes: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->Bitmap->Drawable} There was 1 cause: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA Cause (2 of 2): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{ParcelFileDescriptor->BitmapDrawable->Drawable} There was 1 cause: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA Cause (3 of 3): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{AssetFileDescriptor->Object->Drawable}, LOCAL There was 1 cause: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Failed DecodePath{AssetFileDescriptor->Bitmap->Drawable} There was 1 cause: java.io.IOException(java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA) call GlideException#logRootCauses(String) for more detail Cause (1 of 1): class java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA com.amaze.filemanager.debug I/Glide: Root cause (1 of 3) java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:185) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) Caused by: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at android.media.MediaMetadataRetriever.setDataSource(Native Method) at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:329) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$ParcelFileDescriptorInitializer.initialize(VideoDecoder.java:306) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$ParcelFileDescriptorInitializer.initialize(VideoDecoder.java:301) at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:173) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) com.amaze.filemanager.debug I/Glide: Root cause (2 of 3) java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:185) at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:58) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) Caused by: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at android.media.MediaMetadataRetriever.setDataSource(Native Method) at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:329) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$ParcelFileDescriptorInitializer.initialize(VideoDecoder.java:306) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$ParcelFileDescriptorInitializer.initialize(VideoDecoder.java:301) at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:173) at com.bumptech.glide.load.resource.bitmap.BitmapDrawableDecoder.decode(BitmapDrawableDecoder.java:58) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) com.amaze.filemanager.debug I/Glide: Root cause (3 of 3) java.io.IOException: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:185) at com.bumptech.glide.load.engine.DecodePath.decodeResourceWithList(DecodePath.java:92) at com.bumptech.glide.load.engine.DecodePath.decodeResource(DecodePath.java:70) at com.bumptech.glide.load.engine.DecodePath.decode(DecodePath.java:59) at com.bumptech.glide.load.engine.LoadPath.loadWithExceptionList(LoadPath.java:76) at com.bumptech.glide.load.engine.LoadPath.load(LoadPath.java:57) at com.bumptech.glide.load.engine.DecodeJob.runLoadPath(DecodeJob.java:524) at com.bumptech.glide.load.engine.DecodeJob.decodeFromFetcher(DecodeJob.java:488) at com.bumptech.glide.load.engine.DecodeJob.decodeFromData(DecodeJob.java:474) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:426) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.decodeFromRetrievedData(DecodeJob.java:434) at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherReady(DecodeJob.java:390) at com.bumptech.glide.load.engine.SourceGenerator.onDataReadyInternal(SourceGenerator.java:148) at com.bumptech.glide.load.engine.SourceGenerator$1.onDataReady(SourceGenerator.java:76) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onDataReady(MultiModelLoader.java:145) at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:52) at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100) at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70) at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63) at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310) at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279) at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234) 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) at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393) Caused by: java.lang.RuntimeException: setDataSource failed: status = 0xFFFFFFEA at android.media.MediaMetadataRetriever.setDataSource(Native Method) com.amaze.filemanager.debug I/Glide: at com.bumptech.glide.load.resource.bitmap.VideoDecoder$AssetFileDescriptorInitializer.initialize(VideoDecoder.java:296) at com.bumptech.glide.load.resource.bitmap.VideoDecoder$AssetFileDescriptorInitializer.initialize(VideoDecoder.java:291) at com.bumptech.glide.load.resource.bitmap.VideoDecoder.decode(VideoDecoder.java:173) ... 42 more
- [ ] move - same as copy. (FYI: the source file doesn't get deleted in the case of failures)
- [ ] folder - copies the folder, but no content inside
com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move com.amaze.filemanager.debug D/LeakCanary: Setting up flushing for Thread[queued-work-looper,5,main] com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4096;Modify=20220823185524.000;Type=dir; Move com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4096;Modify=20220823185524.000;Type=dir; Move com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4096;Modify=20220823185524.000;Type=dir; Move com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4096;Modify=20220823185524.000;Type=dir; Move com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: MLST /Pictures/Move com.amaze.filemanager.debug I/System.out: 250- com.amaze.filemanager.debug I/System.out: Size=4096;Modify=20220823185524.000;Type=dir; Move com.amaze.filemanager.debug I/System.out: com.amaze.filemanager.debug I/System.out: 250 Requested file action okay, completed. com.amaze.filemanager.debug I/System.out: NOOP com.amaze.filemanager.debug I/System.out: 200 Command NOOP okay. com.amaze.filemanager.debug I/System.out: PASV com.amaze.filemanager.debug I/System.out: 227 Entering Passive Mode (192,168,1,3,129,131) com.amaze.filemanager.debug I/System.out: LIST /Pictures/Move com.amaze.filemanager.debug I/System.out: 150 File status okay; about to open data connection. com.amaze.filemanager.debug I/System.out: 226 Closing data connection.
- [x] single file - moving works fine (if I haven't tried to open any files before, else the operation unsuccessful dialog) - but as mentioned before, no files are listed after this operation - let it be the same folder or other folders
- [x] multiple files - copying works fine for one file & operation unsuccessful dialog for the rest
this is for an FTP connection with username/password - please let me know if I should repeat this with an SFTP connection and/or an anonymous connection too.
done on a hurry, cuz I have exams these days, please let me know if I missed something, will look into it by the weekend. (:
Updated to fix copy multiple files problem, upload and download.
Pending tasks per @VishnuSanal reviewed:
- [x] Create directory hierarchy if missing when uploading folder to FTP server
- [x] Fix launch remote file via CloudStreamer - don't know why CloudStreamer won't continue reading
And yes, no thumbnail loading for FTP files yet. Still figuring a way out, but perhaps will need triaging if 3.8 release is imminent.
Known problem: unable to recover connection if remote FTP server was unavailable. Will crash app with NPE.
(May triage)
Self note: CloudStreamer got a b0rken pipe when streaming from FTP server.
2022-08-27 16:57:13.375 9062-9142/com.amaze.filemanager.debug W/System.err: java.net.SocketException: Broken pipe
2022-08-27 16:57:13.375 9062-9142/com.amaze.filemanager.debug W/System.err: at java.net.SocketOutputStream.socketWrite0(Native Method)
2022-08-27 16:57:13.375 9062-9142/com.amaze.filemanager.debug W/System.err: at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:117)
2022-08-27 16:57:13.375 9062-9142/com.amaze.filemanager.debug W/System.err: at java.net.SocketOutputStream.write(SocketOutputStream.java:161)
2022-08-27 16:57:13.375 9062-9142/com.amaze.filemanager.debug W/System.err: at com.amaze.filemanager.fileoperations.filesystem.cloud.CloudStreamServer$HTTPSession.sendResponse(CloudStreamServer.java:757)
2022-08-27 16:57:13.375 9062-9142/com.amaze.filemanager.debug W/System.err: at com.amaze.filemanager.fileoperations.filesystem.cloud.CloudStreamServer$HTTPSession.handleResponse(CloudStreamServer.java:470)
2022-08-27 16:57:13.375 9062-9142/com.amaze.filemanager.debug W/System.err: at com.amaze.filemanager.fileoperations.filesystem.cloud.CloudStreamServer$HTTPSession.run(CloudStreamServer.java:319)
2022-08-27 16:57:13.375 9062-9142/com.amaze.filemanager.debug W/System.err: at java.lang.Thread.run(Thread.java:920)
@TranceLove Cloud steamer needs working. I'm using it in amaze utilities and it can't stream videos correctly on Android TV. Basically it's a continuous stream and doesn't support skipping / seeking. An alternative is to download file to cache first, like how we're doing for Google drive / other cloud storages.
@TranceLove Cloud steamer needs working. I'm using it in amaze utilities and it can't stream videos correctly on Android TV. Basically it's a continuous stream and doesn't support skipping / seeking. An alternative is to download file to cache first, like how we're doing for Google drive / other cloud storages.
Of course. Need to figure that out - I think it's problem at my side though.
The above "file won't launch from CloudStreamer over FTP problem" was due to this brilliant code, which Amaze FTP server uses, since my shared folder is named something like [documents] design documents.
https://github.com/apache/mina-ftpserver/blob/ftpserver-1.1.1/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgumentParser.java#L106-L110
private static boolean containsPattern(String file) {
return file.indexOf('*') > -1 || file.indexOf('?') > -1
|| file.indexOf('[') > -1;
}
Different from Filezilla which will cd into the directory then retrieve the file stream, wherever we use full path and path name contains [ we will be hitting this.
Pending
- [x] retrieve file info/stream via
CWD->RETR->CDUPmethod - [x] regression when pasting one folder out to FTP server, found on SDK 28
Known problem: delete directory recursively on FTP server will end in failure, as original FTP command set doesn't support this. Need to implement logic to walk down a directory hierarchy for deleting the directory tree recursively.
(May triage)
UIUX problem that may not be triaged:
- due to FTP actions must be executed in single thread sequentially, during file copy the UI looks unresponsive as file lists cannot be refreshed until the underlying I/O finishes. May want to get the loading screen mask back - this go against Android's recommendation though.
- file list doesn't refresh if remote side had been modified. Cache problem?
Yes, that seems to be cache problem. Isn't caching disabled for smb / ftp clients 🤔 Does manual list refresh fix the caching and shows up new files?
Pending actions with regards to regressions:
- [x] Migrate password encoding method to be URI friendly (WIP)
- [x] Codacy code documentation reports
Sorry but have to do this... I got enough trouble doing string extractions when I realize android.util.Base64 can do URL safe encoding.
The regression on SDK28 that copying a folder of files stopped after copying the first one still continues after 2bbda37.
bf4f5f2 should work on all Androids now. Excessive HybridFile.getFtpFile() is result of its design, don't wanna break this for another round of night shifts :(
Pending tasks again... after the above big hurdle
- [x] Fix UIUX problem on connection failures, maybe want to return to previous file list
- [ ] Simplify ConnectionInfo class's logic in extracting fields, after encrypted passwords are now encoded to URI friendly base64(can triage)
Would like you to take a look at e7f8c5e first. ConnectionInfo refactoring can be triaged.
@VishnuSanal can you test from your end
I see only 2 major issues before we merge this:
- Can't go back when i press back button except when I'm on root (in which case it goes back to internal storage which is fine).
- Copying from one directory in ftp server to another directory
2022-09-06 01:56:46.941 26051-26160/com.amaze.filemanager.debug E/c.a.f.a.s.CopyService: [AsyncTask #3 ] Got exception checkout: ftp://192.168.0.106:2211/amap/openamaplocationsdk/alsn.dbjava.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.OutputStream.close()' on a null object reference
at java.io.FilterOutputStream.close(FilterOutputStream.java:191)
at java.nio.channels.Channels$WritableByteChannelImpl.implCloseChannel(Channels.java:472)
at java.nio.channels.spi.AbstractInterruptibleChannel.close(AbstractInterruptibleChannel.java:116)
at com.amaze.filemanager.filesystem.files.GenericCopyUtil.doCopy(GenericCopyUtil.java:413)
at com.amaze.filemanager.filesystem.files.GenericCopyUtil.startCopy(GenericCopyUtil.java:244)
at com.amaze.filemanager.filesystem.files.GenericCopyUtil.copy(GenericCopyUtil.java:316)
at com.amaze.filemanager.asynchronous.services.CopyService$DoInBackground$Copy.copyFiles(CopyService.java:517)
at com.amaze.filemanager.asynchronous.services.CopyService$DoInBackground$Copy.execute(CopyService.java:403)
at com.amaze.filemanager.asynchronous.services.CopyService$DoInBackground.doInBackground(CopyService.java:267)
at com.amaze.filemanager.asynchronous.services.CopyService$DoInBackground.doInBackground(CopyService.java:234)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Suppressed: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.OutputStream.write(byte[], int, int)' on a null object reference
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:81)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at java.io.FilterOutputStream.close(FilterOutputStream.java:182)
... 15 common frames omitted
- Cut paste has same issue