Skip to content

Commit

Permalink
respond to more comments
Browse files Browse the repository at this point in the history
Signed-off-by: mwrock <matt@mattwrock.com>
  • Loading branch information
mwrock committed Sep 19, 2019
1 parent 3f06803 commit ff04e72
Showing 1 changed file with 22 additions and 17 deletions.
39 changes: 22 additions & 17 deletions components/sup/src/manager/service/pipe_hook_client.rs
@@ -1,5 +1,6 @@
use habitat_common::{error::{Error,
Result},
liveliness_checker,
outputln,
templating::package::Pkg};
use habitat_core::{env as henv,
Expand Down Expand Up @@ -78,7 +79,7 @@ impl PipeHookClient {
if let Err(err) = self.pipe_wait() {
debug!("Initiating Powershell named pipe server for {} {} hook. last err: {}",
service_group, self.hook_name, err);
self.init_server(service_group, pkg, svc_encrypted_password)?;
self.start_server(service_group, pkg, svc_encrypted_password)?;
}

// truncate log files before executing hook
Expand All @@ -103,16 +104,20 @@ impl PipeHookClient {
Ok(u32::from_ne_bytes(exit_buf))
}

fn pipe_ready(&self, poll: &Poll, readiness: Ready) -> Result<()> {
fn pipe_ready(&self, poll: &Poll, readiness: Ready) -> io::Result<bool> {
let mut events = Events::with_capacity(1024);
loop {
poll.poll(&mut events, None)?;
for event in &events {
if event.readiness().contains(readiness) {
return Ok(());
}
let loop_value = loop {
let checked_thread = liveliness_checker::mark_thread_alive();
let result =
poll.poll(&mut events, None)
.map(|_| events.iter().any(|e| e.readiness().contains(readiness)));
if let Ok(false) = result {
continue;
} else {
break checked_thread.unregister(result);
}
}
};
loop_value.into_result()
}

fn abs_pipe_name(&self) -> String { format!(r#"\\.\pipe\{}"#, self.pipe_name) }
Expand All @@ -130,11 +135,11 @@ impl PipeHookClient {
Ok((pipe, poll))
}

fn init_server<T>(&self,
service_group: &str,
pkg: &Pkg,
svc_encrypted_password: Option<T>)
-> Result<()>
fn start_server<T>(&self,
service_group: &str,
pkg: &Pkg,
svc_encrypted_password: Option<T>)
-> Result<()>
where T: ToString
{
let script_path = match henv::var(PIPE_SERVICE_ENVVAR) {
Expand Down Expand Up @@ -413,7 +418,7 @@ mod test {
}

#[test]
fn pipe_hook_client_init_server_terminates_failed_server() {
fn pipe_hook_client_start_server_terminates_failed_server() {
let tmpdir = TempDir::new().unwrap();
let path = tmpdir.path().join("fake-server.ps1");
create_with_content(&path,
Expand All @@ -438,7 +443,7 @@ mod test {
}

#[test]
fn pipe_hook_client_init_server_logs_stderr_of_failed_server() {
fn pipe_hook_client_start_server_logs_stderr_of_failed_server() {
let tmpdir = TempDir::new().unwrap();
let path = tmpdir.path().join("fake-server.ps1");
create_with_content(&path, "write-error 'I am not a real pipe server'");
Expand All @@ -460,7 +465,7 @@ mod test {
}

#[test]
fn pipe_hook_client_init_server_logs_stdout_of_failed_server() {
fn pipe_hook_client_start_server_logs_stdout_of_failed_server() {
let tmpdir = TempDir::new().unwrap();
let path = tmpdir.path().join("fake-server.ps1");
create_with_content(&path, "write-host 'I am not a real pipe server'");
Expand Down

0 comments on commit ff04e72

Please sign in to comment.