You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ii...@apache.org on 2019/09/10 17:29:15 UTC
[couchdb] branch master updated: Support `--extra_args` parameter
in `dev/run`
This is an automated email from the ASF dual-hosted git repository.
iilyak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb.git
The following commit(s) were added to refs/heads/master by this push:
new dd5ac13 Support `--extra_args` parameter in `dev/run`
new e746d90 Merge pull request #2183 from cloudant/add-extra-arguments-to-beam
dd5ac13 is described below
commit dd5ac138ecbdee76ff3ba68664f25c2a5cdda7cc
Author: ILYA Khlopotov <ii...@apache.org>
AuthorDate: Tue Sep 10 11:30:46 2019 +0000
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'
```
---
dev/run | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/dev/run b/dev/run
index 10351eb..9209c11 100755
--- a/dev/run
+++ b/dev/run
@@ -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)