~juju-qa/ubuntu/xenial/juju/2.0-rc2

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/apiserver/metricsender/metricsender.go

  • Committer: Nicholas Skaggs
  • Date: 2016-09-30 14:39:30 UTC
  • mfrom: (1.8.1)
  • Revision ID: nicholas.skaggs@canonical.com-20160930143930-vwwhrefh6ftckccy
import upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
}
24
24
 
25
25
var (
26
 
        defaultMaxBatchesPerSend              = 10
 
26
        defaultMaxBatchesPerSend              = 1000
27
27
        defaultSender            MetricSender = &HttpSender{}
28
28
)
29
29
 
30
 
func handleResponse(mm *state.MetricsManager, st ModelBackend, response wireformat.Response) {
 
30
func handleResponse(mm *state.MetricsManager, st ModelBackend, response wireformat.Response) int {
 
31
        var acknowledgedBatches int
31
32
        for _, envResp := range response.EnvResponses {
 
33
                acknowledgedBatches += len(envResp.AcknowledgedBatches)
32
34
                err := st.SetMetricBatchesSent(envResp.AcknowledgedBatches)
33
35
                if err != nil {
34
36
                        logger.Errorf("failed to set sent on metrics %v", err)
51
53
                        logger.Errorf("failed to set new grace period %v", err)
52
54
                }
53
55
        }
 
56
        return acknowledgedBatches
54
57
}
55
58
 
56
59
// SendMetrics will send any unsent metrics
100
103
                }
101
104
                if response != nil {
102
105
                        // TODO (mattyw) We are currently ignoring errors during response handling.
103
 
                        handleResponse(metricsManager, st, *response)
 
106
                        acknowledged := handleResponse(metricsManager, st, *response)
 
107
                        // Stop sending if there are no acknowledged batches.
 
108
                        if acknowledged == 0 {
 
109
                                logger.Debugf("got 0 acks, ending send loop")
 
110
                                break
 
111
                        }
104
112
                        if err := metricsManager.SetLastSuccessfulSend(clock.Now()); err != nil {
105
113
                                err = errors.Annotate(err, "failed to set successful send time")
106
114
                                logger.Warningf("%v", err)