diff --git a/crates/bin/docs_rs_builder/.sqlx/query-f011aefb83cbd26e7e83edbb3d280c554a9e2a64f0e7953c1e52939b24ccdafa.json b/.sqlx/query-45430d90ec9c871622a0b4d85da622930ec24b54edba59a4cdd0581ef9ce1ede.json similarity index 75% rename from crates/bin/docs_rs_builder/.sqlx/query-f011aefb83cbd26e7e83edbb3d280c554a9e2a64f0e7953c1e52939b24ccdafa.json rename to .sqlx/query-45430d90ec9c871622a0b4d85da622930ec24b54edba59a4cdd0581ef9ce1ede.json index d52fe3ac5..b4228a578 100644 --- a/crates/bin/docs_rs_builder/.sqlx/query-f011aefb83cbd26e7e83edbb3d280c554a9e2a64f0e7953c1e52939b24ccdafa.json +++ b/.sqlx/query-45430d90ec9c871622a0b4d85da622930ec24b54edba59a4cdd0581ef9ce1ede.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n r.rustdoc_status,\n r.default_target,\n r.doc_targets,\n r.archive_storage,\n r.source_size as \"source_size!\",\n cov.total_items,\n b.id as build_id,\n b.build_status::TEXT as build_status,\n b.docsrs_version,\n b.rustc_version,\n b.documentation_size\n FROM\n crates as c\n INNER JOIN releases AS r ON c.id = r.crate_id\n INNER JOIN builds as b ON r.id = b.rid\n LEFT OUTER JOIN doc_coverage AS cov ON r.id = cov.release_id\n WHERE\n c.name = $1 AND\n r.version = $2", + "query": "SELECT\n r.rustdoc_status,\n r.default_target,\n r.doc_targets,\n r.archive_storage,\n r.source_size as \"source_size!\",\n cov.total_items,\n b.id as build_id,\n b.build_status::TEXT as build_status,\n b.docsrs_version,\n b.rustc_version,\n b.documentation_size,\n b.memory_peak\n FROM\n crates as c\n INNER JOIN releases AS r ON c.id = r.crate_id\n INNER JOIN builds as b ON r.id = b.rid\n LEFT OUTER JOIN doc_coverage AS cov ON r.id = cov.release_id\n WHERE\n c.name = $1 AND\n r.version = $2", "describe": { "columns": [ { @@ -57,6 +57,11 @@ "ordinal": 10, "name": "documentation_size", "type_info": "Int8" + }, + { + "ordinal": 11, + "name": "memory_peak", + "type_info": "Int8" } ], "parameters": { @@ -76,8 +81,9 @@ null, true, true, + true, true ] }, - "hash": "f011aefb83cbd26e7e83edbb3d280c554a9e2a64f0e7953c1e52939b24ccdafa" + "hash": "45430d90ec9c871622a0b4d85da622930ec24b54edba59a4cdd0581ef9ce1ede" } diff --git a/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json similarity index 80% rename from .sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json rename to .sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json index ed2bfe3aa..53108f498 100644 --- a/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ b/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -30,6 +30,7 @@ "Int8", "Date", "Text", + "Int8", "Int4" ] }, @@ -37,5 +38,5 @@ false ] }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" } diff --git a/Cargo.lock b/Cargo.lock index 1ce176263..2d59002fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -262,7 +262,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -273,7 +273,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -1337,7 +1337,7 @@ version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] @@ -2565,7 +2565,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -4794,7 +4794,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.3", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -5058,7 +5058,7 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde_core", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -5602,7 +5602,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -6539,7 +6539,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2 0.6.3", + "socket2 0.5.10", "thiserror 2.0.18", "tokio", "tracing", @@ -6577,7 +6577,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.3", + "socket2 0.5.10", "tracing", "windows-sys 0.60.2", ] @@ -6989,7 +6989,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -7046,7 +7046,7 @@ dependencies = [ "security-framework", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -7075,9 +7075,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rustwide" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab59e80e2a33a40593e509eeb811b5f8a7f2c575cd1a2ace806e8b3a79cfb9c9" +checksum = "7b91bb263a28b24abbbe4fbac9fa152daf5b3ed127f09eb9cf36aa2a0e82d14f" dependencies = [ "anyhow", "attohttpc", @@ -7654,7 +7654,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -8072,7 +8072,7 @@ dependencies = [ "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -8983,7 +8983,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.48.0", ] [[package]] diff --git a/crates/bin/docs_rs_builder/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/cratesfyi/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json similarity index 80% rename from crates/bin/docs_rs_builder/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json rename to crates/bin/cratesfyi/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json index ed2bfe3aa..53108f498 100644 --- a/crates/bin/docs_rs_builder/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ b/crates/bin/cratesfyi/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -30,6 +30,7 @@ "Int8", "Date", "Text", + "Int8", "Int4" ] }, @@ -37,5 +38,5 @@ false ] }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" } diff --git a/crates/bin/cratesfyi/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/docs_rs_admin/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json similarity index 80% rename from crates/bin/cratesfyi/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json rename to crates/bin/docs_rs_admin/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json index ed2bfe3aa..53108f498 100644 --- a/crates/bin/cratesfyi/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ b/crates/bin/docs_rs_admin/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -30,6 +30,7 @@ "Int8", "Date", "Text", + "Int8", "Int4" ] }, @@ -37,5 +38,5 @@ false ] }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" } diff --git a/.sqlx/query-f011aefb83cbd26e7e83edbb3d280c554a9e2a64f0e7953c1e52939b24ccdafa.json b/crates/bin/docs_rs_builder/.sqlx/query-45430d90ec9c871622a0b4d85da622930ec24b54edba59a4cdd0581ef9ce1ede.json similarity index 75% rename from .sqlx/query-f011aefb83cbd26e7e83edbb3d280c554a9e2a64f0e7953c1e52939b24ccdafa.json rename to crates/bin/docs_rs_builder/.sqlx/query-45430d90ec9c871622a0b4d85da622930ec24b54edba59a4cdd0581ef9ce1ede.json index d52fe3ac5..b4228a578 100644 --- a/.sqlx/query-f011aefb83cbd26e7e83edbb3d280c554a9e2a64f0e7953c1e52939b24ccdafa.json +++ b/crates/bin/docs_rs_builder/.sqlx/query-45430d90ec9c871622a0b4d85da622930ec24b54edba59a4cdd0581ef9ce1ede.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n r.rustdoc_status,\n r.default_target,\n r.doc_targets,\n r.archive_storage,\n r.source_size as \"source_size!\",\n cov.total_items,\n b.id as build_id,\n b.build_status::TEXT as build_status,\n b.docsrs_version,\n b.rustc_version,\n b.documentation_size\n FROM\n crates as c\n INNER JOIN releases AS r ON c.id = r.crate_id\n INNER JOIN builds as b ON r.id = b.rid\n LEFT OUTER JOIN doc_coverage AS cov ON r.id = cov.release_id\n WHERE\n c.name = $1 AND\n r.version = $2", + "query": "SELECT\n r.rustdoc_status,\n r.default_target,\n r.doc_targets,\n r.archive_storage,\n r.source_size as \"source_size!\",\n cov.total_items,\n b.id as build_id,\n b.build_status::TEXT as build_status,\n b.docsrs_version,\n b.rustc_version,\n b.documentation_size,\n b.memory_peak\n FROM\n crates as c\n INNER JOIN releases AS r ON c.id = r.crate_id\n INNER JOIN builds as b ON r.id = b.rid\n LEFT OUTER JOIN doc_coverage AS cov ON r.id = cov.release_id\n WHERE\n c.name = $1 AND\n r.version = $2", "describe": { "columns": [ { @@ -57,6 +57,11 @@ "ordinal": 10, "name": "documentation_size", "type_info": "Int8" + }, + { + "ordinal": 11, + "name": "memory_peak", + "type_info": "Int8" } ], "parameters": { @@ -76,8 +81,9 @@ null, true, true, + true, true ] }, - "hash": "f011aefb83cbd26e7e83edbb3d280c554a9e2a64f0e7953c1e52939b24ccdafa" + "hash": "45430d90ec9c871622a0b4d85da622930ec24b54edba59a4cdd0581ef9ce1ede" } diff --git a/crates/bin/docs_rs_admin/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/docs_rs_builder/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json similarity index 80% rename from crates/bin/docs_rs_admin/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json rename to crates/bin/docs_rs_builder/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json index ed2bfe3aa..53108f498 100644 --- a/crates/bin/docs_rs_admin/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ b/crates/bin/docs_rs_builder/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", "describe": { "columns": [ { @@ -30,6 +30,7 @@ "Int8", "Date", "Text", + "Int8", "Int4" ] }, @@ -37,5 +38,5 @@ false ] }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" } diff --git a/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs b/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs index 8d4c50842..3ebe436e0 100644 --- a/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs +++ b/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs @@ -36,7 +36,7 @@ use docsrs_metadata::{BuildTargets, DEFAULT_TARGETS, HOST_TARGET, Metadata}; use regex::Regex; use rustwide::{ AlternativeRegistry, Build, Crate, Toolchain, Workspace, WorkspaceBuilder, - cmd::{Command, CommandError, SandboxBuilder, SandboxImage}, + cmd::{Command, CommandError, ProcessStatistics, SandboxBuilder, SandboxImage}, logging::{self, LogStorage}, toolchain::ToolchainError, }; @@ -714,6 +714,8 @@ impl RustwideBuilder { .is_dir(); } + let mut aggregated_build_stats = res.stats.clone(); + let mut target_build_logs = HashMap::new(); let documentation_size = if has_docs { debug!("adding documentation for the default target to the database"); @@ -743,7 +745,9 @@ impl RustwideBuilder { collect_metrics, )?; target_build_logs.insert(target, target_res.build_log); + aggregated_build_stats.merge_mut(target_res.stats); } + let (file_list, new_alg) = self.runtime.block_on( self.storage.store_all_in_archive( @@ -771,6 +775,7 @@ impl RustwideBuilder { BuildStatus::Failure }, documentation_size, + aggregated_build_stats.memory_peak, res.result.build_error.as_ref() ))?; @@ -963,7 +968,7 @@ impl RustwideBuilder { build: &Build, metadata: &Metadata, limits: &Limits, - ) -> Result<()> { + ) -> Result { let rustdoc_flags = vec!["--output-format".to_string(), "json".to_string()]; let mut storage = LogStorage::new(log::LevelFilter::Info); @@ -974,7 +979,6 @@ impl RustwideBuilder { self.prepare_command(build, target, metadata, limits, rustdoc_flags, false) .and_then(|command| command.run().map_err(Into::into)) }); - let successful = result.is_ok(); { let _span = info_span!("store_json_build_logs").entered(); @@ -984,11 +988,11 @@ impl RustwideBuilder { .context("storing build log on S3")?; } - if !successful { + let Ok(stats) = result else { // this is a normal build error and will be visible in the uploaded build logs. // We don't need the Err variant here. - return Ok(()); - } + return Ok(ProcessStatistics::default()); + }; let json_dir = if metadata.proc_macro { assert!( @@ -1050,7 +1054,7 @@ impl RustwideBuilder { } } - Ok(()) + Ok(stats) } #[instrument(skip(self, build))] @@ -1060,7 +1064,7 @@ impl RustwideBuilder { build: &Build, metadata: &Metadata, limits: &Limits, - ) -> Result> { + ) -> Result<(ProcessStatistics, Option)> { let rustdoc_flags = vec![ "--output-format".to_string(), "json".to_string(), @@ -1074,7 +1078,8 @@ impl RustwideBuilder { items_with_examples: 0, }; - self.prepare_command(build, target, metadata, limits, rustdoc_flags, false)? + let stats = self + .prepare_command(build, target, metadata, limits, rustdoc_flags, false)? .process_lines(&mut |line, _| { if line.starts_with('{') && line.ends_with('}') { match doc_coverage::parse_line(line) { @@ -1086,13 +1091,14 @@ impl RustwideBuilder { .log_output(true) .run()?; - Ok( + Ok(( + stats, if coverage.total_items == 0 && coverage.documented_items == 0 { None } else { Some(coverage) }, - ) + )) } #[instrument(skip(self, build))] @@ -1132,19 +1138,26 @@ impl RustwideBuilder { let mut storage = LogStorage::new(log::LevelFilter::Info); storage.set_max_size(limits.max_log_size()); + let mut aggregated_build_stats = ProcessStatistics::default(); + // we have to run coverage before the doc-build because currently it // deletes the doc-target folder. // https://github.com/rust-lang/cargo/issues/9447 - let doc_coverage = match self.get_coverage(target, build, metadata, limits) { - Ok(cov) => cov, - Err(err) => { - info!("error when trying to get coverage: {}", err); - info!("continuing anyways."); - None - } - }; + let (coverage_stats, doc_coverage) = + match self.get_coverage(target, build, metadata, limits) { + Ok((stats, cov)) => (stats, cov), + Err(err) => { + info!( + ?err, + "error when trying to get coverage, continuing anyways.", + ); + (ProcessStatistics::default(), None) + } + }; - if let Err(err) = self.execute_json_build( + aggregated_build_stats.merge_mut(coverage_stats); + + let json_stats = match self.execute_json_build( build_id, name, version, @@ -1154,15 +1167,23 @@ impl RustwideBuilder { metadata, limits, ) { - // FIXME: this is temporary. Theoretically all `Err` things coming out - // of the method should be retryable, so we could juse use `?` here. - // But since this is new, I want to be carful and first see what kind of - // errors we are seeing here. - error!( - ?err, - "internal error when trying to generate rustdoc JSON output" - ); - } + Ok(stats) => stats, + Err(err) => { + // FIXME: this is temporary. Theoretically all `Err` things coming out + // of the method should be retryable, so we could juse use `?` here. + // But since this is new, I want to be carful and first see what kind of + // errors we are seeing here. + error!( + ?err, + "internal error when trying to generate rustdoc JSON output" + ); + // at some point we also want to have stats for failed commands, but + // rustwide doesn't return them yet. + ProcessStatistics::default() + } + }; + + aggregated_build_stats.merge_mut(json_stats); let result = { let _span = info_span!("cargo_build", target = %target, is_default_target).entered(); @@ -1210,6 +1231,10 @@ impl RustwideBuilder { std::fs::rename(old_dir, new_dir)?; } + let main_build_stats = result.as_ref().ok().cloned().unwrap_or_default(); + + aggregated_build_stats.merge_mut(main_build_stats); + Ok(FullBuildResult { result: BuildResult { rustc_version: self.rustc_version()?, @@ -1220,6 +1245,7 @@ impl RustwideBuilder { cargo_metadata, build_log: storage.to_string(), target: target.to_string(), + stats: aggregated_build_stats, }) } @@ -1352,6 +1378,7 @@ struct FullBuildResult { cargo_metadata: CargoMetadata, doc_coverage: Option, build_log: String, + stats: ProcessStatistics, } impl FullBuildResult { @@ -1480,7 +1507,8 @@ mod tests { b.build_status::TEXT as build_status, b.docsrs_version, b.rustc_version, - b.documentation_size + b.documentation_size, + b.memory_peak FROM crates as c INNER JOIN releases AS r ON c.id = r.crate_id @@ -1506,6 +1534,7 @@ mod tests { assert_eq!(row.build_status.unwrap(), "success"); assert!(row.source_size > 0); assert!(row.documentation_size.unwrap() > 0); + assert!(row.memory_peak.unwrap() > 10 * 1024 * 1024); // 10 MiB, in my test it was > 100 MiB let mut targets: Vec = row .doc_targets @@ -1745,6 +1774,7 @@ mod tests { "other-version", BuildStatus::Success, None, + None, None::<&SimpleBuildError>, ) .await?; diff --git a/crates/bin/docs_rs_import_release/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/docs_rs_import_release/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/bin/docs_rs_import_release/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/bin/docs_rs_import_release/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/bin/docs_rs_import_release/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/bin/docs_rs_import_release/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/bin/docs_rs_import_release/src/import.rs b/crates/bin/docs_rs_import_release/src/import.rs index 9a545a43a..a94ceb2df 100644 --- a/crates/bin/docs_rs_import_release/src/import.rs +++ b/crates/bin/docs_rs_import_release/src/import.rs @@ -251,6 +251,7 @@ async fn import_test_release_inner( BUILD_VERSION, BuildStatus::Success, Some(documentation_size), + None, None::<&SimpleBuildError>, ) .await?; diff --git a/crates/bin/docs_rs_watcher/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/docs_rs_watcher/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/bin/docs_rs_watcher/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/bin/docs_rs_watcher/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/bin/docs_rs_watcher/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/bin/docs_rs_watcher/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/bin/docs_rs_web/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/bin/docs_rs_web/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/bin/docs_rs_web/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/bin/docs_rs_web/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/bin/docs_rs_web/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/bin/docs_rs_web/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/bin/docs_rs_web/src/handlers/releases.rs b/crates/bin/docs_rs_web/src/handlers/releases.rs index 2ea92f704..ca19a053c 100644 --- a/crates/bin/docs_rs_web/src/handlers/releases.rs +++ b/crates/bin/docs_rs_web/src/handlers/releases.rs @@ -861,6 +861,7 @@ mod tests { "docs.rs 4.0.0", BuildStatus::Success, None, + None, None::<&SimpleBuildError>, ) .await?; diff --git a/crates/lib/docs_rs_build_limits/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_build_limits/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/lib/docs_rs_build_limits/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/lib/docs_rs_build_limits/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/lib/docs_rs_build_limits/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/lib/docs_rs_build_limits/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/lib/docs_rs_build_queue/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_build_queue/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/lib/docs_rs_build_queue/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/lib/docs_rs_build_queue/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/lib/docs_rs_build_queue/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/lib/docs_rs_build_queue/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/lib/docs_rs_context/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_context/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/lib/docs_rs_context/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/lib/docs_rs_context/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/lib/docs_rs_context/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/lib/docs_rs_context/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/lib/docs_rs_database/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_database/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/lib/docs_rs_database/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/lib/docs_rs_database/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/lib/docs_rs_database/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/lib/docs_rs_database/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/lib/docs_rs_database/.sqlx/query-820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb.json b/crates/lib/docs_rs_database/.sqlx/query-9f268512c8fd05273bc1597e35c47aa4172844a87629e5f9e7acef0387308537.json similarity index 79% rename from crates/lib/docs_rs_database/.sqlx/query-820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb.json rename to crates/lib/docs_rs_database/.sqlx/query-9f268512c8fd05273bc1597e35c47aa4172844a87629e5f9e7acef0387308537.json index 6505a2dfb..1e7575b3f 100644 --- a/crates/lib/docs_rs_database/.sqlx/query-820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb.json +++ b/crates/lib/docs_rs_database/.sqlx/query-9f268512c8fd05273bc1597e35c47aa4172844a87629e5f9e7acef0387308537.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n documentation_size,\n errors,\n error_kind,\n rustc_nightly_date\n FROM builds\n WHERE id = $1", + "query": "SELECT\n rustc_version,\n docsrs_version,\n build_status as \"build_status: BuildStatus\",\n documentation_size,\n memory_peak,\n errors,\n error_kind,\n rustc_nightly_date\n FROM builds\n WHERE id = $1", "describe": { "columns": [ { @@ -36,16 +36,21 @@ }, { "ordinal": 4, + "name": "memory_peak", + "type_info": "Int8" + }, + { + "ordinal": 5, "name": "errors", "type_info": "Text" }, { - "ordinal": 5, + "ordinal": 6, "name": "error_kind", "type_info": "Text" }, { - "ordinal": 6, + "ordinal": 7, "name": "rustc_nightly_date", "type_info": "Date" } @@ -62,8 +67,9 @@ true, true, true, + true, true ] }, - "hash": "820a877a5fd6426b8429668d95dd9ef8eb67338b3e0e24818868a20684eb26bb" + "hash": "9f268512c8fd05273bc1597e35c47aa4172844a87629e5f9e7acef0387308537" } diff --git a/crates/lib/docs_rs_database/migrations/20260416031709_builds-memory-peak.down.sql b/crates/lib/docs_rs_database/migrations/20260416031709_builds-memory-peak.down.sql new file mode 100644 index 000000000..41c8ea349 --- /dev/null +++ b/crates/lib/docs_rs_database/migrations/20260416031709_builds-memory-peak.down.sql @@ -0,0 +1,2 @@ +DROP INDEX builds_memory_peak_idx; +ALTER TABLE builds DROP COLUMN memory_peak; diff --git a/crates/lib/docs_rs_database/migrations/20260416031709_builds-memory-peak.up.sql b/crates/lib/docs_rs_database/migrations/20260416031709_builds-memory-peak.up.sql new file mode 100644 index 000000000..fdeba825d --- /dev/null +++ b/crates/lib/docs_rs_database/migrations/20260416031709_builds-memory-peak.up.sql @@ -0,0 +1,2 @@ +ALTER TABLE builds ADD COLUMN memory_peak BIGINT; +CREATE INDEX builds_memory_peak_idx ON builds USING btree (memory_peak) ; diff --git a/crates/lib/docs_rs_database/src/releases.rs b/crates/lib/docs_rs_database/src/releases.rs index edd018532..6c78cbc26 100644 --- a/crates/lib/docs_rs_database/src/releases.rs +++ b/crates/lib/docs_rs_database/src/releases.rs @@ -220,6 +220,7 @@ pub async fn add_doc_coverage( } /// Adds a build into database +#[allow(clippy::too_many_arguments)] #[instrument(skip(conn))] pub async fn finish_build( conn: &mut sqlx::PgConnection, @@ -228,6 +229,7 @@ pub async fn finish_build( docsrs_version: &str, build_status: BuildStatus, documentation_size: Option, + memory_peak: Option, build_error: Option<&E>, ) -> Result<()> where @@ -261,9 +263,10 @@ where documentation_size = $6, rustc_nightly_date = $7, build_finished = NOW(), - error_kind = $8 + error_kind = $8, + memory_peak = $9 WHERE - id = $9 + id = $10 RETURNING rid as "rid: ReleaseId" "#, rustc_version, docsrs_version, @@ -273,6 +276,7 @@ where documentation_size.map(|v| v as i64), rustc_date, build_error.map(|err| err.kind()), + memory_peak.map(|v| v as i64), build_id as _, ) .fetch_one(&mut *conn) @@ -751,6 +755,7 @@ mod test { "docsrs_version", BuildStatus::Success, None, + None, None::<&SimpleBuildError>, ) .await?; @@ -803,6 +808,7 @@ mod test { "docsrs_version", BuildStatus::Success, Some(42), + Some(23), None::<&SimpleBuildError>, ) .await?; @@ -813,6 +819,7 @@ mod test { docsrs_version, build_status as "build_status: BuildStatus", documentation_size, + memory_peak, errors, error_kind, rustc_nightly_date @@ -827,6 +834,7 @@ mod test { assert_eq!(row.docsrs_version, Some("docsrs_version".into())); assert_eq!(row.build_status, BuildStatus::Success); assert_eq!(row.documentation_size, Some(42)); + assert_eq!(row.memory_peak, Some(23)); assert!(row.rustc_nightly_date.is_none()); assert!(row.errors.is_none()); assert!(row.error_kind.is_none()); @@ -851,6 +859,7 @@ mod test { "docsrs_version", BuildStatus::Failure, None, + None, Some(&SimpleBuildError("error message".into())), ) .await?; diff --git a/crates/lib/docs_rs_repository_stats/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_repository_stats/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/lib/docs_rs_repository_stats/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/lib/docs_rs_repository_stats/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/lib/docs_rs_repository_stats/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/lib/docs_rs_repository_stats/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/lib/docs_rs_test_fakes/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json b/crates/lib/docs_rs_test_fakes/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json deleted file mode 100644 index ed2bfe3aa..000000000 --- a/crates/lib/docs_rs_test_fakes/.sqlx/query-5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8\n WHERE\n id = $9\n RETURNING rid as \"rid: ReleaseId\" ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "rid: ReleaseId", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Varchar", - "Varchar", - { - "Custom": { - "name": "build_status", - "kind": { - "Enum": [ - "in_progress", - "success", - "failure" - ] - } - } - }, - "Text", - "Text", - "Int8", - "Date", - "Text", - "Int4" - ] - }, - "nullable": [ - false - ] - }, - "hash": "5dfaa907320cdd1eb7575e1146cc2965768044997d7806bc7d61a858307cd947" -} diff --git a/crates/lib/docs_rs_test_fakes/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json b/crates/lib/docs_rs_test_fakes/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json new file mode 100644 index 000000000..53108f498 --- /dev/null +++ b/crates/lib/docs_rs_test_fakes/.sqlx/query-96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE builds\n SET\n rustc_version = $1,\n docsrs_version = $2,\n build_status = $3,\n build_server = $4,\n errors = $5,\n documentation_size = $6,\n rustc_nightly_date = $7,\n build_finished = NOW(),\n error_kind = $8,\n memory_peak = $9\n WHERE\n id = $10\n RETURNING rid as \"rid: ReleaseId\" ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "rid: ReleaseId", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Varchar", + "Varchar", + { + "Custom": { + "name": "build_status", + "kind": { + "Enum": [ + "in_progress", + "success", + "failure" + ] + } + } + }, + "Text", + "Text", + "Int8", + "Date", + "Text", + "Int8", + "Int4" + ] + }, + "nullable": [ + false + ] + }, + "hash": "96038b2acad7957be667de55421e59e078a8dd8972e65dc6223d94eecfcbf4ad" +} diff --git a/crates/lib/docs_rs_test_fakes/src/legacy.rs b/crates/lib/docs_rs_test_fakes/src/legacy.rs index 64a85fece..899ba4fd4 100644 --- a/crates/lib/docs_rs_test_fakes/src/legacy.rs +++ b/crates/lib/docs_rs_test_fakes/src/legacy.rs @@ -708,6 +708,7 @@ impl FakeBuild { &self.docsrs_version, self.build_status, Some(42), + Some(23), None::<&SimpleBuildError>, ) .await?;