live: handle input with NaN sent as a string (#36924)

This commit is contained in:
Alexander Emelin 2021-07-20 10:46:05 +03:00 committed by GitHub
parent 140bb4cc56
commit 6c440b5e8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 12 deletions

View File

@ -331,6 +331,15 @@ func (s *metricFrame) getFieldTypeAndValue(f *influx.Field) (data.FieldType, int
if err != nil {
return ft, nil, fmt.Errorf("value convert error: %v", err)
}
if ft == data.FieldTypeNullableString {
// We observed commercial Telegraf extensions that send NaN values as strings.
// Native Telegraf influx serializer drops fields with NaN values. While this
// fixes an observed scenario we still need to think on a more generic approach
// how to handle occasionally missing fields (maybe on a UI, maybe on a backend side).
if stringVal, ok := v.(*string); ok && stringVal != nil && *stringVal == "NaN" {
return data.FieldTypeNullableFloat64, nil, nil
}
}
return ft, v, nil
}

View File

@ -1,19 +1,19 @@
🌟 This was machine generated. Do not edit. 🌟
Frame[0]
Frame[0]
Name: system
Dimensions: 5 Fields by 4 Rows
+----------------+-------------------------------+------------------+-----------------+-----------------+
| Name: labels | Name: time | Name: sensor | Name: sensor2 | Name: state |
| Labels: | Labels: | Labels: | Labels: | Labels: |
| Type: []string | Type: []time.Time | Type: []*float64 | Type: []*string | Type: []*string |
+----------------+-------------------------------+------------------+-----------------+-----------------+
| host=A | 2021-03-22 01:51:30 -0700 PDT | 0 | NaN | aaa |
| host=B | 2021-03-22 01:51:30 -0700 PDT | null | 0 | bbb |
| host=A | 2021-03-22 01:51:31 -0700 PDT | null | 0 | ccc |
| host=B | 2021-03-22 01:51:31 -0700 PDT | 0 | NaN | 1 |
+----------------+-------------------------------+------------------+-----------------+-----------------+
+----------------+-------------------------------+------------------+------------------+-----------------+
| Name: labels | Name: time | Name: sensor | Name: sensor2 | Name: state |
| Labels: | Labels: | Labels: | Labels: | Labels: |
| Type: []string | Type: []time.Time | Type: []*float64 | Type: []*float64 | Type: []*string |
+----------------+-------------------------------+------------------+------------------+-----------------+
| host=A | 2021-03-22 11:51:30 +0300 MSK | 0 | null | aaa |
| host=B | 2021-03-22 11:51:30 +0300 MSK | null | 0 | bbb |
| host=A | 2021-03-22 11:51:31 +0300 MSK | null | 0 | ccc |
| host=B | 2021-03-22 11:51:31 +0300 MSK | 0 | null | 1 |
+----------------+-------------------------------+------------------+------------------+-----------------+
====== TEST DATA RESPONSE (arrow base64) ======
FRAME=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
FRAME=QVJST1cxAAD/////mAIAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFQAAAACAAAAKAAAAAQAAADs/f//CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAAz+//8IAAAAEAAAAAYAAABzeXN0ZW0AAAQAAABuYW1lAAAAAAUAAACsAQAANAEAANQAAABgAAAABAAAAEr///8UAAAAPAAAADwAAAAAAAUBOAAAAAEAAAAEAAAAaP7//wgAAAAQAAAABQAAAHN0YXRlAAAABAAAAG5hbWUAAAAAAAAAAGD+//8FAAAAc3RhdGUAAACi////FAAAADwAAAA8AAAAAAADATwAAAABAAAABAAAAMD+//8IAAAAEAAAAAcAAABzZW5zb3IyAAQAAABuYW1lAAAAAAAAAAAy////AAACAAcAAABzZW5zb3IyAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAAA8AAAAPAAAAAAAAwE8AAAAAQAAAAQAAAAw////CAAAABAAAAAGAAAAc2Vuc29yAAAEAAAAbmFtZQAAAAAAAAAAov///wAAAgAGAAAAc2Vuc29yAACe////FAAAADwAAABEAAAAAAAACkQAAAABAAAABAAAAIz///8IAAAAEAAAAAQAAAB0aW1lAAAAAAQAAABuYW1lAAAAAAAAAAAAAAYACAAGAAYAAAAAAAMABAAAAHRpbWUAABIAGAAUAAAAEwAMAAAACAAEABIAAAAUAAAARAAAAEgAAAAAAAAFRAAAAAEAAAAMAAAACAAMAAgABAAIAAAACAAAABAAAAAGAAAAbGFiZWxzAAAEAAAAbmFtZQAAAAAAAAAABAAEAAQAAAAGAAAAbGFiZWxzAAD/////aAEAABQAAAAAAAAADAAWABQAEwAMAAQADAAAAMgAAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAANgAAAAEAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAIAAAAAAAAABQAAAAAAAAAAgAAAAAAAAAWAAAAAAAAAAgAAAAAAAAAHgAAAAAAAAACAAAAAAAAACAAAAAAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAGAAAAAAAAAC4AAAAAAAAABAAAAAAAAAAAAAAAAUAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAgAAAAAAAAAEAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAADAAAABIAAAAYAAAAAAAAAGhvc3Q9QWhvc3Q9Qmhvc3Q9QWhvc3Q9QgA0S9kLnm4WADRL2QuebhYA/uUUDJ5uFgD+5RQMnm4WCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAYAAAAJAAAACgAAAAAAAABhYWFiYmJjY2MxAAAAAAAAEAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADwAAAAAAAMAAQAAAKgCAAAAAAAAcAEAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAVAAAAAIAAAAoAAAABAAAAOz9//8IAAAADAAAAAAAAAAAAAAABQAAAHJlZklkAAAADP7//wgAAAAQAAAABgAAAHN5c3RlbQAABAAAAG5hbWUAAAAABQAAAKwBAAA0AQAA1AAAAGAAAAAEAAAASv///xQAAAA8AAAAPAAAAAAABQE4AAAAAQAAAAQAAABo/v//CAAAABAAAAAFAAAAc3RhdGUAAAAEAAAAbmFtZQAAAAAAAAAAYP7//wUAAABzdGF0ZQAAAKL///8UAAAAPAAAADwAAAAAAAMBPAAAAAEAAAAEAAAAwP7//wgAAAAQAAAABwAAAHNlbnNvcjIABAAAAG5hbWUAAAAAAAAAADL///8AAAIABwAAAHNlbnNvcjIAAAASABgAFAATABIADAAAAAgABAASAAAAFAAAADwAAAA8AAAAAAADATwAAAABAAAABAAAADD///8IAAAAEAAAAAYAAABzZW5zb3IAAAQAAABuYW1lAAAAAAAAAACi////AAACAAYAAABzZW5zb3IAAJ7///8UAAAAPAAAAEQAAAAAAAAKRAAAAAEAAAAEAAAAjP///wgAAAAQAAAABAAAAHRpbWUAAAAABAAAAG5hbWUAAAAAAAAAAAAABgAIAAYABgAAAAAAAwAEAAAAdGltZQAAEgAYABQAAAATAAwAAAAIAAQAEgAAABQAAABEAAAASAAAAAAAAAVEAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAEAAAAAYAAABsYWJlbHMAAAQAAABuYW1lAAAAAAAAAAAEAAQABAAAAAYAAABsYWJlbHMAAMgCAABBUlJPVzE=