|
1 | 1 | use anyhow::{anyhow, Result};
|
2 | 2 | use arrayvec::ArrayVec;
|
3 | 3 | use itertools::Itertools;
|
4 |
| -use log::{error, info, warn}; |
| 4 | +use log::{error, info}; |
5 | 5 | use std::fmt::{Debug, Display};
|
6 | 6 | use std::string::String;
|
7 | 7 | use std::sync::Arc;
|
@@ -179,17 +179,17 @@ impl<T: Model> PredictService<T> {
|
179 | 179 | //initialize the latest version array
|
180 | 180 | let mut cur_versions = vec!["".to_owned(); MODEL_SPECS.len()];
|
181 | 181 | loop {
|
182 |
| - let config = utils::read_config(&meta_file).unwrap_or_else(|e| { |
183 |
| - warn!("config file {} not found due to: {}", meta_file, e); |
184 |
| - Value::Null |
185 |
| - }); |
186 | 182 | info!("***polling for models***"); //nice deliminter
|
187 |
| - info!("config:{}", config); |
188 | 183 | if let Some(ref cli) = ARGS.modelsync_cli {
|
189 | 184 | if let Err(e) = call_external_modelsync(cli, &cur_versions).await {
|
190 | 185 | error!("model sync cli running error:{}", e)
|
191 | 186 | }
|
192 | 187 | }
|
| 188 | + let config = utils::read_config(&meta_file).unwrap_or_else(|e| { |
| 189 | + info!("config file {} not found due to: {}", meta_file, e); |
| 190 | + Value::Null |
| 191 | + }); |
| 192 | + info!("config:{}", config); |
193 | 193 | for (idx, cur_version) in cur_versions.iter_mut().enumerate() {
|
194 | 194 | let model_dir = &ARGS.model_dir[idx];
|
195 | 195 | PredictService::scan_load_latest_model_from_model_dir(
|
@@ -229,26 +229,32 @@ impl<T: Model> PredictService<T> {
|
229 | 229 | let no_more_msg = match msg {
|
230 | 230 | Ok(PredictMessage::Predict(model_spec_at, version, val, resp, ts)) => {
|
231 | 231 | if let Some(model_predictors) = all_model_predictors.get_mut(model_spec_at) {
|
232 |
| - match version { |
233 |
| - None => model_predictors[0].push(val, resp, ts), |
234 |
| - Some(the_version) => match model_predictors |
235 |
| - .iter_mut() |
236 |
| - .find(|x| x.model.version() == the_version) |
237 |
| - { |
238 |
| - None => resp |
239 |
| - .send(PredictResult::ModelVersionNotFound( |
240 |
| - model_spec_at, |
241 |
| - the_version, |
242 |
| - )) |
243 |
| - .unwrap_or_else(|e| { |
244 |
| - error!("cannot send back version error: {:?}", e) |
245 |
| - }), |
246 |
| - Some(predictor) => predictor.push(val, resp, ts), |
247 |
| - }, |
| 232 | + if model_predictors.is_empty() { |
| 233 | + resp.send(PredictResult::ModelNotReady(model_spec_at)) |
| 234 | + .unwrap_or_else(|e| error!("cannot send back model not ready error: {:?}", e)); |
| 235 | + } |
| 236 | + else { |
| 237 | + match version { |
| 238 | + None => model_predictors[0].push(val, resp, ts), |
| 239 | + Some(the_version) => match model_predictors |
| 240 | + .iter_mut() |
| 241 | + .find(|x| x.model.version() == the_version) |
| 242 | + { |
| 243 | + None => resp |
| 244 | + .send(PredictResult::ModelVersionNotFound( |
| 245 | + model_spec_at, |
| 246 | + the_version, |
| 247 | + )) |
| 248 | + .unwrap_or_else(|e| { |
| 249 | + error!("cannot send back version error: {:?}", e) |
| 250 | + }), |
| 251 | + Some(predictor) => predictor.push(val, resp, ts), |
| 252 | + }, |
| 253 | + } |
248 | 254 | }
|
249 | 255 | } else {
|
250 | 256 | resp.send(PredictResult::ModelNotFound(model_spec_at))
|
251 |
| - .unwrap_or_else(|e| error!("cannot send back model error: {:?}", e)) |
| 257 | + .unwrap_or_else(|e| error!("cannot send back model not found error: {:?}", e)) |
252 | 258 | }
|
253 | 259 | MPSC_CHANNEL_SIZE.dec();
|
254 | 260 | false
|
|
0 commit comments