fix(inputs.mqtt_consumer): Correctly handle semaphores on messages (#13478)
This commit is contained in:
parent
bfc5a6a084
commit
341190d8a4
|
|
@ -246,7 +246,7 @@ func (m *MQTTConsumer) onDelivered(track telegraf.DeliveryInfo) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if track.Delivered() {
|
if track.Delivered() && m.PersistentSession {
|
||||||
msg.Ack()
|
msg.Ack()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -261,9 +261,12 @@ func (m *MQTTConsumer) onMessage(_ mqtt.Client, msg mqtt.Message) {
|
||||||
m.messagesRecv.Incr(1)
|
m.messagesRecv.Incr(1)
|
||||||
|
|
||||||
metrics, err := m.parser.Parse(msg.Payload())
|
metrics, err := m.parser.Parse(msg.Payload())
|
||||||
if err != nil {
|
if err != nil || len(metrics) == 0 {
|
||||||
|
if m.PersistentSession {
|
||||||
msg.Ack()
|
msg.Ack()
|
||||||
|
}
|
||||||
m.acc.AddError(err)
|
m.acc.AddError(err)
|
||||||
|
<-m.sem
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -283,16 +286,22 @@ func (m *MQTTConsumer) onMessage(_ mqtt.Client, msg mqtt.Message) {
|
||||||
if p.Tags != "" {
|
if p.Tags != "" {
|
||||||
err := parseMetric(p.SplitTags, values, p.FieldTypes, true, metric)
|
err := parseMetric(p.SplitTags, values, p.FieldTypes, true, metric)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if m.PersistentSession {
|
||||||
msg.Ack()
|
msg.Ack()
|
||||||
|
}
|
||||||
m.acc.AddError(err)
|
m.acc.AddError(err)
|
||||||
|
<-m.sem
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if p.Fields != "" {
|
if p.Fields != "" {
|
||||||
err := parseMetric(p.SplitFields, values, p.FieldTypes, false, metric)
|
err := parseMetric(p.SplitFields, values, p.FieldTypes, false, metric)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if m.PersistentSession {
|
||||||
msg.Ack()
|
msg.Ack()
|
||||||
|
}
|
||||||
m.acc.AddError(err)
|
m.acc.AddError(err)
|
||||||
|
<-m.sem
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue