@@ -58,7 +58,7 @@ pub struct StorageMetadata {
58
58
pub deployment_id : uid:: Uid ,
59
59
pub users : Vec < User > ,
60
60
pub streams : Vec < String > ,
61
- pub server_mode : String ,
61
+ pub server_mode : Mode ,
62
62
#[ serde( default ) ]
63
63
pub roles : HashMap < String , Vec < DefaultPrivilege > > ,
64
64
#[ serde( default ) ]
@@ -73,7 +73,7 @@ impl Default for StorageMetadata {
73
73
staging : CONFIG . staging_dir ( ) . to_path_buf ( ) ,
74
74
storage : CONFIG . storage ( ) . get_endpoint ( ) ,
75
75
deployment_id : uid:: gen ( ) ,
76
- server_mode : CONFIG . parseable . mode . to_string ( ) ,
76
+ server_mode : CONFIG . parseable . mode ,
77
77
users : Vec :: new ( ) ,
78
78
streams : Vec :: new ( ) ,
79
79
roles : HashMap :: default ( ) ,
@@ -121,8 +121,7 @@ pub async fn resolve_parseable_metadata(
121
121
// overwrite staging anyways so that it matches remote in case of any divergence
122
122
overwrite_staging = true ;
123
123
if CONFIG . parseable . mode == Mode :: All {
124
- standalone_after_distributed ( Mode :: from_string ( & metadata. server_mode ) . expect ( "mode should be valid here" ) )
125
- ?;
124
+ standalone_after_distributed ( metadata. server_mode ) ?;
126
125
}
127
126
Ok ( metadata)
128
127
} ,
@@ -132,10 +131,7 @@ pub async fn resolve_parseable_metadata(
132
131
EnvChange :: NewStaging ( mut metadata) => {
133
132
// if server is started in ingest mode,we need to make sure that query mode has been started
134
133
// i.e the metadata is updated to reflect the server mode = Query
135
- if Mode :: from_string ( & metadata. server_mode )
136
- . map_err ( ObjectStorageError :: Custom )
137
- ?
138
- == Mode :: All && CONFIG . parseable . mode == Mode :: Ingest {
134
+ if metadata. server_mode == Mode :: All && CONFIG . parseable . mode == Mode :: Ingest {
139
135
Err ( "Starting Ingest Mode is not allowed, Since Query Server has not been started yet" )
140
136
} else {
141
137
create_dir_all ( CONFIG . staging_dir ( ) ) ?;
@@ -146,21 +142,21 @@ pub async fn resolve_parseable_metadata(
146
142
// because staging dir has changed.
147
143
match CONFIG . parseable . mode {
148
144
Mode :: All => {
149
- standalone_after_distributed ( Mode :: from_string ( & metadata. server_mode ) . expect ( "mode should be valid at here" ) )
145
+ standalone_after_distributed ( metadata. server_mode )
150
146
. map_err ( |err| {
151
147
ObjectStorageError :: Custom ( err. to_string ( ) )
152
148
} ) ?;
153
149
overwrite_remote = true ;
154
150
} ,
155
151
Mode :: Query => {
156
152
overwrite_remote = true ;
157
- metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
153
+ metadata. server_mode = CONFIG . parseable . mode ;
158
154
metadata. staging = CONFIG . staging_dir ( ) . to_path_buf ( ) ;
159
155
} ,
160
156
Mode :: Ingest => {
161
157
// if ingest server is started fetch the metadata from remote
162
158
// update the server mode for local metadata
163
- metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
159
+ metadata. server_mode = CONFIG . parseable . mode ;
164
160
metadata. staging = CONFIG . staging_dir ( ) . to_path_buf ( ) ;
165
161
} ,
166
162
}
@@ -188,7 +184,7 @@ pub async fn resolve_parseable_metadata(
188
184
ObjectStorageError :: UnhandledError ( err)
189
185
} ) ?;
190
186
191
- metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
187
+ metadata. server_mode = CONFIG . parseable . mode ;
192
188
if overwrite_remote {
193
189
put_remote_metadata ( & metadata) . await ?;
194
190
}
@@ -208,8 +204,7 @@ fn determine_environment(
208
204
( Some ( staging) , Some ( remote) ) => {
209
205
// if both staging and remote have same deployment id but different server modes
210
206
if staging. deployment_id == remote. deployment_id
211
- && Mode :: from_string ( & remote. server_mode ) . expect ( "server mode is valid here" )
212
- == Mode :: All
207
+ && remote. server_mode == Mode :: All
213
208
&& ( CONFIG . parseable . mode == Mode :: Query || CONFIG . parseable . mode == Mode :: Ingest )
214
209
{
215
210
EnvChange :: NewStaging ( remote)
@@ -273,7 +268,7 @@ pub async fn put_remote_metadata(metadata: &StorageMetadata) -> Result<(), Objec
273
268
274
269
pub fn put_staging_metadata ( meta : & StorageMetadata ) -> io:: Result < ( ) > {
275
270
let mut staging_metadata = meta. clone ( ) ;
276
- staging_metadata. server_mode = CONFIG . parseable . mode . to_string ( ) ;
271
+ staging_metadata. server_mode = CONFIG . parseable . mode ;
277
272
staging_metadata. staging = CONFIG . staging_dir ( ) . to_path_buf ( ) ;
278
273
let path = CONFIG . staging_dir ( ) . join ( PARSEABLE_METADATA_FILE_NAME ) ;
279
274
let mut file = OpenOptions :: new ( )
0 commit comments