"docs/git@developer.sourcefind.cn:OpenDAS/nni.git" did not exist on "bb8114a4a65145a1489436f98392007e12935ae9"
Unverified Commit e3332641 authored by SparkSnail's avatar SparkSnail Committed by GitHub
Browse files

Fix remote TrainingService bug, change forEach to "for of" (#564)

trial job could not be stopped in remote machine when experiment is stopped, because awit/async does not work normally in forEach, refer https://codeburst.io/javascript-async-await-with-foreach-b6ba62bbf404.
parent 949aacbd
...@@ -81,19 +81,19 @@ abstract class KubernetesTrainingService { ...@@ -81,19 +81,19 @@ abstract class KubernetesTrainingService {
} }
} }
public listTrialJobs(): Promise<TrialJobDetail[]> { public async listTrialJobs(): Promise<TrialJobDetail[]> {
const jobs: TrialJobDetail[] = []; const jobs: TrialJobDetail[] = [];
this.trialJobsMap.forEach(async (value: KubernetesTrialJobDetail, key: string) => { for (const [key, value] of this.trialJobsMap) {
if (value.form.jobType === 'TRIAL') { if (value.form.jobType === 'TRIAL') {
jobs.push(await this.getTrialJob(key)); jobs.push(await this.getTrialJob(key));
} }
}); };
return Promise.resolve(jobs); return Promise.resolve(jobs);
} }
public getTrialJob(trialJobId: string): Promise<TrialJobDetail> { public async getTrialJob(trialJobId: string): Promise<TrialJobDetail> {
const kubernetesTrialJob: TrialJobDetail | undefined = this.trialJobsMap.get(trialJobId); const kubernetesTrialJob: TrialJobDetail | undefined = this.trialJobsMap.get(trialJobId);
......
...@@ -104,16 +104,16 @@ class PAITrainingService implements TrainingService { ...@@ -104,16 +104,16 @@ class PAITrainingService implements TrainingService {
public async listTrialJobs(): Promise<TrialJobDetail[]> { public async listTrialJobs(): Promise<TrialJobDetail[]> {
const jobs: TrialJobDetail[] = []; const jobs: TrialJobDetail[] = [];
this.trialJobsMap.forEach(async (value: PAITrialJobDetail, key: string) => { for (const [key, value] of this.trialJobsMap) {
if (value.form.jobType === 'TRIAL') { if (value.form.jobType === 'TRIAL') {
jobs.push(await this.getTrialJob(key)); jobs.push(await this.getTrialJob(key));
} }
}); };
return Promise.resolve(jobs); return Promise.resolve(jobs);
} }
public getTrialJob(trialJobId: string): Promise<TrialJobDetail> { public async getTrialJob(trialJobId: string): Promise<TrialJobDetail> {
if(!this.paiClusterConfig) { if(!this.paiClusterConfig) {
throw new Error('PAI Cluster config is not initialized'); throw new Error('PAI Cluster config is not initialized');
} }
......
...@@ -110,15 +110,15 @@ class RemoteMachineTrainingService implements TrainingService { ...@@ -110,15 +110,15 @@ class RemoteMachineTrainingService implements TrainingService {
/** /**
* List submitted trial jobs * List submitted trial jobs
*/ */
public listTrialJobs(): Promise<TrialJobDetail[]> { public async listTrialJobs(): Promise<TrialJobDetail[]> {
const jobs: TrialJobDetail[] = []; const jobs: TrialJobDetail[] = [];
const deferred: Deferred<TrialJobDetail[]> = new Deferred<TrialJobDetail[]>(); const deferred: Deferred<TrialJobDetail[]> = new Deferred<TrialJobDetail[]>();
this.trialJobsMap.forEach(async (value: RemoteMachineTrialJobDetail, key: string) => { for (const [key, value] of this.trialJobsMap) {
if (value.form.jobType === 'TRIAL') { if (value.form.jobType === 'TRIAL') {
jobs.push(await this.getTrialJob(key)); jobs.push(await this.getTrialJob(key));
} }
}); };
deferred.resolve(jobs); deferred.resolve(jobs);
return deferred.promise; return deferred.promise;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment