TeamAmaze / TeamAmaze/AmazeFileManager

SFTP conection becomes not working

Open
#3,266 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area-Ssh/Scp/Sftp Issue-Bug
Dominant language
Kotlin
Stars
6.4k
Forks
1.7k
Avg merge
3d 9h
Merged PRs (30d)
1

Description

Describe the bug
SFTP connection becomes not working if SFTP server was turned off

To Reproduce

  1. Setup SSH server via Termux (probably any other SSH/SFTP server should also work)
  2. Create and save SFTP connection to server with username/password authentication
  3. Connect to server and open several directories inside SFTP file structure
  4. Turn off SSH/SFTP server
  5. Press back several times ("No Files" should be displayed)
  6. Start SSH/SFTP server
  7. Restart app and open saved SFTP connection
  8. Check "No Files" is displayed

Expected behavior
AFM should show files from SFTP server

Additional context
Here is stacktrace that has been occurred during step 5

2022-04-19 11:39:26.543 7970-8005/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-1] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:27.429 7970-8028/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-3] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:32.179 7970-8029/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-4] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:33.298 7970-8030/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-5] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:35.047 7970-8027/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-2] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:35.616 7970-8005/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-1] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:36.497 7970-8028/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-3] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:38.767 7970-8029/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-4] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:39.852 7970-8030/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-5] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:41.138 7970-8027/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-2] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:43.142 7970-8005/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-1] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:44.098 7970-8028/com.amaze.filemanager.debug W/System.err: [RxCachedThreadScheduler-3] INFO net.schmizz.sshj.connection.channel.direct.SessionChannel - Will request `sftp` subsystem
2022-04-19 11:39:55.305 7970-8113/com.amaze.filemanager.debug W/System.err: [reader] ERROR net.schmizz.sshj.transport.TransportImpl - Dying because - Broken transport; encountered EOF
2022-04-19 11:39:55.305 7970-8113/com.amaze.filemanager.debug W/System.err: net.schmizz.sshj.transport.TransportException: Broken transport; encountered EOF
2022-04-19 11:39:55.305 7970-8113/com.amaze.filemanager.debug W/System.err:     at net.schmizz.sshj.transport.Reader.run(Reader.java:58)
2022-04-19 11:39:55.305 7970-8113/com.amaze.filemanager.debug W/System.err: [reader] INFO net.schmizz.sshj.transport.TransportImpl - Disconnected - UNKNOWN
2022-04-19 11:40:02.595 7970-8062/com.amaze.filemanager.debug D/SshConnectionPool: Connection no longer usable. Reconnecting...
2022-04-19 11:40:02.622 7970-8062/com.amaze.filemanager.debug E/UtilsHandler: Error getting auth private key for URI [ssh://u0_a297:abc123@127.0.0.1:8022]
    androidx.room.EmptyResultSetException: Query returned empty result set: SELECT ssh_key FROM sftp WHERE path = ?
        at com.amaze.filemanager.database.daos.SftpEntryDao_Impl$14.call(SftpEntryDao_Impl.java:551)
        at com.amaze.filemanager.database.daos.SftpEntryDao_Impl$14.call(SftpEntryDao_Impl.java:535)
        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)
2022-04-19 11:40:02.624 7970-8062/com.amaze.filemanager.debug E/UtilsHandler: Error getting public key for URI [ssh://u0_a297:abc123@127.0.0.1:8022]
    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)
2022-04-19 11:40:02.640 7970-8062/com.amaze.filemanager.debug E/UtilsHandler: Error getting auth private key for URI [ssh://u0_a297:abc123@127.0.0.1:8022/data/data/com.termux/files/home]
    androidx.room.EmptyResultSetException: Query returned empty result set: SELECT ssh_key FROM sftp WHERE path = ?
        at com.amaze.filemanager.database.daos.SftpEntryDao_Impl$14.call(SftpEntryDao_Impl.java:551)
        at com.amaze.filemanager.database.daos.SftpEntryDao_Impl$14.call(SftpEntryDao_Impl.java:535)
        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)
2022-04-19 11:40:02.642 7970-8062/com.amaze.filemanager.debug E/UtilsHandler: Error getting public key for URI [ssh://u0_a297:abc123@127.0.0.1:8022/data/data/com.termux/files/home]
    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)

Contributor guide

Open the contributing guide

First steps

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

Research direction

Start at SshConnectionPool, UtilsHandler, and the SftpEntryDao queries shown in the stacktrace, then reproduce the server shutdown and restart sequence with a saved SFTP connection. Done means the reconnect succeeds after the server returns and the saved connection displays the remote files instead of “No Files”.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.