Repository: incubator-htrace
Updated Branches:
  refs/heads/master c28fc60dc -> 2fc552c12


HTRACE-283. Heartbeater should wait for goroutine to finish on close (Masatake 
Iwasaki via cmccabe)


Project: http://git-wip-us.apache.org/repos/asf/incubator-htrace/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-htrace/commit/2fc552c1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-htrace/tree/2fc552c1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-htrace/diff/2fc552c1

Branch: refs/heads/master
Commit: 2fc552c12806d226b4863759baa5b2d971609c57
Parents: c28fc60
Author: Colin P. Mccabe <[email protected]>
Authored: Mon Oct 26 14:04:45 2015 -0700
Committer: Colin P. Mccabe <[email protected]>
Committed: Mon Oct 26 14:04:45 2015 -0700

----------------------------------------------------------------------
 htrace-htraced/go/src/org/apache/htrace/htraced/heartbeater.go | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-htrace/blob/2fc552c1/htrace-htraced/go/src/org/apache/htrace/htraced/heartbeater.go
----------------------------------------------------------------------
diff --git a/htrace-htraced/go/src/org/apache/htrace/htraced/heartbeater.go 
b/htrace-htraced/go/src/org/apache/htrace/htraced/heartbeater.go
index 140b50d..ea4b053 100644
--- a/htrace-htraced/go/src/org/apache/htrace/htraced/heartbeater.go
+++ b/htrace-htraced/go/src/org/apache/htrace/htraced/heartbeater.go
@@ -22,6 +22,7 @@ package main
 import (
        "org/apache/htrace/common"
        "time"
+       "sync"
 )
 
 type Heartbeater struct {
@@ -40,6 +41,8 @@ type Heartbeater struct {
        // Incoming requests to the heartbeater.  When this is closed, the
        // heartbeater will exit.
        req chan *HeartbeatTarget
+
+       wg sync.WaitGroup
 }
 
 type HeartbeatTarget struct {
@@ -62,6 +65,7 @@ func NewHeartbeater(name string, periodMs int64, lg 
*common.Logger) *Heartbeater
                targets:  make([]HeartbeatTarget, 0, 4),
                req:      make(chan *HeartbeatTarget),
        }
+       hb.wg.Add(1)
        go hb.run()
        return hb
 }
@@ -72,6 +76,7 @@ func (hb *Heartbeater) AddHeartbeatTarget(tgt 
*HeartbeatTarget) {
 
 func (hb *Heartbeater) Shutdown() {
        close(hb.req)
+       hb.wg.Wait()
 }
 
 func (hb *Heartbeater) String() string {
@@ -94,6 +99,7 @@ func (hb *Heartbeater) run() {
                        select {
                        case tgt, open := <-hb.req:
                                if !open {
+                                       defer hb.wg.Done()
                                        hb.lg.Debugf("%s: exiting.\n", 
hb.String())
                                        return
                                }

Reply via email to