This is an automated email from the ASF dual-hosted git repository.

isjarana pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/develop by this push:
     new 63cb65f95d Fix rescheduler
     new ce29e9f0c8 Merge pull request #398 from isururanawaka/metaschedular
63cb65f95d is described below

commit 63cb65f95dcd309d12079752f5c2d73cec822148
Author: Isuru Ranawaka <[email protected]>
AuthorDate: Thu Mar 9 22:01:51 2023 -0500

    Fix rescheduler
---
 .../rescheduler/ExponentialBackOffReScheduler.java | 40 ++++++++++++++++++++--
 .../api/service/handler/RegistryServerHandler.java |  2 ++
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git 
a/modules/airavata-metascheduler/process-scheduler/src/main/java/org/apache/airavata/metascheduler/process/scheduling/engine/rescheduler/ExponentialBackOffReScheduler.java
 
b/modules/airavata-metascheduler/process-scheduler/src/main/java/org/apache/airavata/metascheduler/process/scheduling/engine/rescheduler/ExponentialBackOffReScheduler.java
index 0143aed9fd..01fe73e35d 100644
--- 
a/modules/airavata-metascheduler/process-scheduler/src/main/java/org/apache/airavata/metascheduler/process/scheduling/engine/rescheduler/ExponentialBackOffReScheduler.java
+++ 
b/modules/airavata-metascheduler/process-scheduler/src/main/java/org/apache/airavata/metascheduler/process/scheduling/engine/rescheduler/ExponentialBackOffReScheduler.java
@@ -1,10 +1,13 @@
 package 
org.apache.airavata.metascheduler.process.scheduling.engine.rescheduler;
 
+import org.apache.airavata.common.exception.ApplicationSettingsException;
 import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.common.utils.ThriftClientPool;
 import 
org.apache.airavata.metascheduler.core.engine.ComputeResourceSelectionPolicy;
 import org.apache.airavata.metascheduler.core.engine.ReScheduler;
 import org.apache.airavata.metascheduler.core.utils.Utils;
+import org.apache.airavata.model.application.io.InputDataObjectType;
+import org.apache.airavata.model.error.ExperimentNotFoundException;
 import org.apache.airavata.model.experiment.ExperimentModel;
 import org.apache.airavata.model.process.ProcessModel;
 import 
org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel;
@@ -12,6 +15,8 @@ import org.apache.airavata.model.status.ProcessState;
 import org.apache.airavata.model.status.ProcessStatus;
 import org.apache.airavata.registry.api.RegistryService;
 import org.apache.airavata.registry.api.RegistryService.Client;
+import org.apache.airavata.registry.api.exception.RegistryServiceException;
+import org.apache.thrift.TException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -42,8 +47,7 @@ public class ExponentialBackOffReScheduler implements 
ReScheduler {
                         selectComputeResource(processModel.getProcessId());
 
                 if (computationalResourceSchedulingModel.isPresent()) {
-                    
processModel.setProcessResourceSchedule(computationalResourceSchedulingModel.get());
-                    client.updateProcess(processModel, 
processModel.getProcessId());
+                    
updateResourceSchedulingModel(processModel,experimentModel,client);
                     
Utils.updateProcessStatusAndPublishStatus(ProcessState.DEQUEUING, 
processModel.getProcessId(),
                             processModel.getExperimentId(),
                             experimentModel.getGatewayId());
@@ -69,6 +73,7 @@ public class ExponentialBackOffReScheduler implements 
ReScheduler {
                     double scanningInterval = 
ServerSettings.getMetaschedulerScanningInterval();
 
                     if (currentTime >= (pastValue + value * scanningInterval * 
1000)) {
+                        
updateResourceSchedulingModel(processModel,experimentModel,client);
                         
Utils.saveAndPublishProcessStatus(ProcessState.DEQUEUING, 
processModel.getProcessId(),
                                 processModel.getExperimentId(),
                                 experimentModel.getGatewayId());
@@ -104,4 +109,35 @@ public class ExponentialBackOffReScheduler implements 
ReScheduler {
         return fib(n - 1) + fib(n - 2);
     }
 
+
+    private void updateResourceSchedulingModel(ProcessModel processModel, 
ExperimentModel experimentModel,
+                                               RegistryService.Client 
registryClient) throws
+            TException, 
ExperimentNotFoundException,ApplicationSettingsException, 
ClassNotFoundException, IllegalAccessException, InstantiationException, 
RegistryServiceException {
+        String selectionPolicyClass = 
ServerSettings.getComputeResourceSelectionPolicyClass();
+        ComputeResourceSelectionPolicy policy = 
(ComputeResourceSelectionPolicy) Class.forName(selectionPolicyClass)
+                .newInstance();
+
+        Optional<ComputationalResourceSchedulingModel> 
computationalResourceSchedulingModel = policy.
+                selectComputeResource(processModel.getProcessId());
+
+        if (computationalResourceSchedulingModel.isPresent()) {
+            ComputationalResourceSchedulingModel resourceSchedulingModel = 
computationalResourceSchedulingModel.get();
+            List<InputDataObjectType> inputDataObjectTypeList = 
experimentModel.getExperimentInputs();
+            inputDataObjectTypeList.forEach(obj -> {
+                if (obj.getName().equals("Wall_Time")) {
+                    obj.setValue("-walltime=" + 
resourceSchedulingModel.getWallTimeLimit());
+                }
+                if (obj.getName().equals("Parallel_Group_Count")) {
+                    obj.setValue("-mgroupcount=" + 
resourceSchedulingModel.getMGroupCount());
+                }
+            });
+
+            experimentModel.setExperimentInputs(inputDataObjectTypeList);
+            processModel.setProcessResourceSchedule(resourceSchedulingModel);
+            
processModel.setComputeResourceId(resourceSchedulingModel.getResourceHostId());
+
+            registryClient.updateProcess(processModel, 
processModel.getProcessId());
+            registryClient.updateExperiment(processModel.getExperimentId(), 
experimentModel);
+        }
+    }
 }
diff --git 
a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
 
b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
index 8dadd0d831..2f4a682f88 100644
--- 
a/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
+++ 
b/modules/registry/registry-server/registry-api-service/src/main/java/org/apache/airavata/registry/api/service/handler/RegistryServerHandler.java
@@ -4860,6 +4860,8 @@ public class RegistryServerHandler implements 
RegistryService.Iface {
                 return optionalQueueStatusModel.get();
             } else {
                 QueueStatusModel queueStatusModel = new QueueStatusModel();
+                queueStatusModel.setHostName(hostName);
+                queueStatusModel.setQueueName(queueName);
                 queueStatusModel.setQueueUp(false);
                 return  queueStatusModel;
             }

Reply via email to