X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2Fworkloadmanager%2FDefaultAlgorithm.cxx;fp=src%2Fworkloadmanager%2FDefaultAlgorithm.cxx;h=1b1896c26c301149d19c2c6c3c71ee2102bb2725;hb=7a808eb18fce9d9ec2b8271763b397a9ec1fd604;hp=8d69376aa7ac2d2bafb54180a29b02c660ba229c;hpb=8321d5a834f6e015ac73884a351af6a35ee802a0;p=modules%2Fyacs.git diff --git a/src/workloadmanager/DefaultAlgorithm.cxx b/src/workloadmanager/DefaultAlgorithm.cxx index 8d69376aa..1b1896c26 100644 --- a/src/workloadmanager/DefaultAlgorithm.cxx +++ b/src/workloadmanager/DefaultAlgorithm.cxx @@ -74,6 +74,7 @@ WorkloadAlgorithm::LaunchInfo DefaultAlgorithm::chooseTask() if(itResource->isSupported(ctype) && (*itTask)->isAccepted(itResource->resource())) { + isSupported = true; if(itResource->isAllocPossible(ctype)) { float thisCost = itResource->cost(ctype); @@ -90,9 +91,12 @@ WorkloadAlgorithm::LaunchInfo DefaultAlgorithm::chooseTask() result.worker.resource = best_resource->resource(); result.worker.index = best_resource->alloc(ctype); } - else if(!isSupported) + else if(!isSupported && _resourcesFrozen) { - // TODO: This task can never be run by any available resource. + // This task can never be run by any available resource. + result.taskFound = true; + result.worker.isOk = false; + result.worker.error_message = "No resource can run this task."; } } if(result.taskFound) @@ -110,7 +114,7 @@ WorkloadAlgorithm::LaunchInfo DefaultAlgorithm::chooseTask() void DefaultAlgorithm::liberate(const LaunchInfo& info) { const ContainerType& ctype = info.worker.type; - if(!ctype.ignoreResources) + if(!ctype.ignoreResources && info.worker.isOk) { const Resource& r = info.worker.resource; unsigned int index = info.worker.index;