equal
deleted
inserted
replaced
37 Map.from( |
37 Map.from( |
38 for ((name, (info, _)) <- build_graph.iterator) |
38 for ((name, (info, _)) <- build_graph.iterator) |
39 yield { |
39 yield { |
40 val deps = info.parent.toList |
40 val deps = info.parent.toList |
41 val ancestors = sessions_structure.build_requirements(deps) |
41 val ancestors = sessions_structure.build_requirements(deps) |
|
42 val sources_shasum = build_deps.sources_shasum(name) |
42 val session_context = |
43 val session_context = |
43 Build_Job.Session_Context.load( |
44 Build_Job.Session_Context.load( |
44 name, deps, ancestors, info.timeout, store, progress = progress) |
45 name, deps, ancestors, sources_shasum, info.timeout, store, progress = progress) |
45 name -> session_context |
46 name -> session_context |
46 }) |
47 }) |
47 |
48 |
48 val sessions_time = { |
49 val sessions_time = { |
49 val maximals = build_graph.maximals.toSet |
50 val maximals = build_graph.maximals.toSet |
101 val uuid: String |
102 val uuid: String |
102 ) { |
103 ) { |
103 def sessions_structure: Sessions.Structure = build_deps.sessions_structure |
104 def sessions_structure: Sessions.Structure = build_deps.sessions_structure |
104 |
105 |
105 def session_context(session: String): Build_Job.Session_Context = sessions(session) |
106 def session_context(session: String): Build_Job.Session_Context = sessions(session) |
|
107 |
|
108 def sources_shasum(session: String): SHA1.Shasum = session_context(session).sources_shasum |
106 |
109 |
107 def old_command_timings(session: String): List[Properties.T] = |
110 def old_command_timings(session: String): List[Properties.T] = |
108 sessions.get(session) match { |
111 sessions.get(session) match { |
109 case Some(session_context) => |
112 case Some(session_context) => |
110 Properties.uncompress(session_context.old_command_timings_blob, cache = store.cache) |
113 Properties.uncompress(session_context.old_command_timings_blob, cache = store.cache) |
568 case Some(build) => |
571 case Some(build) => |
569 val output_heap = store.find_heap_shasum(session_name) |
572 val output_heap = store.find_heap_shasum(session_name) |
570 val current = |
573 val current = |
571 !build_context.fresh_build && |
574 !build_context.fresh_build && |
572 build.ok && |
575 build.ok && |
573 build.sources == build_deps.sources_shasum(session_name) && |
576 build.sources == build_context.sources_shasum(session_name) && |
574 build.input_heaps == input_heaps && |
577 build.input_heaps == input_heaps && |
575 build.output_heap == output_heap && |
578 build.output_heap == output_heap && |
576 !(do_store && output_heap.is_empty) |
579 !(do_store && output_heap.is_empty) |
577 (current, output_heap) |
580 (current, output_heap) |
578 case None => (false, SHA1.no_shasum) |
581 case None => (false, SHA1.no_shasum) |
627 synchronized { |
630 synchronized { |
628 val (numa_node, state1) = _state.numa_next(build_context.numa_nodes) |
631 val (numa_node, state1) = _state.numa_next(build_context.numa_nodes) |
629 val node_info = Build_Job.Node_Info(build_context.hostname, numa_node) |
632 val node_info = Build_Job.Node_Info(build_context.hostname, numa_node) |
630 val job = |
633 val job = |
631 new Build_Job.Session_Job(build_context, session_background, session_heaps, |
634 new Build_Job.Session_Job(build_context, session_background, session_heaps, |
632 do_store, resources, build_deps.sources_shasum(session_name), input_heaps, node_info) |
635 do_store, resources, input_heaps, node_info) |
633 _state = state1.add_running(session_name, job) |
636 _state = state1.add_running(session_name, job) |
634 job |
637 job |
635 } |
638 } |
636 job.start() |
639 job.start() |
637 } |
640 } |