Possible non-critical likely problem in subprocessSupport.py
Back on 7/18/13, while assisting Dennis with an upgrade, he would get
this stacktrace when trying to start the factory.
> ./manage-glideins --start factory --ini new.ini Commands: cd /home/gfactory/v2_7_1/factory;. ./factory.sh;cd /home/gfactory/v2_7_1/factory/glidein_v2_7_1; ./factory_startup start PROGRAM ERROR: uncaught execption. Contact support Traceback (most recent call last): File "/home/gfactory/v2_7_1/glideinwms/install/manage-glideins", line 459, in main process_request(service,gAction,inifile) File "/home/gfactory/v2_7_1/glideinwms/install/manage-glideins", line 202, in process_request factory(service,action,inifile) File "/home/gfactory/v2_7_1/glideinwms/install/manage-glideins", line 172, in factory run_command(service,obj.username(),obj.hostname(),cmd) File "/home/gfactory/v2_7_1/glideinwms/install/manage-glideins", line 55, in run_command common.logit(stdout) UnboundLocalError: local variable 'stdout' referenced before assignment None
This initially looked like a problem in the manage-glideins script where stdout was not
defined. On further investigation, it appears to be an issue in the subprocessSupport.py
module... maybe. It appears to be hitting a condition where no failure is detected
and stdout is getting None back... which makes no sense to me.
The condition we were getting this in was when the factory failed to start because we did not
have the log symlink defined in the working directory. It was a "LogDir" attribute error
(whatever that means). This was your typical hacked upgrade from one version to another on
the same node. We had to hack the code to even determine the error condition.
I could not pursue this further at the time as the priority was to get his services upgraded
and running again. Then I forgot.
#1 Updated by Burt Holzman over 6 years ago
subprocessSupport is raising an exception and it's getting caught by manage-glideins.
The logic in retrieving the stdout is defective though. The subroutine doesn't return
and so that doesn't get defined. If you print out the exception, it has the stderr
inside and that may be enough to debug.