@@ -204,12 +204,13 @@ pub async fn resolve_parseable_metadata(
204204 }
205205 } ;
206206
207- let metadata = res. map_err ( |err| {
207+ let mut metadata = res. map_err ( |err| {
208208 let err = format ! ( "{}. {}" , err, JOIN_COMMUNITY ) ;
209209 let err: Box < dyn std:: error:: Error + Send + Sync + ' static > = err. into ( ) ;
210210 ObjectStorageError :: UnhandledError ( err)
211211 } ) ?;
212212
213+ metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
213214 if overwrite_remote {
214215 put_remote_metadata ( & metadata) . await ?;
215216 }
@@ -227,19 +228,19 @@ fn determine_environment(
227228) -> EnvChange {
228229 match ( staging_metadata, remote_metadata) {
229230 ( 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
235235 && ( CONFIG . parseable . mode == Mode :: Query || CONFIG . parseable . mode == Mode :: Ingest )
236236 {
237- // if you are switching to distributed mode from standalone mode
238- // it will create a new staging rather than a new remote
239237 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
242240 EnvChange :: NewRemote
241+ } else {
242+ // if deployment id is same
243+ EnvChange :: None ( remote)
243244 }
244245 }
245246 ( None , Some ( remote) ) => EnvChange :: NewStaging ( remote) ,
0 commit comments