Skip to content

Commit b3e48f0

Browse files
danielnelsonrgitzel
authored andcommitted
Support uint fields in aerospike input (influxdata#4851)
1 parent 642d6a0 commit b3e48f0

File tree

2 files changed

+17
-30
lines changed

2 files changed

+17
-30
lines changed

plugins/inputs/aerospike/aerospike.go

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ package aerospike
22

33
import (
44
"crypto/tls"
5-
"errors"
6-
"log"
75
"net"
86
"strconv"
97
"strings"
@@ -120,12 +118,8 @@ func (a *Aerospike) gatherServer(hostport string, acc telegraf.Accumulator) erro
120118
return err
121119
}
122120
for k, v := range stats {
123-
val, err := parseValue(v)
124-
if err == nil {
125-
fields[strings.Replace(k, "-", "_", -1)] = val
126-
} else {
127-
log.Printf("I! skipping aerospike field %v with int64 overflow: %q", k, v)
128-
}
121+
val := parseValue(v)
122+
fields[strings.Replace(k, "-", "_", -1)] = val
129123
}
130124
acc.AddFields("aerospike_node", fields, tags, time.Now())
131125

@@ -152,29 +146,25 @@ func (a *Aerospike) gatherServer(hostport string, acc telegraf.Accumulator) erro
152146
if len(parts) < 2 {
153147
continue
154148
}
155-
val, err := parseValue(parts[1])
156-
if err == nil {
157-
nFields[strings.Replace(parts[0], "-", "_", -1)] = val
158-
} else {
159-
log.Printf("I! skipping aerospike field %v with int64 overflow: %q", parts[0], parts[1])
160-
}
149+
val := parseValue(parts[1])
150+
nFields[strings.Replace(parts[0], "-", "_", -1)] = val
161151
}
162152
acc.AddFields("aerospike_namespace", nFields, nTags, time.Now())
163153
}
164154
}
165155
return nil
166156
}
167157

168-
func parseValue(v string) (interface{}, error) {
158+
func parseValue(v string) interface{} {
169159
if parsed, err := strconv.ParseInt(v, 10, 64); err == nil {
170-
return parsed, nil
171-
} else if _, err := strconv.ParseUint(v, 10, 64); err == nil {
172-
// int64 overflow, yet valid uint64
173-
return nil, errors.New("Number is too large")
160+
return parsed
161+
} else if parsed, err := strconv.ParseUint(v, 10, 64); err == nil {
162+
return parsed
174163
} else if parsed, err := strconv.ParseBool(v); err == nil {
175-
return parsed, nil
164+
return parsed
176165
} else {
177-
return v, nil
166+
// leave as string
167+
return v
178168
}
179169
}
180170

plugins/inputs/aerospike/aerospike_test.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,14 @@ func TestAerospikeStatisticsPartialErr(t *testing.T) {
5252

5353
func TestAerospikeParseValue(t *testing.T) {
5454
// uint64 with value bigger than int64 max
55-
val, err := parseValue("18446744041841121751")
56-
assert.Nil(t, val)
57-
assert.Error(t, err)
55+
val := parseValue("18446744041841121751")
56+
require.Equal(t, uint64(18446744041841121751), val)
5857

5958
// int values
60-
val, err = parseValue("42")
61-
assert.NoError(t, err)
62-
assert.Equal(t, val, int64(42), "must be parsed as int")
59+
val = parseValue("42")
60+
require.Equal(t, val, int64(42), "must be parsed as int")
6361

6462
// string values
65-
val, err = parseValue("BB977942A2CA502")
66-
assert.NoError(t, err)
67-
assert.Equal(t, val, `BB977942A2CA502`, "must be left as string")
63+
val = parseValue("BB977942A2CA502")
64+
require.Equal(t, val, `BB977942A2CA502`, "must be left as string")
6865
}

0 commit comments

Comments
 (0)