That's along the lines of what I was thinking for the "different user
account" case.
Something to think about is whether "java" should be in the
launch-command[1] value (with a default value of just "java".) If not
it's really a launch-command-prefix, and then is there a use case for
launch-command-suffix?
I think using a separate child element for this instead of an attribute
is better.
Another question is whether it makes sense to allow this to be
configured at the server-group level, with servers by default inheriting
that config. My vote is "no." KISS. If there is demand for doing it at
the server-group level, we'll here about it and can add it later.
As for validation, I doubt we can do much there. I think this would be
an advanced feature where users are going to have to be careful and test
things.
[1] Note our schema uses lower case names with "-" as a separator, not
camel case. So "launch-command" not "launchCommand".
On 8/14/12 11:49 AM, John O'Hara wrote:
When running AS7 in a domain, we need to be able to bind each host
to
explicit numa nodes when the process is launched. We need to be able to
insert a numa command before the java command for each server process
that is launched by the HostController. The numa command needs to be
configurable for each host, i.e. we might want to bind hosts to
different numa nodes or the same numa node.
Another use case that I am aware of is running the server process under
a different user account to the HostController, e.g. prefixing the java
command with something like "sudo joe java"
Having thought about our use case and a use case where the host should
start start under a different account , a possible solution could be to
modify the AS config schema to allow a generic "launch command" for each
server entity, so that the host.xml would look something like;
<server name="server-one" group="main-server-group"
launchCommand="numactl --membind 0 --cpubind 0"/>
<server name="server-two" group="main-server-group"
auto-start="true" launchCommand="numactl --membind 1 --cpubind
1">
<!-- server-two avoids port conflicts by incrementing the
ports in
the default socket-group declared in the server-group
-->
<socket-bindings port-offset="150"/>
</server>
<server name="server-three" group="main-server-group"
auto-start="true" launchCommand="sudo joe">
<!-- server-two avoids port conflicts by incrementing the
ports in
the default socket-group declared in the server-group
-->
<socket-bindings port-offset="150"/>
</server>
If a launchCommand attribute was defined for a server, you could parse
the attribute value and add the parsed commands to the ProcessBuilder
before the java command.
The main difficulty would be validating any commands added in
launchCommand attribute, not sure how problematic this would be?
Regards,
John
--
Brian Stansberry
Principal Software Engineer
JBoss by Red Hat