@@ -30,6 +30,7 @@ use crate::{
30
30
pub enum FaultTolerantExecutionConfig {
31
31
/// Query-level fault tolerant execution. Retries entire queries on failure.
32
32
Query ( QueryRetryConfig ) ,
33
+
33
34
/// Task-level fault tolerant execution. Retries individual tasks on failure (requires exchange manager).
34
35
Task ( TaskRetryConfig ) ,
35
36
}
@@ -131,8 +132,10 @@ pub struct ExchangeManagerConfig {
131
132
pub enum ExchangeManagerBackend {
132
133
/// S3-compatible storage configuration.
133
134
S3 ( S3ExchangeConfig ) ,
135
+
134
136
/// HDFS-based exchange manager.
135
137
Hdfs ( HdfsExchangeConfig ) ,
138
+
136
139
/// Local filesystem storage (not recommended for production).
137
140
Local ( LocalExchangeConfig ) ,
138
141
}
@@ -142,18 +145,23 @@ pub enum ExchangeManagerBackend {
142
145
pub struct S3ExchangeConfig {
143
146
/// S3 bucket URIs for spooling data (e.g., s3://bucket1,s3://bucket2).
144
147
pub base_directories : Vec < String > ,
148
+
145
149
/// S3 connection configuration.
146
150
/// Learn more about S3 configuration in the [S3 concept docs](DOCS_BASE_URL_PLACEHOLDER/concepts/s3).
147
151
pub connection : stackable_operator:: crd:: s3:: v1alpha1:: InlineConnectionOrReference ,
152
+
148
153
/// IAM role to assume for S3 access.
149
154
#[ serde( skip_serializing_if = "Option::is_none" ) ]
150
155
pub iam_role : Option < String > ,
156
+
151
157
/// External ID for the IAM role trust policy.
152
158
#[ serde( skip_serializing_if = "Option::is_none" ) ]
153
159
pub external_id : Option < String > ,
160
+
154
161
/// Maximum number of times the S3 client should retry a request.
155
162
#[ serde( skip_serializing_if = "Option::is_none" ) ]
156
163
pub max_error_retries : Option < u32 > ,
164
+
157
165
/// Part data size for S3 multi-part upload.
158
166
#[ serde( skip_serializing_if = "Option::is_none" ) ]
159
167
pub upload_part_size : Option < String > ,
@@ -164,11 +172,14 @@ pub struct S3ExchangeConfig {
164
172
pub struct HdfsExchangeConfig {
165
173
/// HDFS URIs for spooling data.
166
174
pub base_directories : Vec < String > ,
175
+
167
176
/// HDFS connection configuration.
168
177
pub hdfs : HdfsConnection ,
178
+
169
179
/// Block data size for HDFS storage.
170
180
#[ serde( skip_serializing_if = "Option::is_none" ) ]
171
181
pub block_size : Option < String > ,
182
+
172
183
/// Skip directory scheme validation to support Hadoop-compatible file systems.
173
184
#[ serde( skip_serializing_if = "Option::is_none" ) ]
174
185
pub skip_directory_scheme_validation : Option < bool > ,
@@ -196,15 +207,20 @@ pub enum Error {
196
207
pub struct ResolvedFaultTolerantExecutionConfig {
197
208
/// Properties to add to config.properties
198
209
pub config_properties : BTreeMap < String , String > ,
210
+
199
211
/// Properties to add to exchange-manager.properties (if needed)
200
212
pub exchange_manager_properties : BTreeMap < String , String > ,
213
+
201
214
/// Volumes required for the configuration (e.g., for S3 credentials)
202
215
pub volumes : Vec < Volume > ,
216
+
203
217
/// Volume mounts required for the configuration
204
218
pub volume_mounts : Vec < VolumeMount > ,
219
+
205
220
/// Env-Vars that should be exported from files.
206
221
/// You can think of it like `export <key>="$(cat <value>)"`
207
222
pub load_env_from_files : BTreeMap < String , String > ,
223
+
208
224
/// Additional commands that need to be executed before starting Trino
209
225
pub init_container_extra_start_commands : Vec < String > ,
210
226
}
0 commit comments