V8.0.5 FTP deploy gets stuck

Hi, I’ve just recently moved from 7.xx to V8, recreated an existing project in V8.0.5.
First deployment to our FTP server to a new folder worked perfect, but a subsequent deploy gets stuck at removing the old deployment.

Appstudio unfortunately doesn’t show any additional messages or a transmission error, I’d suggest to add a better feedback to the user if the transmission can’t be finished as intended.

Any ideas on how to solve?

There have been a couple of similar reports, but it’s working properly for most everyone. Who provides your server?

Version 8.0.5 uses the latest ftp/sftp libraries. Security requirements may make a difference.

Webland.ch, they don’t support SFTP, only FTPS. I’ve asked them to get a look at the log files, hope this will help.

Let us know what they tell you!

There were no error messages in the log, but I’ve just noticed the built in log for AppStudio, which shows me the following messages:

2020-03-25 16:52:22,644 - root - ERROR - An exception has occurred!
Traceback (most recent call last):
  File "IDEController.py", line 1288, in FtpRmTree
  File "ftplib.py", line 631, in cwd
  File "ftplib.py", line 278, in voidcmd
  File "ftplib.py", line 251, in voidresp
  File "ftplib.py", line 246, in getresp
ftplib.error_perm: 550 CWD failed. "code.js" : no such file or directory.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "MainFrame.py", line 2691, in OnMenuRunDeploySFTP
  File "MainFrame.py", line 1855, in OnMenuRunDeployMenu
  File "IDEController.py", line 64, in wrapper
  File "IDEController.py", line 1409, in FtpDeploy
  File "IDEController.py", line 1292, in FtpRmTree
  File "ftplib.py", line 614, in delete
  File "ftplib.py", line 273, in sendcmd
  File "ftplib.py", line 246, in getresp
ftplib.error_perm: 550 "code.js": no such file.
TOOLBOX/PROJECT BUG! FIX ME!
2020-03-25 15:42:40,636 - JFormat - ERROR - borderWidth.isdigit()
2020-03-25 15:42:40,637 - JFormat - ERROR - 'int' object has no attribute 'isdigit'
2020-03-25 15:43:35,154 - JFormat - ERROR - TOOLBOX/PROJECT BUG! FIX ME!
2020-03-25 15:43:35,154 - JFormat - ERROR - borderWidth.isdigit()
2020-03-25 15:43:35,154 - JFormat - ERROR - 'int' object has no attribute 'isdigit'
2020-03-25 15:43:35,394 - JFormat - ERROR - TOOLBOX/PROJECT BUG! FIX ME!
2020-03-25 15:43:35,394 - JFormat - ERROR - borderWidth.isdigit()
2020-03-25 15:43:35,394 - JFormat - ERROR - 'int' object has no attribute 'isdigit'
2020-03-25 15:46:01,812 - JFormat - ERROR - TOOLBOX/PROJECT BUG! FIX ME!
2020-03-25 15:46:01,812 - JFormat - ERROR - borderWidth.isdigit()
2020-03-25 15:46:01,812 - JFormat - ERROR - 'int' object has no attribute 'isdigit'
2020-03-25 15:47:07,077 - JFormat - ERROR - TOOLBOX/PROJECT BUG! FIX ME!
2020-03-25 15:47:07,077 - JFormat - ERROR - borderWidth.isdigit()
2020-03-25 15:47:07,077 - JFormat - ERROR - 'int' object has no attribute 'isdigit'
2020-03-25 15:47:41,847 - JFormat - ERROR - TOOLBOX/PROJECT BUG! FIX ME!
2020-03-25 15:47:41,847 - JFormat - ERROR - borderWidth.isdigit()
2020-03-25 15:47:41,847 - JFormat - ERROR - 'int' object has no attribute 'isdigit'
2020-03-25 15:48:10,880 - JFormat - ERROR - TOOLBOX/PROJECT BUG! FIX ME!
2020-03-25 15:48:10,880 - JFormat - ERROR - borderWidth.isdigit()
2020-03-25 15:48:10,880 - JFormat - ERROR - 'int' object has no attribute 'isdigit'

The JFormat messages are not important.

The ‘no such file or directory’ message is interesting. It looks like it’s getting an error trying to delete the old code.js file.

Does this happen if you deploy to Volt? What about using SFTP instead of FTP (in AppStudio Preferences)?

I’ll have to check with deploying to Volt, SFTP isn’t availble on our host.

Strangely it doesn’t happen if I deploy from V7.xxx

There were updates to the underlying ftp libraries, mostly for security reasons.

I’ve looked at the FTP log from TotalCommander, as I’ve noticed it also needs multiple attempts to delete the deployed folder, maybe this will help you to solve the issue:

SYST
215 UNIX Type: L8
FEAT
211-Extensions supported:
AUTH TLS
CCC
CLNT
CPSV
EPRT
EPSV
MDTM
MFCT
MFMT
MLST type*;size*;create;modify*;
MODE Z
PASV
PBSZ
PROT
REST STREAM
SBUF
SIZE
SSCN
TVFS
UTF8
XCRC “filename” SP EP
XMD5 “filename” SP EP
XSHA1 “filename” SP EP
211 End.
CLNT Total Commander (UTF-8)
200 Noted.
OPTS UTF8 ON
200 UTF8 OPTS ON
Connect ok!
CWD /test2
250 CWD command successful. “/test2” is current directory.
Verzeichnis einlesen
TYPE A
200 Type set to A.
MODE Z
200 Mode Z ok.
PASV
227 Entering Passive Mode (xx,xx,xxx,xxx,121,208)
Connected to PASV port
MLSD
150 Data connection accepted from xx.xx.xxx.xxx:53058; transfer starting.
Herunterladen
Warte auf Antwort des Servers…
226-Compression : 55.76% (87 Bytes/156 Bytes).
226 Transfer ok.
RMD webapp
550 “webapp”: can’t remove directory.
DELE webapp
550 “webapp”: no such file.
CWD webapp
250 CWD command successful. “/test2/webapp” is current directory.
Verzeichnis einlesen
PASV
227 Entering Passive Mode (xx,xx,xxx,xxx,120,23)
Connected to PASV port
MLSD
150 Data connection accepted from xx.xx.xxx.xxx:53067; transfer starting.
Herunterladen
Warte auf Antwort des Servers…
226-Compression : 36.05% (168 Bytes/466 Bytes).
226 Transfer ok.
DELE code.js
250 File “/test2/webapp/code.js” deleted.
Deleted (30.03.2020 11:10:05): ftp://xxxxxxxx.com/test2/webapp/code.js
DELE index.html

The problem is that ftp is considered to be an obsolete, insecure protocol. We believe the libraries we use as solid and up to date - but that isn’t always true of all servers.

It’s best to move to sftp.