fix(go.d/ddsnmp): include table name in config id (#20584)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Ilya Mashchenko committed
Jun 26, 2025 at 18:20 UTC
08f3e87b2314036ddb676f08a7dd9e6a5ea4fbbf
2 files changed
+11
-12
src/go/plugin/go.d/collector/snmp/ddsnmp/ddsnmpcollector/table_cache.go
+9
-10
@@ -305,27 +305,26 @@ func (tc *tableCache) isConfigCached(cfg ddprofiledefinition.MetricsConfig) bool
305
return ok
306
}
307
308
-// generateConfigID creates a unique identifier for a MetricsConfig based on its symbols
308
+// generateConfigID creates a unique identifier for a MetricsConfig
309
func (tc *tableCache) generateConfigID(cfg ddprofiledefinition.MetricsConfig) string {
310
var sb strings.Builder
311
312
- // Collect all symbol names
312
+ if cfg.Table.Name != "" {
313
+ sb.WriteString(cfg.Table.Name)
314
+ }
315
+
316
names := make([]string, 0, len(cfg.Symbols))
317
for _, sym := range cfg.Symbols {
318
names = append(names, sym.Name)
319
}
317
-
318
- // Sort to ensure consistent ordering
320
sort.Strings(names)
321
321
- // Build the ID
322
- for i, name := range names {
323
- if i > 0 {
324
- sb.WriteByte(',')
325
- }
326
- sb.WriteString(name)
322
+ if sb.Len() > 0 && len(names) > 0 {
323
+ sb.WriteString(",")
324
}
325
326
+ sb.WriteString(strings.Join(names, ","))
327
+
328
return sb.String()
329
}
330
src/go/plugin/go.d/collector/snmp/ddsnmp/ddsnmpcollector/table_cache_test.go
+2
-2
@@ -796,6 +796,6 @@ func TestTableCacheConfigIDGeneration(t *testing.T) {
796
assert.NotEqual(t, id1, id3)
797
798
// IDs should be human-readable
799
- assert.Equal(t, "ifInOctets,ifOutOctets", id1)
800
- assert.Equal(t, "ifAdminStatus,ifOperStatus", id3)
799
+ assert.Equal(t, "ifTable,ifInOctets,ifOutOctets", id1)
800
+ assert.Equal(t, "ifTable,ifAdminStatus,ifOperStatus", id3)
801
}