@cryptotaxi247 / netdata-1 / commits / 08f3e87b2

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 }