Skip to content

Commit

Permalink
better exit on error
Browse files Browse the repository at this point in the history
Update meilisearch-core/src/database.rs

Co-authored-by: Clément Renault <renault.cle@gmail.com>

Update meilisearch-core/src/database.rs

Co-authored-by: Clément Renault <renault.cle@gmail.com>
  • Loading branch information
MarinPostma and Kerollmops committed Jul 13, 2020
1 parent 6f0b693 commit 51d7c84
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 17 deletions.
8 changes: 4 additions & 4 deletions meilisearch-core/src/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -180,23 +180,23 @@ fn version_guard(path: &Path, create: bool) -> MResult<()> {
let version_minor = version.next().ok_or(Error::VersionMismatch("bad VERSION file".to_string()))?;

if version_major != current_version_major || version_minor != current_version_minor {
return Err(Error::VersionMismatch(format!("{}.{}.XX", version_major, version_major)));
return Err(Error::VersionMismatch(format!("{}.{}.XX", version_major, version_minor)));
}
}
Err(error) => {
match error.kind() {
ErrorKind::NotFound => {
if create {
// when no version file is found, and we've beem told to create one,
// create a new file wioth the current version in it.
// when no version file is found, and we've been told to create one,
// create a new file with the current version in it.
let mut version_file = File::create(&version_path)?;
version_file.write_all(format!("{}.{}.{}",
current_version_major,
current_version_minor,
current_version_patch).as_bytes())?;
} else {
// when no version file is found and we were not told to create one, this
// means that the version is inferior to the one this feature was added.
// means that the version is inferior to the one this feature was added in.
return Err(Error::VersionMismatch(format!("<0.12.0")));
}
}
Expand Down
6 changes: 5 additions & 1 deletion meilisearch-core/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,11 @@ impl fmt::Display for Error {
SchemaMissing => write!(f, "this index does not have a schema"),
SerdeJson(e) => write!(f, "serde json error; {}", e),
Serializer(e) => write!(f, "serializer error; {}", e),
VersionMismatch(version) => write!(f, "Cannot open database, expected Meilisearch version: {}", version),
VersionMismatch(version) => write!(f, "Cannot open database, expected MeiliSearch engine version: {}, currrent engine version: {}.{}.{}",
version,
env!("CARGO_PKG_VERSION_MAJOR"),
env!("CARGO_PKG_VERSION_MINOR"),
env!("CARGO_PKG_VERSION_PATCH")),
WordIndexMissing => write!(f, "this index does not have a word index"),
}
}
Expand Down
14 changes: 4 additions & 10 deletions meilisearch-http/src/data.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use std::error::Error;
use std::ops::Deref;
use std::sync::Arc;

use meilisearch_core::{Database, DatabaseOptions};
use sha2::Digest;
use sysinfo::Pid;
use log::error;

use crate::index_update_callback;
use crate::option::Opt;
Expand Down Expand Up @@ -56,7 +56,7 @@ impl ApiKeys {
}

impl Data {
pub fn new(opt: Opt) -> Data {
pub fn new(opt: Opt) -> Result<Data, Box<dyn Error>> {
let db_path = opt.db_path.clone();
let server_pid = sysinfo::get_current_pid().unwrap();

Expand All @@ -67,13 +67,7 @@ impl Data {

let http_payload_size_limit = opt.http_payload_size_limit;

let db = match Database::open_or_create(opt.db_path, db_opt) {
Ok(db) => Arc::new(db),
Err(e) => {
error!("{}", e);
std::process::exit(1);
}
};
let db = Arc::new(Database::open_or_create(opt.db_path, db_opt)?);

let mut api_keys = ApiKeys {
master: opt.master_key,
Expand All @@ -100,6 +94,6 @@ impl Data {
index_update_callback(&index_uid, &callback_context, status);
}));

data
Ok(data)
}
}
2 changes: 1 addition & 1 deletion meilisearch-http/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ async fn main() -> Result<(), MainError> {
_ => unreachable!(),
}

let data = Data::new(opt.clone());
let data = Data::new(opt.clone())?;

if !opt.no_analytics {
let analytics_data = data.clone();
Expand Down
2 changes: 1 addition & 1 deletion meilisearch-http/tests/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ impl Server {
..Opt::default()
};

let data = Data::new(opt.clone());
let data = Data::new(opt.clone()).unwrap();

Server {
uid: uid.to_string(),
Expand Down

0 comments on commit 51d7c84

Please sign in to comment.