diff options
author | ILYA Khlopotov <iilyak@apache.org> | 2019-09-10 11:30:46 +0000 |
---|---|---|
committer | ILYA Khlopotov <iilyak@apache.org> | 2019-09-10 08:59:31 -0700 |
commit | dd5ac138ecbdee76ff3ba68664f25c2a5cdda7cc (patch) | |
tree | 2623f2b751f41b93fdcd1f63d63d7223d67f6663 | |
parent | 7ada3046f0a4a6d097f26a2b171ec21b6d5ec362 (diff) | |
download | couchdb-dd5ac138ecbdee76ff3ba68664f25c2a5cdda7cc.tar.gz |
Support `--extra_args` parameter in `dev/run`
Sometimes there is a need to specify additional arguments for the beam process we start from dev/run.
In particular the feature is handy for:
- changing emulator flags
- simulate OOM via available RAM restrictions
- enable module loading tracing
- configure number of schedulers
- modify applications configuration
- run customization script to add extra development deps (such as automatic code reload)
Historically developers had to edit dev/run to do it.
This PR adds an ability to specify additional arguments via `--extra_args` argument.
In order to run customization script create `customization.erl` which exports `start/0` and run it using:
```
dev/run --extra_args='-run customization'
```
-rwxr-xr-x | dev/run | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -110,6 +110,11 @@ def setup_logging(ctx): def setup_argparse(): + parser = get_args_parser() + return parser.parse_args() + + +def get_args_parser(): parser = optparse.OptionParser(description="Runs CouchDB 2.0 dev cluster") parser.add_option( "-a", @@ -200,7 +205,13 @@ def setup_argparse(): action="store_true", help="Select available ports for nodes automatically", ) - return parser.parse_args() + parser.add_option( + "--extra_args", + dest="extra_args", + default=None, + help="Extra arguments to pass to beam process", + ) + return parser def setup_context(opts, args): @@ -223,6 +234,7 @@ def setup_context(opts, args): "haproxy_port": opts.haproxy_port, "config_overrides": opts.config_overrides, "no_eval": opts.no_eval, + "extra_args": opts.extra_args, "reset_logs": True, "procs": [], "auto_ports": opts.auto_ports, @@ -578,6 +590,8 @@ def boot_node(ctx, node): mode = "r+b" logfname = os.path.join(ctx["devdir"], "logs", "%s.log" % node) log = open(logfname, mode) + if "extra_args" in ctx and ctx["extra_args"]: + cmd += ctx["extra_args"].split(" ") cmd = [toposixpath(x) for x in cmd] return sp.Popen(cmd, stdin=sp.PIPE, stdout=log, stderr=sp.STDOUT, env=env) |