Changeset e2f31d3


Ignore:
Timestamp:
Aug 11, 2025, 5:45:18 PM (3 months ago)
Author:
Frederik Heber <frederik.heber@…>
Branches:
Candidate_v1.7.0, stable
Children:
aeec58
Parents:
2c3ae5
git-author:
Frederik Heber <frederik.heber@…> (07/13/25 21:53:12)
git-committer:
Frederik Heber <frederik.heber@…> (08/11/25 17:45:18)
Message:

JobMarket: PoolGuard checks also all other (idle) workers.

Location:
ThirdParty/JobMarket/src/JobMarket
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • ThirdParty/JobMarket/src/JobMarket/FragmentScheduler.cpp

    r2c3ae5 re2f31d3  
    7171      boost::bind(&FragmentQueue::resubmitJob, boost::ref(JobsQueue), _1),
    7272      boost::bind(&FragmentQueue::isResultPresent, boost::cref(JobsQueue), _1),
     73      pool.getPoolOfWorkers(),
    7374      OpQueue),
    7475  shutdown_thread(NULL)
  • ThirdParty/JobMarket/src/JobMarket/Pool/PoolGuard.cpp

    r2c3ae5 re2f31d3  
    4444    const boost::function<void (const JobId_t)> _resubmitJobfunction,
    4545    const boost::function<bool (const JobId_t)> _checkResultPresentfunction,
     46    const Pool_t& _poolOfWorkers,
    4647    OperationQueue &_OpQueue) :
    4748  CheckAtNextInterval(_guardFromStart),
     
    5152  resubmitJobfunction(_resubmitJobfunction),
    5253  checkResultPresentfunction(_checkResultPresentfunction),
     54  PoolOfWorkers(_poolOfWorkers),
    5355  OpQueue(_OpQueue),
    5456  connection(_connection),
     
    103105      CheckWorker(*iter);
    104106    }
    105     LOG(1, "INFO: Checking on " << CurrentIdleWorkerList.size() << " idle workers.");
    106     for(std::set<WorkerAddress>::const_iterator iter = CurrentIdleWorkerList.begin();
    107         iter != CurrentIdleWorkerList.end(); ++iter) {
    108       CheckWorker(*iter);
     107    LOG(1, "INFO: Checking on " << PoolOfWorkers.size() << " all other workers.");
     108    for(Pool_t::const_iterator iter = PoolOfWorkers.begin();
     109        iter != PoolOfWorkers.end(); ++iter) {
     110      if (currentworkers.find(*iter) == currentworkers.end()) {
     111        CheckWorker(*iter);
     112      }
    109113    }
    110114  } else {
  • ThirdParty/JobMarket/src/JobMarket/Pool/PoolGuard.hpp

    r2c3ae5 re2f31d3  
    3737class PoolGuard {
    3838public:
     39  //!> set of worker addresses
     40  typedef std::set<WorkerAddress> Pool_t;
     41
    3942  /** Constructor for PoolGuard
    4043   *
     
    4649   * @param _resubmitJobfunction bound function to resubmit job by its JobId_t
    4750   * @param _checkResultPresentfunction bound function to check whether a job's result by its JobId_t is present
     51   * @param _poolOfWorkers pool of all workers for general check alives
    4852   * @param _OpQueue access to operation queue for placing CheckAliveWorkerOperations
    4953   */
     
    5660      const boost::function<void (const JobId_t)> _resubmitJobfunction,
    5761      const boost::function<bool (const JobId_t)> _checkResultPresentfunction,
     62      const Pool_t& _poolOfWorkers,
    5863      OperationQueue &_OpQueue
    5964      );
     
    101106   */
    102107  void addBusyWorker(const WorkerAddress address, const JobId_t id);
     108
     109  /** Informs PoolGuard about a new idle worker.
     110   *
     111   * @param address address of worker
     112   */
     113  void addIdleWorker(const WorkerAddress address);
    103114
    104115  /** Informs PoolGuard that a busy worker has finished.
     
    154165
    155166  //!> set of idle working workers
    156   std::set<WorkerAddress> CurrentIdleWorkerList;
     167  const Pool_t& PoolOfWorkers;
    157168
    158169  //!> reference to OperationQueue for pushing CheckAliveWorkerOperation
  • ThirdParty/JobMarket/src/JobMarket/Pool/WorkerPool.hpp

    r2c3ae5 re2f31d3  
    6969  typedef std::vector<std::pair<std::string, std::string> > WorkerList_t;
    7070  WorkerList_t getListOfIdleWorkers() const;
     71  //!> typedef for the pool of workers being a set to keep only unique addresses
     72  typedef std::set<WorkerAddress> Pool_t;
     73  const Pool_t& getPoolOfWorkers() const
     74  {
     75    return pool;
     76  }
    7177
    7278  /** Return the number of busy workers.
     
    121127
    122128private:
    123   //!> typedef for the pool of workers being a set to keep only unique addresses
    124   typedef std::set<WorkerAddress> Pool_t;
    125 
    126 private:
    127129  //!> FragmentScheduler needs access to removeAllWorkers()
    128130  friend class FragmentScheduler;
Note: See TracChangeset for help on using the changeset viewer.