Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

Cloudron Forum

Apps | Demo | Docs | Install

Surfer CLI 5.11.0 fails to upload

Scheduled Pinned Locked Moved Solved Surfer
17 Posts 4 Posters 610 Views
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • fbartelsF Offline
    fbartelsF Offline
    fbartels App Dev
    wrote on last edited by girish
    #1

    Hi,

    I guess I should more often update my blog as I only now noticed that the current surfer version fails at uploading. Downgrading surfer back to 5.10.4 makes uploads succeed again.

    The following trace is written:

    + surfer --version
    5.11.0
    + surfer put --token $SURFTOKEN --server blog.9wd.eu public/. /
    Using server https://blog.9wd.eu
    /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:63
            atime: stat.atime.toISOString(),
                              ^
    
    RangeError: Invalid time value
        at Date.toISOString (<anonymous>)
        at collectFiles (/usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:63:27)
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:277:40
        at Array.forEach (<anonymous>)
        at Command.put (/usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:273:15)
        at Command.listener [as _actionHandler] (/usr/local/lib/node_modules/cloudron-surfer/node_modules/commander/index.js:426:31)
        at Command._parseCommand (/usr/local/lib/node_modules/cloudron-surfer/node_modules/commander/index.js:1002:14)
        at Command._dispatchSubcommand (/usr/local/lib/node_modules/cloudron-surfer/node_modules/commander/index.js:953:18)
        at Command._parseCommand (/usr/local/lib/node_modules/cloudron-surfer/node_modules/commander/index.js:970:12)
        at Command.parse (/usr/local/lib/node_modules/cloudron-surfer/node_modules/commander/index.js:801:10)
    

    At both times surfer is run from the following base image: node:lts-alpine3.12

    1 Reply Last reply
    0
  • nebulonN Offline
    nebulonN Offline
    nebulon Staff
    wrote on last edited by
    #2

    What is the surfer server version?

    fbartelsF 1 Reply Last reply
    0
  • fbartelsF Offline
    fbartelsF Offline
    fbartels App Dev
    replied to nebulon on last edited by
    #3

    @nebulon it says:

    Package v5.12.1
    App v5.12.0

    1 Reply Last reply
    0
  • nebulonN Offline
    nebulonN Offline
    nebulon Staff
    wrote on last edited by
    #4

    Hm in this case it actually is only local to the cli. Strange, it looks like the Stats object returned by nodejs has some invalid Date set on atime. I didn't know that can even happen.

    Can you maybe put a console.log(stat, stat.atime, typeof stat.atime) or so in that code path?

    fbartelsF 1 Reply Last reply
    0
  • fbartelsF Offline
    fbartelsF Offline
    fbartels App Dev
    replied to nebulon on last edited by
    #5

    Since this is a docker image in a ci pipeline I opted to just run the stat command manually and indeed the timestamp is way off:

    + surfer --version
    5.11.0
    + stat public/.
      File: public/.
      Size: 4096      	Blocks: 8          IO Block: 4096   directory
    Device: 811h/2065d	Inode: 6471947     Links: 14
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 1754-08-30 22:43:41.000000000
    Modify: 2020-12-09 12:33:55.000000000
    Change: 2020-12-09 12:33:55.000000000
    
    + surfer put --token $SURFTOKEN --server blog.9wd.eu public/. /
    Using server https://blog.9wd.eu
    /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:63
            atime: stat.atime.toISOString(),
                              ^
    ...
    

    Afterwards I did touch that directory, but then I get a different error message afterwards from surfer:

    + surfer --version
    5.11.0
    + stat public/.
      File: public/.
      Size: 4096      	Blocks: 8          IO Block: 4096   directory
    Device: 811h/2065d	Inode: 6471994     Links: 14
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 1754-08-30 22:43:41.000000000
    Modify: 2020-12-09 13:05:22.000000000
    Change: 2020-12-09 13:05:22.000000000
    
    + touch public/
    + surfer put --token $SURFTOKEN --server blog.9wd.eu public/* /
    Using server https://blog.9wd.eu
    /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:315
                    if (remote.filePath !== path.join(absoluteDestPath, local.filePath)) return false;
                                                                              ^
    
    TypeError: Cannot read property 'filePath' of undefined
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:315:75
        at Array.find (<anonymous>)
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:314:33
        at Array.filter (<anonymous>)
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:313:36
        at Request.callback (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/index.js:894:12)
        at /usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/index.js:1127:20
        at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/parsers/json.js:22:7)
        at Stream.emit (events.js:314:20)
        at Unzip.<anonymous> (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/unzip.js:53:12)
    
    1 Reply Last reply
    0
  • nebulonN Offline
    nebulonN Offline
    nebulon Staff
    wrote on last edited by
    #6

    Interesting behavior. For a start I've published the latest cli version to npm (so cloudron-surfer@5.12.1 )
    This version has the syncing/uploading parts rewritten to avoid re-uploading unchanged files.
    Could you update this and see where it breaks then? 🙂

    fbartelsF 1 Reply Last reply
    0
  • fbartelsF Offline
    fbartelsF Offline
    fbartels App Dev
    replied to nebulon on last edited by
    #7

    Updating is easy.

    + surfer --version
    5.12.1
    + stat public/.
      File: public/.
      Size: 242       	Blocks: 0          IO Block: 4096   directory
    Device: 21h/33d	Inode: 4999809     Links: 1
    Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 1754-08-30 22:43:41.000000000
    Modify: 2020-12-09 13:41:18.000000000
    Change: 2020-12-09 13:41:18.000000000
    
    + touch public/
    + surfer put --token $SURFTOKEN --server blog.9wd.eu public/* /
    Using server https://blog.9wd.eu
    /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:324
                    if (remote.filePath !== path.join(absoluteDestPath, local.filePath)) return false;
                                                                              ^
    
    TypeError: Cannot read property 'filePath' of undefined
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:324:75
        at Array.find (<anonymous>)
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:323:33
        at Array.filter (<anonymous>)
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:322:36
        at Request.callback (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/index.js:894:12)
        at /usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/index.js:1127:20
        at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/parsers/json.js:22:7)
        at Stream.emit (events.js:326:22)
        at Unzip.<anonymous> (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/unzip.js:53:12)
    
    1 Reply Last reply
    0
  • nebulonN Offline
    nebulonN Offline
    nebulon Staff
    wrote on last edited by
    #8

    Hm looking at the code I can't seem to figure out how that could ever be undefined, I need to debug this and thus be able to reproduce it. Do you have any idea how we could do that?
    Given the other atime issue, I am a bit worried about either the node version in your image or some other stripped down dependency causing this. I don't want to put code guards in to just not make it crash without understanding the root cause.

    I guess I have to spin up a node:lts-alpine3.12 container and see if I can reproduce this, or do you have your exact setup as a public image I could just docker pull?

    fbartelsF 1 Reply Last reply
    0
  • fbartelsF Offline
    fbartelsF Offline
    fbartels App Dev
    replied to nebulon on last edited by
    #9

    The timestamp issue seems to be already known for Hugo (which is what I am using for my blog): https://github.com/gohugoio/hugo/issues/6161

    You could pull my image from https://hub.docker.com/r/fbartels/cloudron-surfer.

    If you think this could have something to do with the alpine image I am also open to converting it into a Debian based one.

    nebulonN 1 Reply Last reply
    0
  • nebulonN Offline
    nebulonN Offline
    nebulon Staff
    replied to fbartels on last edited by
    #10

    @fbartels who do you run surfer within that image in your case? Is there a volume mounted into the container which you then run the surfer put against?

    V fbartelsF 2 Replies Last reply
    0
  • V Offline
    V Offline
    vjvanjungg
    replied to nebulon on last edited by
    #11

    @nebulon Also experiencing this issue (Surfer CLI 5.12.1). Seems to happen with Hugo. Last I tried with Gridsome it worked.

    /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:324
                    if (remote.filePath !== path.join(absoluteDestPath, local.filePath)) return false;
                                                                              ^
    TypeError: Cannot read property 'filePath' of undefined
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:324:75
        at Array.find (<anonymous>)
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:323:33
        at Array.filter (<anonymous>)
        at /usr/local/lib/node_modules/cloudron-surfer/cli/actions.js:322:36
        at Request.callback (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/index.js:894:12)
        at /usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/index.js:1127:20
        at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/parsers/json.js:22:7)
        at Stream.emit (events.js:315:20)
        at Unzip.<anonymous> (/usr/local/lib/node_modules/cloudron-surfer/node_modules/superagent/lib/node/unzip.js:53:12)
    
    1 Reply Last reply
    0
  • nebulonN Offline
    nebulonN Offline
    nebulon Staff
    wrote on last edited by
    #12

    Hm I can't really reproduce this on my side, neither with using @fbartels alpine based image nor otherwise.

    Maybe I am misunderstanding the use-case though, so if I simply run:

    run fbartels/cloudron-surfer:5.12.1 surfer put --server https://files.nebulon.space  --token $TOKEN /var/ /
    

    this works just fine.

    1 Reply Last reply
    0
  • fbartelsF Offline
    fbartelsF Offline
    fbartels App Dev
    replied to nebulon on last edited by
    #13

    In my case the surfer container is run as part of a Drone pipeline, so the pwd is /drone/src at the time of execution. Based on @vjvanjungg comment I also tried it now directly on my system and while an almost blank Hugo blog succeeds in uploading with the server cli, a build of my blog shows the exact same error (maybe that makes it easier to debug, since I can then easily modify files).

    @nebulon said in Surfer CLI 5.11.0 fails to upload:

    Maybe I am misunderstanding the use-case though, so if I simply run:

    yes, almost. except that I am using a * to upload all files in that folder.

    Hmm. also their example site uploads just fine... https://github.com/gohugoio/hugoBasicExample. So it must be something in relation to the file that get generated for my blog.

    1 Reply Last reply
    0
  • girishG Offline
    girishG Offline
    girish Staff
    wrote on last edited by
    #14

    @nebulon Could it be crash is because of https://git.cloudron.io/cloudron/surfer/-/blob/master/cli/actions.js#L56 ? It should be returning tmp ? Because it then gets passed to concat (as undefined) and thus the crash ?

    nebulonN 1 Reply Last reply
    0
  • nebulonN Offline
    nebulonN Offline
    nebulon Staff
    replied to girish on last edited by
    #15

    @girish that must be it! I will prepare a new update for the cli then.

    1 Reply Last reply
    0
  • nebulonN Offline
    nebulonN Offline
    nebulon Staff
    wrote on last edited by
    #16

    At least for the undefined bug this should then hopefully be fixed with cloudron-surfer@5.12.2 cli.

    fbartelsF 1 Reply Last reply
    3
  • fbartelsF Offline
    fbartelsF Offline
    fbartels App Dev
    replied to nebulon on last edited by
    #17

    @nebulon thanks! Indeed the upload now succeeds with the new version. For the wrong timestamp i'll just touch the folder once before calling surfer. Maybe it eventually gets fixed in hugo itself.

    1 Reply Last reply
    0

  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Login

  • Don't have an account? Register

  • Login or register to search.