feat: add secretKeyRef support for package registry and storage credentials (#8275)

* feat: add secretKeyRef support for package registry and storage credentials

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: update ee-repo-ref for test coverage commit

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: update ee-repo-ref to 716b350bce1730b302c66ea69df618fa40f2f16b

This commit updates the EE repository reference after PR #443 was merged in windmill-ee-private.

Previous ee-repo-ref: d8498f003af407853eb1e98673d86d1816dbfeae

New ee-repo-ref: 716b350bce1730b302c66ea69df618fa40f2f16b

Automated by sync-ee-ref workflow.

* fix: box::pin database executor futures to prevent stack overflow

The if-else chain for database languages (postgresql, mysql, bigquery,
snowflake, mssql, oracledb, duckdb, graphql, nativets) was awaiting
futures directly on the stack. With all features enabled, the combined
async state machine became too large for the default thread stack size,
causing stack overflow in test_workflow_as_code.

The match block for main languages already used Box::pin; this applies
the same pattern to the database language branches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
This commit is contained in:
Ruben Fiszel
2026-03-09 10:35:16 +00:00
committed by GitHub
parent 5b31dec048
commit 4287227e04
3 changed files with 29 additions and 29 deletions

View File

@@ -1 +1 @@
f9549c813b3dba5324ea9d1edacc8756a6d699bf
716b350bce1730b302c66ea69df618fa40f2f16b

View File

@@ -265,25 +265,25 @@ pub struct GlobalSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub instance_python_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pip_index_url: Option<String>,
pub pip_index_url: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pip_extra_index_url: Option<String>,
pub pip_extra_index_url: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub npm_config_registry: Option<String>,
pub npm_config_registry: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bunfig_install_scopes: Option<String>,
pub bunfig_install_scopes: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub npmrc: Option<String>,
pub npmrc: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nuget_config: Option<String>,
pub nuget_config: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maven_repos: Option<String>,
pub maven_repos: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ruby_repos: Option<String>,
pub ruby_repos: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub powershell_repo_url: Option<String>,
pub powershell_repo_url: Option<StringOrSecretRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub powershell_repo_pat: Option<String>,
pub powershell_repo_pat: Option<StringOrSecretRef>,
// Array settings
#[serde(skip_serializing_if = "Option::is_none")]

View File

@@ -3899,7 +3899,7 @@ pub async fn run_language_executor(
run_inline: bool,
) -> error::Result<Box<RawValue>> {
if language == Some(ScriptLang::Postgresql) {
return do_postgresql(
return Box::pin(do_postgresql(
job,
&client,
&code,
@@ -3911,7 +3911,7 @@ pub async fn run_language_executor(
occupancy_metrics,
parent_runnable_path,
run_inline,
)
))
.await;
} else if language == Some(ScriptLang::Mysql) {
#[cfg(not(feature = "mysql"))]
@@ -3926,7 +3926,7 @@ pub async fn run_language_executor(
"Inline execution is not yet supported for this language".to_string(),
));
}
return do_mysql(
return Box::pin(do_mysql(
job,
&client,
&code,
@@ -3937,7 +3937,7 @@ pub async fn run_language_executor(
column_order,
occupancy_metrics,
parent_runnable_path,
)
))
.await;
}
} else if language == Some(ScriptLang::Bigquery) {
@@ -3963,7 +3963,7 @@ pub async fn run_language_executor(
"Inline execution is not yet supported for this language".to_string(),
));
}
return do_bigquery(
return Box::pin(do_bigquery(
job,
&client,
&code,
@@ -3974,7 +3974,7 @@ pub async fn run_language_executor(
column_order,
occupancy_metrics,
parent_runnable_path,
)
))
.await;
}
} else if language == Some(ScriptLang::Snowflake) {
@@ -3992,7 +3992,7 @@ pub async fn run_language_executor(
"Inline execution is not yet supported for this language".to_string(),
));
}
return do_snowflake(
return Box::pin(do_snowflake(
job,
&client,
&code,
@@ -4003,7 +4003,7 @@ pub async fn run_language_executor(
column_order,
occupancy_metrics,
parent_runnable_path,
)
))
.await;
}
} else if language == Some(ScriptLang::Mssql) {
@@ -4029,7 +4029,7 @@ pub async fn run_language_executor(
"Inline execution is not yet supported for this language".to_string(),
));
}
return do_mssql(
return Box::pin(do_mssql(
job,
&client,
&code,
@@ -4040,7 +4040,7 @@ pub async fn run_language_executor(
occupancy_metrics,
job_dir,
parent_runnable_path,
)
))
.await;
}
} else if language == Some(ScriptLang::OracleDB) {
@@ -4066,7 +4066,7 @@ pub async fn run_language_executor(
"Inline execution is not yet supported for this language".to_string(),
));
}
return do_oracledb(
return Box::pin(do_oracledb(
job,
&client,
&code,
@@ -4077,7 +4077,7 @@ pub async fn run_language_executor(
column_order,
occupancy_metrics,
parent_runnable_path,
)
))
.await;
}
} else if language == Some(ScriptLang::DuckDb) {
@@ -4091,7 +4091,7 @@ pub async fn run_language_executor(
#[cfg(feature = "duckdb")]
{
return do_duckdb(
return Box::pin(do_duckdb(
job,
&client,
&code,
@@ -4103,7 +4103,7 @@ pub async fn run_language_executor(
occupancy_metrics,
parent_runnable_path,
run_inline,
)
))
.await;
}
} else if language == Some(ScriptLang::Graphql) {
@@ -4112,7 +4112,7 @@ pub async fn run_language_executor(
"Inline execution is not yet supported for this language".to_string(),
));
}
return do_graphql(
return Box::pin(do_graphql(
job,
&client,
&code,
@@ -4121,7 +4121,7 @@ pub async fn run_language_executor(
canceled_by,
worker_name,
occupancy_metrics,
)
))
.await;
} else if language == Some(ScriptLang::Nativets) {
if run_inline {
@@ -4148,7 +4148,7 @@ pub async fn run_language_executor(
.collect::<Vec<String>>()
.join("\n"));
let result = do_nativets(
let result = Box::pin(do_nativets(
job,
&client,
env_code,
@@ -4159,7 +4159,7 @@ pub async fn run_language_executor(
worker_name,
occupancy_metrics,
has_stream,
)
))
.await?;
return Ok(result);
}