[ 
https://issues.apache.org/jira/browse/PHOENIX-5454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16922628#comment-16922628
 ] 

Josh Elser commented on PHOENIX-5454:
-------------------------------------

One question for you, Istvan:
{quote}The variants which include a "{{p}}" near the end ({{execlp()}}, 
{{execlpe()}}, {{execvp()}}, and {{execvpe()}}) will use the PATH environment 
variable to locate the program file
{quote}
 
{quote}The other variants, {{execl()}}, {{execle()}}, {{execv()}}, and 
{{execve()}}, will not use the PATH variable to locate the executable
{quote}
The above is from the Python documentation.
{code:java}
     cmd = java_cmd % {'java': java, 'root_logger': 'INFO,console', 'log_dir': 
'.', 'log_file': 'psql.log'}
-    # Because shell=True is not set, we don't have to alter the environment
-    child = subprocess.Popen(cmd.split())
-    sys.exit(child.wait())
+    splitcmd = cmd.split()
+    os.execv(splitcmd[0], splitcmd) {code}
Wouldn't this mean that the relative {{java}} command would fail? Need to try 
this out locally, but seems problematic as-is, but {{execvp}} would do what you 
want?

> Phoenix scripts start foreground java processes as child processes
> ------------------------------------------------------------------
>
>                 Key: PHOENIX-5454
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5454
>             Project: Phoenix
>          Issue Type: Improvement
>    Affects Versions: 5.1.0
>            Reporter: István Tóth
>            Assignee: István Tóth
>            Priority: Minor
>         Attachments: PHOENIX-5454.master.v1.patch
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Currently the phoenix scripts in python start the java process via 
> subprocess.call() or subprocess.popen() even when the java process has to run 
> in the foreground, and there is no cleanup required.
> I propose that in these cases, we start java via os.exec*(). This has the 
> following advantages:
>  * There is no python process idling waiting for the java process to end, 
> reducing process count and memory consumption
>  * Signal handling is simplified (signals sent to the starting script are 
> received by the java process started)
>  * Return code handling is simplified (no need to check for and return error 
> codes from java in the startup script)



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to