Skip to content

Commit 74cf16f

Browse files
committed
Turbopack: allow gzip compression on trace files, write to diagnostics folder
1 parent f9e2d1a commit 74cf16f

File tree

6 files changed

+53
-20
lines changed

6 files changed

+53
-20
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ dhat = { version = "0.3.2" }
367367
dunce = "1.0.3"
368368
either = "1.9.0"
369369
erased-serde = "0.4.5"
370+
flate2 = "1.0.28"
370371
futures = "0.3.31"
371372
futures-util = "0.3.31"
372373
futures-retry = "0.6.0"

crates/napi/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@ ignored = [
5555
]
5656

5757
[dependencies]
58-
anyhow = "1.0.66"
58+
anyhow = { workspace = true }
5959
console-subscriber = { workspace = true, optional = true }
6060
dhat = { workspace = true, optional = true }
6161
either = { workspace = true }
62+
flate2 = { workspace = true }
6263
futures-util = { workspace = true }
6364
owo-colors = { workspace = true }
6465
napi = { workspace = true }

crates/napi/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ DEALINGS IN THE SOFTWARE.
3030
//#![deny(clippy::all)]
3131
#![feature(arbitrary_self_types)]
3232
#![feature(arbitrary_self_types_pointers)]
33+
#![feature(iter_intersperse)]
3334

3435
#[macro_use]
3536
extern crate napi_derive;

crates/napi/src/next_api/project.rs

Lines changed: 47 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::{borrow::Cow, io::Write, path::PathBuf, sync::Arc, thread, time::Duration};
22

33
use anyhow::{Context, Result, anyhow, bail};
4+
use flate2::write::GzEncoder;
45
use futures_util::TryFutureExt;
56
use napi::{
67
Env, JsFunction, JsObject, Status,
@@ -363,21 +364,33 @@ pub fn project_new(
363364
}
364365

365366
if let Some(mut trace) = trace {
366-
// Trace presets
367-
match trace.as_str() {
368-
"overview" | "1" => {
369-
trace = TRACING_NEXT_OVERVIEW_TARGETS.join(",");
370-
}
371-
"next" => {
372-
trace = TRACING_NEXT_TARGETS.join(",");
373-
}
374-
"turbopack" => {
375-
trace = TRACING_NEXT_TURBOPACK_TARGETS.join(",");
376-
}
377-
"turbo-tasks" => {
378-
trace = TRACING_NEXT_TURBO_TASKS_TARGETS.join(",");
379-
}
380-
_ => {}
367+
trace = trace
368+
.split(",")
369+
.map(|item| {
370+
// Trace presets
371+
match item {
372+
"overview" | "1" => Cow::Owned(TRACING_NEXT_OVERVIEW_TARGETS.join(",")),
373+
"next" => Cow::Owned(TRACING_NEXT_TARGETS.join(",")),
374+
"turbopack" => Cow::Owned(TRACING_NEXT_TURBOPACK_TARGETS.join(",")),
375+
"turbo-tasks" => Cow::Owned(TRACING_NEXT_TURBO_TASKS_TARGETS.join(",")),
376+
_ => Cow::Borrowed(item),
377+
}
378+
})
379+
.intersperse_with(|| Cow::Borrowed(","))
380+
.collect::<String>();
381+
382+
enum Compression {
383+
None,
384+
GzipFast,
385+
GzipBest,
386+
}
387+
let mut compress = Compression::None;
388+
if trace.ends_with(",gz") {
389+
trace.drain(trace.len() - 3..);
390+
compress = Compression::GzipFast;
391+
} else if trace.ends_with(",gz-best") {
392+
trace.drain(trace.len() - 8..);
393+
compress = Compression::GzipBest;
381394
}
382395

383396
let subscriber = Registry::default();
@@ -396,9 +409,25 @@ pub fn project_new(
396409
std::fs::create_dir_all(&internal_dir)
397410
.context("Unable to create .next directory")
398411
.unwrap();
399-
let trace_file = internal_dir.join("trace-turbopack");
400-
let trace_writer = std::fs::File::create(trace_file.clone()).unwrap();
401-
let (trace_writer, trace_writer_guard) = TraceWriter::new(trace_writer);
412+
let (trace_writer, trace_writer_guard) = match compress {
413+
Compression::None => {
414+
let trace_file = internal_dir.join("diagnostics/trace-turbopack");
415+
let trace_writer = std::fs::File::create(trace_file.clone()).unwrap();
416+
TraceWriter::new(trace_writer)
417+
}
418+
Compression::GzipFast => {
419+
let trace_file = internal_dir.join("diagnostics/trace-turbopack.gz");
420+
let trace_writer = std::fs::File::create(trace_file.clone()).unwrap();
421+
let trace_writer = GzEncoder::new(trace_writer, flate2::Compression::fast());
422+
TraceWriter::new(trace_writer)
423+
}
424+
Compression::GzipBest => {
425+
let trace_file = internal_dir.join("diagnostics/trace-turbopack.gz");
426+
let trace_writer = std::fs::File::create(trace_file.clone()).unwrap();
427+
let trace_writer = GzEncoder::new(trace_writer, flate2::Compression::best());
428+
TraceWriter::new(trace_writer)
429+
}
430+
};
402431
let subscriber = subscriber.with(RawTraceLayer::new(trace_writer));
403432

404433
exit.on_exit(async move {

turbopack/crates/turbopack-trace-server/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ bench = false
1414
[dependencies]
1515
anyhow = { workspace = true, features = ["backtrace"] }
1616
either = { workspace = true }
17-
flate2 = { version = "1.0.28" }
17+
flate2 = { workspace = true }
1818
hashbrown = { workspace = true, features = ["raw"] }
1919
indexmap = { workspace = true, features = ["serde"] }
2020
itertools = { workspace = true }

0 commit comments

Comments
 (0)