Skip to content

Commit

Permalink
fix: bug with repeated alias for service [NET-434] (#1536)
Browse files Browse the repository at this point in the history
  • Loading branch information
justprosh committed Mar 31, 2023
1 parent 3884374 commit ff455be
Show file tree
Hide file tree
Showing 5 changed files with 210 additions and 157 deletions.
6 changes: 0 additions & 6 deletions particle-modules/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,6 @@ pub enum ModuleError {
err: toml::ser::Error,
blueprint: Blueprint,
},
#[error("Error serializing persisted service config to toml: {err} {config:?}")]
SerializePersistedService {
#[source]
err: toml::ser::Error,
config: Box<dyn Debug + Send + Sync>,
},
#[error("Error saving config to {path:?}: {err}")]
WriteConfig {
path: PathBuf,
Expand Down
52 changes: 18 additions & 34 deletions particle-services/src/app_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,11 @@
*/

use crate::error::ServiceError;
use crate::persistence::{persist_service, PersistedService};
use crate::{Result, VIRTUAL_PARTICLE_VAULT_PREFIX};

use fluence_app_service::{
AppService, AppServiceConfig, MarineConfig, MarineWASIConfig, ModuleDescriptor,
};
use fluence_libp2p::PeerId;
use particle_modules::ModuleRepository;
use peer_metrics::ServicesMetrics;
use server_config::ServicesConfig;
Expand All @@ -34,43 +32,29 @@ pub fn create_app_service(
modules: &ModuleRepository,
blueprint_id: String,
service_id: String,
aliases: Vec<String>,
owner_id: PeerId,
worker_id: PeerId,
metrics: Option<&ServicesMetrics>,
) -> Result<AppService> {
try {
let mut modules_config = modules.resolve_blueprint(&blueprint_id)?;
modules_config
.iter_mut()
.for_each(|module| inject_vault(&config.particles_vault_dir, module));
let mut modules_config = modules.resolve_blueprint(&blueprint_id)?;
modules_config
.iter_mut()
.for_each(|module| inject_vault(&config.particles_vault_dir, module));

if let Some(metrics) = metrics.as_ref() {
metrics.observe_service_config(config.max_heap_size.as_u64(), &modules_config);
}

let modules = AppServiceConfig {
service_working_dir: config.workdir.join(&service_id),
service_base_dir: config.workdir,
marine_config: MarineConfig {
modules_dir: Some(config.modules_dir),
modules_config,
default_modules_config: None,
},
};

log::debug!("Creating service {}, envs: {:?}", service_id, config.envs);

let service = AppService::new(modules, service_id.clone(), config.envs)
.map_err(ServiceError::Engine)?;
if let Some(metrics) = metrics.as_ref() {
metrics.observe_service_config(config.max_heap_size.as_u64(), &modules_config);
}

// Save created service to disk, so it is recreated on restart
let persisted =
PersistedService::new(service_id, blueprint_id, aliases, owner_id, worker_id);
persist_service(&config.services_dir, persisted)?;
let modules = AppServiceConfig {
service_working_dir: config.workdir.join(&service_id),
service_base_dir: config.workdir,
marine_config: MarineConfig {
modules_dir: Some(config.modules_dir),
modules_config,
default_modules_config: None,
},
};

service
}
log::debug!("Creating service {}, envs: {:?}", service_id, config.envs);
AppService::new(modules, service_id, config.envs).map_err(ServiceError::Engine)
}

/// Map `vault_dir` to `/tmp/vault` inside the service.
Expand Down
Loading

0 comments on commit ff455be

Please sign in to comment.