[Important] Bench version 2 - see this before you run bench update

@anand, wow, that’s a lot of sites… But what about highload? How many simultaneous users can such a system handle?

@alex_melkoff we don’t have stats on that yet. But in the coming months, we will be capping it to 1000 users a server just for safety. Still that is a big number and turns out to be cheaper and easier to manage. And it is so easy to troubleshoot too :smile:

I assume as long as you just do bench update nothing is going to happen apart from updating ERPNext and frappe (using the existing bench), right?

In order to pull the new bench v2, you’d have to specifically perform a git pull inside of the folder where the bench is installed. Is that so?

@vrms bench update also updates bench code. Since I can’t possible test it for all scenarios, things could break. So if you don’t want to take even a bit of risk, you should change bench’s branch to v1.x. Or try it out in your local/test setup first.

@anand just to clarify and out of interest

  1. which of the branches in your repo is the v2? The new-install branch?
  2. when precisely are you going to merge? Will there be an extra announcement, so anybody knows, when to be extra cautious with a bench update?

Merged

2 Likes

Things broke for our installation. Want this posted to github rather than this thread?

Updates everything, but then at the end of setup after writing the ./assets/, it hits this error:

Wrote ./assets/css/module.min.css - 2k
error: <class 'xmlrpclib.Fault'>, <Fault 10: 'BAD_NAME: frappe-bench-processes'>: file: /usr/lib/python2.7/xmlrpclib.py line: 794
Traceback (most recent call last):
  File "/usr/local/bin/bench", line 9, in <module>
    load_entry_point('bench==0.1', 'console_scripts', 'bench')()
  File "/home/ubuntu/bench-repo/bench/cli.py", line 40, in cli
    bench_command()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 664, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 644, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 991, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 837, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 464, in invoke
    return callback(*args, **kwargs)
  File "/home/ubuntu/bench-repo/bench/commands/update.py", line 60, in update
    _update(pull, patch, build, bench, auto, restart_supervisor, requirements, no_backup, upgrade, force=force)
  File "/home/ubuntu/bench-repo/bench/commands/update.py", line 96, in _update
    restart_supervisor_processes(bench=bench_path)
  File "/home/ubuntu/bench-repo/bench/utils.py", line 267, in restart_supervisor_processes
    exec_cmd(cmd, cwd=bench)
  File "/home/ubuntu/bench-repo/bench/utils.py", line 99, in exec_cmd
    raise CommandFailedError(cmd)
bench.utils.CommandFailedError: sudo supervisorctl restart frappe-bench-processes:

For reference: supervisorctl status

frappe:frappe-web                RUNNING    pid 18572, uptime 1 day, 0:55:17
frappe:frappe-worker             RUNNING    pid 18571, uptime 1 day, 0:55:17
frappe:frappe-workerbeat         RUNNING    pid 18580, uptime 1 day, 0:55:16
node-socketio                    RUNNING    pid 1634, uptime 6 days, 0:08:53
redis-async-broker               RUNNING    pid 1633, uptime 6 days, 0:08:53
redis-cache                      RUNNING    pid 1648, uptime 6 days, 0:08:53

Ok let me see if I can make this backward compatible. Give me 5 mins.

@Kody_Baker can you try running update again? I’ve pushed a fix.

In your case, you might need to run cd /home/ubuntu/frappe-bench && setup sudoers ubuntu if it keeps asking you the sudo password for ubuntu user

Looks like we’re 99% fixed.
No more traceback, but the error persists.

Wrote ./assets/css/module.min.css - 2k
error: <class 'xmlrpclib.Fault'>, <Fault 10: 'BAD_NAME: frappe-bench-processes'>: file: /usr/lib/python2.7/xmlrpclib.py line: 794
frappe-web: stopped
frappe-workerbeat: stopped
frappe-worker: stopped
frappe-web: started
frappe-workerbeat: started
frappe-worker: started

You can ignore that error till you move to the new configuration. For new configuration you will have to regenerate all config files + nginx config.

How do I move to new config?
bench update migrate?

@Kody_Baker see point 4 in troubleshooting in the first post

1 Like

Worked. New error now at the end:

...Wrote ./assets/css/module.min.css - 2k
frappe-bench-frappe-async-worker: stopped
frappe-bench-frappe-longjob-worker: stopped
frappe-bench-frappe-workerbeat: stopped
frappe-bench-frappe-web: stopped
frappe-bench-frappe-worker: stopped
frappe-bench-frappe-async-worker: started
frappe-bench-frappe-longjob-worker: started
frappe-bench-frappe-workerbeat: started
frappe-bench-frappe-web: started
frappe-bench-frappe-worker: started
frappe-bench-node-socketio: ERROR (abnormal termination)

What is the output when you run:

node apps/frappe/socketio.js
The program 'node' can be found in the following packages:
 * node
 * nodejs-legacy
Try: sudo apt-get install <selected package>

try:

nodejs apps/frappe/socketio.js
    nodejs apps/frappe/socketio.js

module.js:340
    throw err;
          ^
Error: Cannot find module '/home/ubuntu/apps/frappe/socketio.js'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

You need to run it from within the frappe-bench folder

Ooops, sorry.

~/frappe-bench$ nodejs apps/frappe/socketio.js
listening on *: 9000

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: Redis connection to redis://localhost:12311 failed - connect ENOENT
    at RedisClient.on_error (/home/ubuntu/frappe-bench/node_modules/redis/index.js:196:24)
    at Socket.<anonymous> (/home/ubuntu/frappe-bench/node_modules/redis/index.js:106:14)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:441:14
    at process._tickCallback (node.js:415:13)