summarylogtreecommitdiffstats
path: root/01-disable-telemetry.patch
diff options
context:
space:
mode:
authorFernando Barillas2019-04-27 16:06:20 -0700
committerFernando Barillas2019-04-27 16:06:26 -0700
commit3a5e582bb211933f18ab3436b3df3f8de45b35a9 (patch)
treedbd11f069e12aae3d6b8b7904b3033e9a4cfd2c9 /01-disable-telemetry.patch
parentd852d459e621aacbcdfabbfdae4738f0cc29a1c2 (diff)
downloadaur-3a5e582bb211933f18ab3436b3df3f8de45b35a9.tar.gz
1.0.0
* Patch now includes telemetry.go and collection.go in the same file
Diffstat (limited to '01-disable-telemetry.patch')
-rw-r--r--01-disable-telemetry.patch291
1 files changed, 0 insertions, 291 deletions
diff --git a/01-disable-telemetry.patch b/01-disable-telemetry.patch
deleted file mode 100644
index d4dd1e82eeee..000000000000
--- a/01-disable-telemetry.patch
+++ /dev/null
@@ -1,291 +0,0 @@
-diff --git a/telemetry/telemetry.go b/telemetry/telemetry.go
-index 59ab75b..dad7216 100644
---- a/telemetry/telemetry.go
-+++ b/telemetry/telemetry.go
-@@ -33,16 +33,7 @@
- package telemetry
-
- import (
-- "bytes"
-- "encoding/json"
-- "fmt"
-- "io/ioutil"
-- "log"
-- "math/rand"
- "net/http"
-- "runtime"
-- "strconv"
-- "strings"
- "sync"
- "time"
-
-@@ -52,10 +43,6 @@ import (
- // logEmit calls emit and then logs the error, if any.
- // See docs for emit.
- func logEmit(final bool) {
-- err := emit(final)
-- if err != nil {
-- log.Printf("[ERROR] Sending telemetry: %v", err)
-- }
- }
-
- // emit sends an update to the telemetry server.
-@@ -63,184 +50,15 @@ func logEmit(final bool) {
- // If final is true, no future updates will be scheduled.
- // Otherwise, the next update will be scheduled.
- func emit(final bool) error {
-- if !enabled {
-- return fmt.Errorf("telemetry not enabled")
-- }
--
-- // some metrics are updated/set at time of emission
-- setEmitTimeMetrics()
--
-- // ensure only one update happens at a time;
-- // skip update if previous one still in progress
-- updateMu.Lock()
-- if updating {
-- updateMu.Unlock()
-- log.Println("[NOTICE] Skipping this telemetry update because previous one is still working")
-- return nil
-- }
-- updating = true
-- updateMu.Unlock()
-- defer func() {
-- updateMu.Lock()
-- updating = false
-- updateMu.Unlock()
-- }()
--
-- // terminate any pending update if this is the last one
-- if final {
-- stopUpdateTimer()
-- }
--
-- payloadBytes, err := makePayloadAndResetBuffer()
-- if err != nil {
-- return err
-- }
--
-- // this will hold the server's reply
-- var reply Response
--
-- // transmit the payload - use a loop to retry in case of failure
-- for i := 0; i < 4; i++ {
-- if i > 0 && err != nil {
-- // don't hammer the server; first failure might have been
-- // a fluke, but back off more after that
-- log.Printf("[WARNING] Sending telemetry (attempt %d): %v - backing off and retrying", i, err)
-- time.Sleep(time.Duration((i+1)*(i+1)*(i+1)) * time.Second)
-- }
--
-- // send it
-- var resp *http.Response
-- resp, err = httpClient.Post(endpoint+instanceUUID.String(), "application/json", bytes.NewReader(payloadBytes))
-- if err != nil {
-- continue
-- }
--
-- // check for any special-case response codes
-- if resp.StatusCode == http.StatusGone {
-- // the endpoint has been deprecated and is no longer servicing clients
-- err = fmt.Errorf("telemetry server replied with HTTP %d; upgrade required", resp.StatusCode)
-- if clen := resp.Header.Get("Content-Length"); clen != "0" && clen != "" {
-- bodyBytes, readErr := ioutil.ReadAll(resp.Body)
-- if readErr != nil {
-- log.Printf("[ERROR] Reading response body from server: %v", readErr)
-- }
-- err = fmt.Errorf("%v - %s", err, bodyBytes)
-- }
-- resp.Body.Close()
-- reply.Stop = true
-- break
-- }
-- if resp.StatusCode == http.StatusUnavailableForLegalReasons {
-- // the endpoint is unavailable, at least to this client, for legal reasons (!)
-- err = fmt.Errorf("telemetry server replied with HTTP %d %s: please consult the project website and developers for guidance", resp.StatusCode, resp.Status)
-- if clen := resp.Header.Get("Content-Length"); clen != "0" && clen != "" {
-- bodyBytes, readErr := ioutil.ReadAll(resp.Body)
-- if readErr != nil {
-- log.Printf("[ERROR] Reading response body from server: %v", readErr)
-- }
-- err = fmt.Errorf("%v - %s", err, bodyBytes)
-- }
-- resp.Body.Close()
-- reply.Stop = true
-- break
-- }
--
-- // okay, ensure we can interpret the response
-- if ct := resp.Header.Get("Content-Type"); (resp.StatusCode < 300 || resp.StatusCode >= 400) &&
-- !strings.Contains(ct, "json") {
-- err = fmt.Errorf("telemetry server replied with unknown content-type: '%s' and HTTP %s", ct, resp.Status)
-- resp.Body.Close()
-- continue
-- }
--
-- // read the response body
-- err = json.NewDecoder(resp.Body).Decode(&reply)
-- resp.Body.Close() // close response body as soon as we're done with it
-- if err != nil {
-- continue
-- }
--
-- // update the list of enabled/disabled keys, if any
-- for _, key := range reply.EnableKeys {
-- disabledMetricsMu.Lock()
-- // only re-enable this metric if it is temporarily disabled
-- if temp, ok := disabledMetrics[key]; ok && temp {
-- delete(disabledMetrics, key)
-- }
-- disabledMetricsMu.Unlock()
-- }
-- for _, key := range reply.DisableKeys {
-- disabledMetricsMu.Lock()
-- disabledMetrics[key] = true // all remotely-disabled keys are "temporarily" disabled
-- disabledMetricsMu.Unlock()
-- }
--
-- // make sure we didn't send the update too soon; if so,
-- // just wait and try again -- this is a special case of
-- // error that we handle differently, as you can see
-- if resp.StatusCode == http.StatusTooManyRequests {
-- if reply.NextUpdate <= 0 {
-- raStr := resp.Header.Get("Retry-After")
-- if ra, err := strconv.Atoi(raStr); err == nil {
-- reply.NextUpdate = time.Duration(ra) * time.Second
-- }
-- }
-- if !final {
-- log.Printf("[NOTICE] Sending telemetry: we were too early; waiting %s before trying again", reply.NextUpdate)
-- time.Sleep(reply.NextUpdate)
-- continue
-- }
-- } else if resp.StatusCode >= 400 {
-- err = fmt.Errorf("telemetry server returned status code %d", resp.StatusCode)
-- continue
-- }
--
-- break
-- }
-- if err == nil && !final {
-- // (remember, if there was an error, we return it
-- // below, so it WILL get logged if it's supposed to)
-- log.Println("[INFO] Sending telemetry: success")
-- }
--
-- // even if there was an error after all retries, we should
-- // schedule the next update using our default update
-- // interval because the server might be healthy later
--
-- // ensure we won't slam the telemetry server; add a little variance
-- if reply.NextUpdate < 1*time.Second {
-- reply.NextUpdate = defaultUpdateInterval + time.Duration(rand.Int63n(int64(1*time.Minute)))
-- }
--
-- // schedule the next update (if this wasn't the last one and
-- // if the remote server didn't tell us to stop sending)
-- if !final && !reply.Stop {
-- updateTimerMu.Lock()
-- updateTimer = time.AfterFunc(reply.NextUpdate, func() {
-- logEmit(false)
-- })
-- updateTimerMu.Unlock()
-- }
--
-- return err
-+ return nil
- }
-
- func stopUpdateTimer() {
-- updateTimerMu.Lock()
-- updateTimer.Stop()
-- updateTimer = nil
-- updateTimerMu.Unlock()
- }
-
- // setEmitTimeMetrics sets some metrics that should
- // be recorded just before emitting.
- func setEmitTimeMetrics() {
-- Set("goroutines", runtime.NumGoroutine())
--
-- var mem runtime.MemStats
-- runtime.ReadMemStats(&mem)
-- SetNested("memory", "heap_alloc", mem.HeapAlloc)
-- SetNested("memory", "sys", mem.Sys)
- }
-
- // makePayloadAndResetBuffer prepares a payload
-@@ -250,15 +68,7 @@ func setEmitTimeMetrics() {
- // resulting byte slice is lost, the payload is
- // gone with it.
- func makePayloadAndResetBuffer() ([]byte, error) {
-- bufCopy := resetBuffer()
--
-- // encode payload in preparation for transmission
-- payload := Payload{
-- InstanceID: instanceUUID.String(),
-- Timestamp: time.Now().UTC(),
-- Data: bufCopy,
-- }
-- return json.Marshal(payload)
-+ return []byte{}, nil
- }
-
- // resetBuffer makes a local pointer to the buffer,
-@@ -268,12 +78,7 @@ func makePayloadAndResetBuffer() ([]byte, error) {
- // the original map so the old buffer value can be
- // used locally.
- func resetBuffer() map[string]interface{} {
-- bufferMu.Lock()
-- bufCopy := buffer
-- buffer = make(map[string]interface{})
-- bufferItemCount = 0
-- bufferMu.Unlock()
-- return bufCopy
-+ return map[string]interface{}{}
- }
-
- // Response contains the body of a response from the
-@@ -324,13 +129,6 @@ type Payload struct {
- // Int returns the value of the data keyed by key
- // if it is an integer; otherwise it returns 0.
- func (p Payload) Int(key string) int {
-- val, _ := p.Data[key]
-- switch p.Data[key].(type) {
-- case int:
-- return val.(int)
-- case float64: // after JSON-decoding, int becomes float64...
-- return int(val.(float64))
-- }
- return 0
- }
-
-@@ -345,17 +143,7 @@ type countingSet map[interface{}]int
- // are JSON object values instead of keys, since keys
- // are difficult to query in databases.
- func (s countingSet) MarshalJSON() ([]byte, error) {
-- type Item struct {
-- Value interface{} `json:"value"`
-- Count int `json:"count"`
-- }
-- var list []Item
--
-- for k, v := range s {
-- list = append(list, Item{Value: k, Count: v})
-- }
--
-- return json.Marshal(list)
-+ return []byte{}, nil
- }
-
- var (
-@@ -415,7 +203,7 @@ var (
- const (
- // endpoint is the base URL to remote telemetry server;
- // the instance ID will be appended to it.
-- endpoint = "https://telemetry.caddyserver.com/v1/update/"
-+ endpoint = ""
-
- // defaultUpdateInterval is how long to wait before emitting
- // more telemetry data if all retires fail. This value is