@@ -59,7 +59,7 @@ pub struct StorageMetadata {
59
59
pub deployment_id : uid:: Uid ,
60
60
pub users : Vec < User > ,
61
61
pub streams : Vec < String > ,
62
- pub server_mode : String ,
62
+ pub server_mode : Mode ,
63
63
#[ serde( default ) ]
64
64
pub roles : HashMap < String , Vec < DefaultPrivilege > > ,
65
65
#[ serde( default ) ]
@@ -93,7 +93,7 @@ impl StorageMetadata {
93
93
staging : CONFIG . staging_dir ( ) . to_path_buf ( ) ,
94
94
storage : CONFIG . storage ( ) . get_endpoint ( ) ,
95
95
deployment_id : uid:: gen ( ) ,
96
- server_mode : CONFIG . parseable . mode . to_string ( ) ,
96
+ server_mode : CONFIG . parseable . mode ,
97
97
users : Vec :: new ( ) ,
98
98
streams : Vec :: new ( ) ,
99
99
roles : HashMap :: default ( ) ,
@@ -140,8 +140,7 @@ pub async fn resolve_parseable_metadata(
140
140
// overwrite staging anyways so that it matches remote in case of any divergence
141
141
overwrite_staging = true ;
142
142
if CONFIG . parseable . mode == Mode :: All {
143
- standalone_after_distributed ( Mode :: from_string ( & metadata. server_mode ) . expect ( "mode should be valid here" ) )
144
- ?;
143
+ standalone_after_distributed ( metadata. server_mode ) ?;
145
144
}
146
145
Ok ( metadata)
147
146
} ,
@@ -151,10 +150,7 @@ pub async fn resolve_parseable_metadata(
151
150
EnvChange :: NewStaging ( mut metadata) => {
152
151
// if server is started in ingest mode,we need to make sure that query mode has been started
153
152
// i.e the metadata is updated to reflect the server mode = Query
154
- if Mode :: from_string ( & metadata. server_mode )
155
- . map_err ( ObjectStorageError :: Custom )
156
- ?
157
- == Mode :: All && CONFIG . parseable . mode == Mode :: Ingest {
153
+ if metadata. server_mode == Mode :: All && CONFIG . parseable . mode == Mode :: Ingest {
158
154
Err ( "Starting Ingest Mode is not allowed, Since Query Server has not been started yet" )
159
155
} else {
160
156
create_dir_all ( CONFIG . staging_dir ( ) ) ?;
@@ -165,21 +161,21 @@ pub async fn resolve_parseable_metadata(
165
161
// because staging dir has changed.
166
162
match CONFIG . parseable . mode {
167
163
Mode :: All => {
168
- standalone_after_distributed ( Mode :: from_string ( & metadata. server_mode ) . expect ( "mode should be valid at here" ) )
164
+ standalone_after_distributed ( metadata. server_mode )
169
165
. map_err ( |err| {
170
166
ObjectStorageError :: Custom ( err. to_string ( ) )
171
167
} ) ?;
172
168
overwrite_remote = true ;
173
169
} ,
174
170
Mode :: Query => {
175
171
overwrite_remote = true ;
176
- metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
172
+ metadata. server_mode = CONFIG . parseable . mode ;
177
173
metadata. staging = CONFIG . staging_dir ( ) . to_path_buf ( ) ;
178
174
} ,
179
175
Mode :: Ingest => {
180
176
// if ingest server is started fetch the metadata from remote
181
177
// update the server mode for local metadata
182
- metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
178
+ metadata. server_mode = CONFIG . parseable . mode ;
183
179
metadata. staging = CONFIG . staging_dir ( ) . to_path_buf ( ) ;
184
180
} ,
185
181
}
@@ -207,7 +203,7 @@ pub async fn resolve_parseable_metadata(
207
203
ObjectStorageError :: UnhandledError ( err)
208
204
} ) ?;
209
205
210
- metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
206
+ metadata. server_mode = CONFIG . parseable . mode ;
211
207
if overwrite_remote {
212
208
put_remote_metadata ( & metadata) . await ?;
213
209
}
@@ -227,8 +223,7 @@ fn determine_environment(
227
223
( Some ( staging) , Some ( remote) ) => {
228
224
// if both staging and remote have same deployment id but different server modes
229
225
if staging. deployment_id == remote. deployment_id
230
- && Mode :: from_string ( & remote. server_mode ) . expect ( "server mode is valid here" )
231
- == Mode :: All
226
+ && remote. server_mode == Mode :: All
232
227
&& ( CONFIG . parseable . mode == Mode :: Query || CONFIG . parseable . mode == Mode :: Ingest )
233
228
{
234
229
EnvChange :: NewStaging ( remote)
@@ -292,7 +287,7 @@ pub async fn put_remote_metadata(metadata: &StorageMetadata) -> Result<(), Objec
292
287
293
288
pub fn put_staging_metadata ( meta : & StorageMetadata ) -> io:: Result < ( ) > {
294
289
let mut staging_metadata = meta. clone ( ) ;
295
- staging_metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
290
+ staging_metadata. server_mode = CONFIG . parseable . mode ;
296
291
staging_metadata. staging = CONFIG . staging_dir ( ) . to_path_buf ( ) ;
297
292
let path = CONFIG . staging_dir ( ) . join ( PARSEABLE_METADATA_FILE_NAME ) ;
298
293
let mut file = OpenOptions :: new ( )
0 commit comments