@@ -204,12 +204,13 @@ pub async fn resolve_parseable_metadata(
204
204
}
205
205
} ;
206
206
207
- let metadata = res. map_err ( |err| {
207
+ let mut metadata = res. map_err ( |err| {
208
208
let err = format ! ( "{}. {}" , err, JOIN_COMMUNITY ) ;
209
209
let err: Box < dyn std:: error:: Error + Send + Sync + ' static > = err. into ( ) ;
210
210
ObjectStorageError :: UnhandledError ( err)
211
211
} ) ?;
212
212
213
+ metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
213
214
if overwrite_remote {
214
215
put_remote_metadata ( & metadata) . await ?;
215
216
}
@@ -227,19 +228,19 @@ fn determine_environment(
227
228
) -> EnvChange {
228
229
match ( staging_metadata, remote_metadata) {
229
230
( Some ( staging) , Some ( remote) ) => {
230
- // if both staging and remote have same deployment id
231
- if staging. deployment_id == remote. deployment_id {
232
- EnvChange :: None ( remote)
233
- } else if Mode :: from_string ( & remote. server_mode ) . expect ( "server mode is valid here" )
234
- == Mode :: All
231
+ // if both staging and remote have same deployment id but different server modes
232
+ if staging. deployment_id == remote. deployment_id
233
+ && Mode :: from_string ( & remote. server_mode ) . expect ( "server mode is valid here" )
234
+ == Mode :: All
235
235
&& ( CONFIG . parseable . mode == Mode :: Query || CONFIG . parseable . mode == Mode :: Ingest )
236
236
{
237
- // if you are switching to distributed mode from standalone mode
238
- // it will create a new staging rather than a new remote
239
237
EnvChange :: NewStaging ( remote)
240
- } else {
241
- // it is a new remote
238
+ } else if staging . deployment_id != remote . deployment_id {
239
+ // if deployment id is different
242
240
EnvChange :: NewRemote
241
+ } else {
242
+ // if deployment id is same
243
+ EnvChange :: None ( remote)
243
244
}
244
245
}
245
246
( None , Some ( remote) ) => EnvChange :: NewStaging ( remote) ,
0 commit comments