From 493ec3773b00f1af63113da0c658f9a023038e0b Mon Sep 17 00:00:00 2001 From: Daniel Nelson Date: Fri, 20 Apr 2018 14:56:28 -0700 Subject: [PATCH] Fix ints being capped at 32-bits on 32-bit archs (#4054) --- plugins/parsers/influx/parser_test.go | 2 +- plugins/serializers/influx/influx.go | 6 +++--- plugins/serializers/influx/influx_test.go | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/plugins/parsers/influx/parser_test.go b/plugins/parsers/influx/parser_test.go index 594e6b766..a885a7712 100644 --- a/plugins/parsers/influx/parser_test.go +++ b/plugins/parsers/influx/parser_test.go @@ -282,7 +282,7 @@ var ptests = []struct { "cpu", map[string]string{}, map[string]interface{}{ - "value": 9223372036854775807, + "value": int64(9223372036854775807), }, time.Unix(42, 0), ), diff --git a/plugins/serializers/influx/influx.go b/plugins/serializers/influx/influx.go index 926bfcb34..819701c2e 100644 --- a/plugins/serializers/influx/influx.go +++ b/plugins/serializers/influx/influx.go @@ -12,7 +12,7 @@ import ( "github.com/influxdata/telegraf" ) -const MaxInt = int(^uint(0) >> 1) +const MaxInt64 = int64(^uint64(0) >> 1) type FieldSortOrder int @@ -270,10 +270,10 @@ func (s *Serializer) appendFieldValue(buf []byte, value interface{}) ([]byte, er if s.fieldTypeSupport&UintSupport != 0 { return appendUintField(buf, v), nil } else { - if v <= uint64(MaxInt) { + if v <= uint64(MaxInt64) { return appendIntField(buf, int64(v)), nil } else { - return appendIntField(buf, int64(MaxInt)), nil + return appendIntField(buf, int64(MaxInt64)), nil } } case int64: diff --git a/plugins/serializers/influx/influx_test.go b/plugins/serializers/influx/influx_test.go index 655e9aaf9..dca56dcf7 100644 --- a/plugins/serializers/influx/influx_test.go +++ b/plugins/serializers/influx/influx_test.go @@ -129,6 +129,20 @@ var tests = []struct { ), output: []byte("cpu value=42i 0\n"), }, + { + name: "integer field 64-bit", + input: MustMetric( + metric.New( + "cpu", + map[string]string{}, + map[string]interface{}{ + "value": int64(123456789012345), + }, + time.Unix(0, 0), + ), + ), + output: []byte("cpu value=123456789012345i 0\n"), + }, { name: "uint field", input: MustMetric(