From cb580f83eb5db5b26b045921f5d58485aa57710f Mon Sep 17 00:00:00 2001 From: Stuart Axelbrooke Date: Thu, 16 Oct 2025 19:27:25 -0700 Subject: [PATCH] lay groundwork for log line parsing --- databuild/data_deps.rs | 21 +++++++++++++++++++++ databuild/databuild.proto | 3 +++ databuild/event_transforms.rs | 2 +- databuild/job_run.rs | 12 ++++++------ databuild/lib.rs | 1 + 5 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 databuild/data_deps.rs diff --git a/databuild/data_deps.rs b/databuild/data_deps.rs new file mode 100644 index 0000000..4bc9b6e --- /dev/null +++ b/databuild/data_deps.rs @@ -0,0 +1,21 @@ +use crate::JobRunMissingDeps; + +pub struct LogLine(String); + +const DATABUILD_JSON: &str = "DATABUILD_JSON:"; +const DATABUILD_JSON_LEN: usize = DATABUILD_JSON.len(); + +impl From for Option { + fn from(value: LogLine) -> Self { + line_matches(&value.0).and_then(json_to_missing_deps) + } +} + +fn line_matches(line: &str) -> Option<&str> { + line.trim().strip_prefix(DATABUILD_JSON) +} + +fn json_to_missing_deps(line: &str) -> Option { + todo!() +} + diff --git a/databuild/databuild.proto b/databuild/databuild.proto index 2dc8353..26b9d36 100644 --- a/databuild/databuild.proto +++ b/databuild/databuild.proto @@ -86,6 +86,9 @@ message JobRunMissingDepsEventV1 { string job_run_id = 1; repeated MissingDeps missing_deps = 2; } +message JobRunMissingDeps { + repeated MissingDeps missing_deps = 2; +} message MissingDeps { // The list of partition refs that are prevented from building by these missing deps (can be just 1) repeated PartitionRef impacted = 1; diff --git a/databuild/event_transforms.rs b/databuild/event_transforms.rs index 59d34dc..d3bfd1b 100644 --- a/databuild/event_transforms.rs +++ b/databuild/event_transforms.rs @@ -1,6 +1,6 @@ +use crate::data_build_event::Event; use crate::util::current_timestamp; use crate::{event_source, EventSource, JobRunStatus, JobRunStatusCode, ManuallyTriggeredEvent, PartitionRef, PartitionStatus, PartitionStatusCode, WantCancelEventV1, WantCreateEventV1, WantDetail, WantStatus, WantStatusCode}; -use crate::data_build_event::Event; impl From<&WantCreateEventV1> for WantDetail { fn from(e: &WantCreateEventV1) -> Self { diff --git a/databuild/job_run.rs b/databuild/job_run.rs index c975286..3dd4f14 100644 --- a/databuild/job_run.rs +++ b/databuild/job_run.rs @@ -1,9 +1,9 @@ -use std::collections::HashMap; -use std::marker::PhantomData; use crate::data_build_event::Event; -use crate::{JobRunHeartbeatEventV1, JobRunStatus, JobRunStatusCode, JobRunSuccessEventV1, JobRunFailureEventV1, JobRunCancelEventV1, EventSource}; +use crate::{EventSource, JobRunCancelEventV1, JobRunFailureEventV1, JobRunStatus, JobRunSuccessEventV1}; +use std::collections::HashMap; use std::error::Error; use std::io::{BufRead, BufReader}; +use std::marker::PhantomData; use std::process::{Child, Command, Stdio}; use uuid::Uuid; @@ -314,10 +314,10 @@ pub struct JobRunPollResult { } mod tests { - use std::collections::HashMap; use crate::data_build_event::Event; - use crate::job_run::{JobRunBackend, JobRunVisitResult, NotStartedJobRun, SubProcessBackend}; - use crate::{ManuallyTriggeredEvent}; + use crate::job_run::{JobRunBackend, JobRunVisitResult, SubProcessBackend}; + use crate::ManuallyTriggeredEvent; + use std::collections::HashMap; fn test_helper_path() -> String { std::env::var("TEST_SRCDIR") diff --git a/databuild/lib.rs b/databuild/lib.rs index 259f1e3..6639e42 100644 --- a/databuild/lib.rs +++ b/databuild/lib.rs @@ -6,6 +6,7 @@ mod util; mod build_state; mod event_transforms; mod event_defaults; +mod data_deps; // Include generated protobuf code include!("databuild.rs");