Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/Terrabuild/Core/Build.fs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ type TaskRequest =
type TaskStatus =
| Success of completionDate:DateTime
| Failure of completionDate:DateTime * message:string
| Pending

[<RequireQualifiedAccess>]
type NodeInfo = {
Expand Down Expand Up @@ -288,10 +289,9 @@ let run (options: ConfigOptions.Options) (cache: Cache.ICache) (api: Contracts.I
TaskRequest.Build, buildNode()


let scheduledNodes = Concurrent.ConcurrentDictionary<string, bool>()
let hub = Hub.Create(options.MaxConcurrency)
let rec schedule nodeId =
if scheduledNodes.TryAdd(nodeId, true) then
if nodeResults.TryAdd(nodeId, (TaskRequest.Build, TaskStatus.Pending)) then
let node = graph.Nodes[nodeId]
let nodeComputed = hub.GetSignal<DateTime> nodeId

Expand All @@ -312,7 +312,7 @@ let run (options: ConfigOptions.Options) (cache: Cache.ICache) (api: Contracts.I

let buildRequest, completionStatus = processNode maxCompletionChildren node
Log.Debug("{NodeId} completed request {Request} with status {Status}", node.Id, buildRequest, completionStatus)
nodeResults.TryAdd(node.Id, (buildRequest, completionStatus)) |> ignore
nodeResults[node.Id] <- (buildRequest, completionStatus)

match completionStatus with
| TaskStatus.Success completionDate ->
Expand All @@ -324,7 +324,7 @@ let run (options: ConfigOptions.Options) (cache: Cache.ICache) (api: Contracts.I
exn ->
Log.Fatal(exn, "{NodeId} unexpected failure while building", node.Id)

nodeResults.TryAdd(node.Id, (TaskRequest.Build, TaskStatus.Failure (DateTime.UtcNow, exn.Message))) |> ignore
nodeResults[node.Id] <- (TaskRequest.Build, TaskStatus.Failure (DateTime.UtcNow, exn.Message))
notification.NodeCompleted node TaskRequest.Build false

reraise()
Expand Down
9 changes: 6 additions & 3 deletions src/Terrabuild/Core/Logs.fs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ module Iconography =
let restore_ko = Ansi.Emojis.pretzel
let build_ok = Ansi.Emojis.green_checkmark
let build_ko = Ansi.Emojis.red_cross
let task_pending = Ansi.Emojis.bang_mark
let task_pending = Ansi.Emojis.construction
let task_unknown = Ansi.Emojis.bang_mark


let dumpLogs (logId: Guid) (options: ConfigOptions.Options) (cache: ICache) (graph: GraphDef.Graph) (summary: Build.Summary) =
Expand Down Expand Up @@ -35,7 +36,8 @@ let dumpLogs (logId: Guid) (options: ConfigOptions.Options) (cache: ICache) (gra
| Build.TaskRequest.Restore, Build.TaskStatus.Failure _ -> Iconography.restore_ko
| Build.TaskRequest.Build, Build.TaskStatus.Success _ -> Iconography.build_ok
| Build.TaskRequest.Build, Build.TaskStatus.Failure _ -> Iconography.build_ko
| _ -> Iconography.task_pending
| _ -> Iconography.task_pending
| _ -> Iconography.task_unknown

let dumpMarkdown (node: GraphDef.Node) =
let header =
Expand Down Expand Up @@ -213,14 +215,15 @@ let dumpLogs (logId: Guid) (options: ConfigOptions.Options) (cache: ICache) (gra
fun nodes -> options.LogTypes |> List.iter (dump nodes)

let sortedNodes =
graph.Nodes
summary.Nodes |> Map.map (fun nodeId _ -> graph.Nodes[nodeId])
|> Seq.map (fun (KeyValue(_, node)) -> node)
|> Seq.sortBy (fun node ->
match summary.Nodes |> Map.tryFind node.Id with
| Some nodeInfo ->
match nodeInfo.Status with
| Build.TaskStatus.Success completionDate -> completionDate
| Build.TaskStatus.Failure (completionDate, _) -> completionDate
| _ -> DateTime.MaxValue
| _ -> DateTime.MaxValue)
|> List.ofSeq

Expand Down