  
          Should only be called from  :class:`lib.cli.launcher.ScriptExecutor`
          """
          logger.info('Starting, this may take a while...')
          inputs = self._input_locations
          if self._args.batch_mode:
              logger.info("Batch mode selected processing: %s", self._input_locations)
          for job_no, location in enumerate(self._input_locations):
              if self._args.batch_mode:
                  logger.info("Processing job %s of %s: '%s'", job_no + 1, len(inputs), location)
 
</s> remove                 logger.info("Processing job %s of %s: '%s'", job_no + 1, len(inputs), location)
 </s> add                 logger.info("Processing job %s of %s: '%s'",
                            job_no + 1, len(self._input_locations), location) </s> remove             extract.process()
 </s> add             if len(self._input_locations) > 1:
                # TODO - Running this in a process is hideously hacky. However, there is a memory
                # leak in some instances when running in batch mode. Many days have been spent
                # trying to track this down to no avail (most likely coming from C-code.) Running
                # the extract job inside a process prevents the memory leak in testing. This should
                # be replaced if/when the memory leak is found
                proc = Process(target=extract.process)
                proc.start()
                proc.join()
            else:
                extract.process() </s> remove         """ Join the running threads, catching and re-raising any errors """
 </s> add         """ Join the running threads, catching and re-raising any errors

        Clear the list of threads for class instance re-use
        """ </s> remove         logger.debug("Setting thread")
 </s> add         logger.trace("Setting thread")  # type:ignore[attr-defined]
  
          Should only be called from  :class:`lib.cli.launcher.ScriptExecutor`
          """
          logger.info('Starting, this may take a while...')

          if self._args.batch_mode:
              logger.info("Batch mode selected processing: %s", self._input_locations)
          for job_no, location in enumerate(self._input_locations):
              if self._args.batch_mode:
                  logger.info("Processing job %s of %s: '%s'", job_no + 1, len(inputs), location)
keep keep keep keep replace keep keep keep keep keep
 Bugfix: Patch extract memory leak in batch mode 
scripts/extract.py