Remote Python executor Handler class process fails with Arguments list too long 85/90485/1
authorSerge Simard <serge@agilitae.com>
Tue, 25 Jun 2019 21:20:48 +0000 (17:20 -0400)
committerSerge Simard <serge@agilitae.com>
Tue, 25 Jun 2019 21:22:13 +0000 (17:22 -0400)
Issue-ID: CCSDK-1435
Change-Id: I02b1d8393c2506850cf37df6e3447d195f4fabb5
Signed-off-by: Serge Simard <serge@agilitae.com>
ms/command-executor/src/main/python/command_executor_handler.py

index 365c001..305c83e 100644 (file)
@@ -163,9 +163,16 @@ class CommandExecutorHandler():
     def activate_venv(self):
         self.logger.info("{} - Activate Python Virtual Environment".format(self.blueprint_id))
 
+        # Fix: The python generated activate_this.py script concatenates the env bin dir to PATH on every call
+        #      eventually this process PATH variable was so big (128Kb) that no child process could be spawn
+        #      This script will remove all duplicates; while keeping the order of the PATH folders
+        fixpathenvvar = "os.environ['PATH']=os.pathsep.join(list(dict.fromkeys(os.environ['PATH'].split(':'))))"
+
         path = "%s/bin/activate_this.py" % self.venv_home
         try:
             exec (open(path).read(), {'__file__': path})
+            exec (fixpathenvvar)
+            self.logger.info("Running with PATH : {}".format(os.environ['PATH']))
             return True
         except Exception as err:
             self.logger.info(