Skip to content

Commit f7b0fdc

Browse files
committed
Add maximum parallel download option to experiment
1 parent 8292d47 commit f7b0fdc

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/config.rs

+10
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ pub(crate) const DEFAULT_LOGSTORE_CAPACITY: NonZeroUsize = nonzero!(100);
5151
pub(crate) const DEFAULT_MIN_DOWNLOAD_RATE: Option<NonZero<usize>> = Some(nonzero!(10000));
5252
pub(crate) const DEFAULT_USAGE_RETENTION_DAYS: u64 = 30;
5353
pub(crate) const DEFAULT_EXPERIMENTAL_PARALLEL_HACK_ENABLED: bool = false;
54+
pub(crate) const DEFAULT_EXPERIMENTAL_PARALLEL_HACK_MAXPARALLEL: Option<NonZero<usize>> =
55+
Some(nonzero!(3));
5456
pub(crate) const DEFAULT_EXPERIMENTAL_PARALLEL_HACK_STATUSCODE: hyper::StatusCode =
5557
hyper::StatusCode::SERVICE_UNAVAILABLE;
5658
pub(crate) const DEFAULT_EXPERIMENTAL_PARALLEL_HACK_RETRYAFTER: NonZero<u16> = nonzero!(5);
@@ -292,6 +294,9 @@ pub(crate) struct Config {
292294
#[serde(default = "default_experimental_parallel_hack_enabled")]
293295
pub(crate) experimental_parallel_hack_enabled: bool,
294296

297+
#[serde(default = "default_experimental_parallel_hack_maxparallel")]
298+
pub(crate) experimental_parallel_hack_maxparallel: Option<NonZero<usize>>,
299+
295300
#[serde(
296301
default = "default_experimental_parallel_hack_statuscode",
297302
deserialize_with = "statuscode_from_u32"
@@ -531,6 +536,10 @@ const fn default_experimental_parallel_hack_enabled() -> bool {
531536
DEFAULT_EXPERIMENTAL_PARALLEL_HACK_ENABLED
532537
}
533538

539+
const fn default_experimental_parallel_hack_maxparallel() -> Option<NonZero<usize>> {
540+
DEFAULT_EXPERIMENTAL_PARALLEL_HACK_MAXPARALLEL
541+
}
542+
534543
const fn default_experimental_parallel_hack_statuscode() -> hyper::StatusCode {
535544
DEFAULT_EXPERIMENTAL_PARALLEL_HACK_STATUSCODE
536545
}
@@ -653,6 +662,7 @@ impl Config {
653662
logstore_capacity: DEFAULT_LOGSTORE_CAPACITY,
654663
min_download_rate: DEFAULT_MIN_DOWNLOAD_RATE,
655664
experimental_parallel_hack_enabled: DEFAULT_EXPERIMENTAL_PARALLEL_HACK_ENABLED,
665+
experimental_parallel_hack_maxparallel: DEFAULT_EXPERIMENTAL_PARALLEL_HACK_MAXPARALLEL,
656666
experimental_parallel_hack_statuscode: DEFAULT_EXPERIMENTAL_PARALLEL_HACK_STATUSCODE,
657667
experimental_parallel_hack_retryafter: DEFAULT_EXPERIMENTAL_PARALLEL_HACK_RETRYAFTER,
658668
experimental_parallel_hack_factor: DEFAULT_EXPERIMENTAL_PARALLEL_HACK_FACTOR,

src/main.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1991,6 +1991,9 @@ async fn serve_new_file(
19911991

19921992
if !is_volatile
19931993
&& gcfg.experimental_parallel_hack_enabled
1994+
&& gcfg
1995+
.experimental_parallel_hack_maxparallel
1996+
.is_none_or(|max_parallel| curr_downloads <= max_parallel.get())
19941997
&& gcfg
19951998
.experimental_parallel_hack_minsize
19961999
.is_some_and(|size| content_length.upper() > size)

0 commit comments

Comments
 (0)