This commit is contained in:
Adrian Heine 2017-03-30 13:54:40 +02:00
parent d5a3a85e9a
commit 1bb22db692
10 changed files with 248 additions and 16 deletions

View file

@ -68,6 +68,8 @@ impl<'a> NodeJsSystemdUserService<'a, Cow<'a, str>, String> {
let content = format!("[Service]
ExecStartPre=rm /var/tmp/{1}-{2}.socket
# This only works if the path is a directory
WorkingDirectory={0}
ExecStart=/usr/bin/nodejs {0}
Restart=always
Environment=NODE_ENV=production
@ -138,12 +140,27 @@ impl<'a, P, C> Symbol for NodeJsSystemdUserService<'a, P, C> where P: AsRef<str>
let file_name = format!("/var/tmp/{}-{}.socket", self.user_name, self.name);
// try!(self.command_runner.run_with_args("chmod", &["666", &file_name]));
sleep(Duration::from_millis(500));
let metadata = try!(fs::metadata(file_name.clone()));
let mut perms = metadata.permissions();
perms.set_mode(0o666);
try!(fs::set_permissions(file_name, perms));
let mut tries = 5;
loop {
let metadata = fs::metadata(file_name.clone());
match metadata {
Ok(metadata) => {
let mut perms = metadata.permissions();
perms.set_mode(0o666);
try!(fs::set_permissions(file_name, perms));
break;
},
Err(e) => {
if e.kind() == io::ErrorKind::NotFound {
tries -= 1;
if tries == 0 { return Err("Gave up waiting for socket to appear".to_string().into()); }
sleep(Duration::from_millis(500));
} else {
return Err(Box::new(e));
}
}
}
}
Ok(())
}