Fix Stderr memory leak when cleaning pipe (#6)

This commit is contained in:
Eyal Shalev
2021-05-31 15:37:11 +03:00
committed by GitHub
parent c766df8bf1
commit da3f8a8ba8
7 changed files with 128 additions and 94 deletions

View File

@@ -33,15 +33,14 @@ func Example() {
for {
select {
case msg := <-p.Stdout():
fmt.Printf("Recived STDOUT message: %s\n", *msg)
fmt.Printf("Received STDOUT message: %s\n", *msg)
case msg := <-p.Stderr():
fmt.Printf("Recived STDERR message: %s\n", *msg)
fmt.Printf("Received STDERR message: %s\n", *msg)
case event := <-events:
switch event.Code {
case "ProcessStart":
fmt.Printf("Recived event: %s\n", event.Code)
default:
fmt.Printf("Recived event: %s - %s\n", event.Code, event.Message)
if event.Code == "ProcessStart" || event.Message == "" {
fmt.Printf("Received event: %s\n", event.Code)
} else {
fmt.Printf("Received event: %s - %s\n", event.Code, event.Message)
}
case <-p.DoneNotifier():
fmt.Println("Closing loop we are done...")
@@ -58,32 +57,32 @@ func Example() {
<-exit
// Output:
// Recived event: ProcessStart
// Recived STDOUT message: STDOUT MESSAGE
// Recived STDERR message: STDERR MESSAGE
// Recived event: ProcessDone - exit status 0
// Recived event: StoppingHeartbeatMonitoring - Stop signal received.
// Recived event: Sleep - Sleeping for 1s before respwaning instance.
// Recived event: ProcessRespawn - Trying to respawn instance.
// Recived event: ProcessStart
// Recived STDOUT message: STDOUT MESSAGE
// Recived STDERR message: STDERR MESSAGE
// Recived event: ProcessDone - exit status 0
// Recived event: StoppingHeartbeatMonitoring - Stop signal received.
// Recived event: Sleep - Sleeping for 1s before respwaning instance.
// Recived event: ProcessRespawn - Trying to respawn instance.
// Recived event: ProcessStart
// Recived STDOUT message: STDOUT MESSAGE
// Recived STDERR message: STDERR MESSAGE
// Recived event: ProcessDone - exit status 0
// Recived event: StoppingHeartbeatMonitoring - Stop signal received.
// Recived event: Sleep - Sleeping for 1s before respwaning instance.
// Recived event: ProcessRespawn - Trying to respawn instance.
// Recived event: ProcessStart
// Recived STDOUT message: STDOUT MESSAGE
// Recived STDERR message: STDERR MESSAGE
// Recived event: ProcessDone - exit status 0
// Recived event: StoppingHeartbeatMonitoring - Stop signal received.
// Recived event: RespawnError - Max number of respawns reached.
// Received event: ProcessStart
// Received STDOUT message: STDOUT MESSAGE
// Received STDERR message: STDERR MESSAGE
// Received event: ProcessDone - exit status 0
// Received event: StoppingHeartbeatMonitoring - Stop signal received.
// Received event: Sleep - Sleeping for 1s before respwaning instance.
// Received event: ProcessRespawn - Trying to respawn instance.
// Received event: ProcessStart
// Received STDOUT message: STDOUT MESSAGE
// Received STDERR message: STDERR MESSAGE
// Received event: ProcessDone - exit status 0
// Received event: StoppingHeartbeatMonitoring - Stop signal received.
// Received event: Sleep - Sleeping for 1s before respwaning instance.
// Received event: ProcessRespawn - Trying to respawn instance.
// Received event: ProcessStart
// Received STDOUT message: STDOUT MESSAGE
// Received STDERR message: STDERR MESSAGE
// Received event: ProcessDone - exit status 0
// Received event: StoppingHeartbeatMonitoring - Stop signal received.
// Received event: Sleep - Sleeping for 1s before respwaning instance.
// Received event: ProcessRespawn - Trying to respawn instance.
// Received event: ProcessStart
// Received STDOUT message: STDOUT MESSAGE
// Received STDERR message: STDERR MESSAGE
// Received event: ProcessDone - exit status 0
// Received event: StoppingHeartbeatMonitoring - Stop signal received.
// Received event: RespawnError - Max number of respawns reached.
// Closing loop we are done...
}