equal
deleted
inserted
replaced
246 def is_running(name: String): Boolean = running.isDefinedAt(name) |
246 def is_running(name: String): Boolean = running.isDefinedAt(name) |
247 |
247 |
248 def stop_running(): Unit = |
248 def stop_running(): Unit = |
249 for (job <- running.valuesIterator; build <- job.build) build.cancel() |
249 for (job <- running.valuesIterator; build <- job.build) build.cancel() |
250 |
250 |
251 def finished_running(): List[Build_Job] = |
251 def finished_running(): List[(String, Build_Job)] = |
252 List.from( |
252 List.from( |
253 for (job <- running.valuesIterator; build <- job.build if build.is_finished) |
253 for (job <- running.valuesIterator; build <- job.build if build.is_finished) |
254 yield build) |
254 yield job.name -> build) |
255 |
255 |
256 def add_running(job: Job): State = |
256 def add_running(job: Job): State = |
257 copy(running = running + (job.name -> job)) |
257 copy(running = running + (job.name -> job)) |
258 |
258 |
259 def remove_running(name: String): State = |
259 def remove_running(name: String): State = |
991 } |
991 } |
992 |
992 |
993 |
993 |
994 /* build process roles */ |
994 /* build process roles */ |
995 |
995 |
|
996 final def is_session_name(job_name: String): Boolean = !Long_Name.is_qualified(job_name) |
|
997 |
996 final def start_build(): Unit = synchronized_database { |
998 final def start_build(): Unit = synchronized_database { |
997 for (db <- _database) { |
999 for (db <- _database) { |
998 Build_Process.Data.start_build(db, build_uuid, build_context.ml_platform, |
1000 Build_Process.Data.start_build(db, build_uuid, build_context.ml_platform, |
999 build_context.sessions_structure.session_prefs, progress.stopped) |
1001 build_context.sessions_structure.session_prefs, progress.stopped) |
1000 } |
1002 } |
1036 } |
1038 } |
1037 |
1039 |
1038 def start_job(): Boolean = synchronized_database { |
1040 def start_job(): Boolean = synchronized_database { |
1039 next_job(_state) match { |
1041 next_job(_state) match { |
1040 case Some(name) => |
1042 case Some(name) => |
1041 if (Build_Job.is_session_name(name)) { |
1043 if (is_session_name(name)) { |
1042 _state = start_session(_state, name) |
1044 _state = start_session(_state, name) |
1043 true |
1045 true |
1044 } |
1046 } |
1045 else error("Unsupported build job name " + quote(name)) |
1047 else error("Unsupported build job name " + quote(name)) |
1046 case None => false |
1048 case None => false |
1062 try { |
1064 try { |
1063 while (!finished()) { |
1065 while (!finished()) { |
1064 synchronized_database { |
1066 synchronized_database { |
1065 if (progress.stopped) _state.stop_running() |
1067 if (progress.stopped) _state.stop_running() |
1066 |
1068 |
1067 for (build <- _state.finished_running()) { |
1069 for ((job_name, build) <- _state.finished_running()) { |
1068 val job_name = build.job_name |
|
1069 val (process_result, output_shasum) = build.join |
1070 val (process_result, output_shasum) = build.join |
1070 _state = _state. |
1071 _state = _state. |
1071 remove_pending(job_name). |
1072 remove_pending(job_name). |
1072 remove_running(job_name). |
1073 remove_running(job_name). |
1073 make_result(job_name, process_result, output_shasum, node_info = build.node_info) |
1074 make_result(job_name, process_result, output_shasum, node_info = build.node_info) |