some refinement
Build and Publish / Metadata (push) Has been cancelled
Build and Publish / BuildAndDeployAmd64 (push) Has been cancelled

This commit is contained in:
2026-04-07 12:44:55 +02:00
parent 89e1db8edf
commit 0ed1cb4355
14 changed files with 390 additions and 104 deletions
+12 -28
View File
@@ -47,7 +47,7 @@ func (c *Collector) SetBroadcaster(broadcaster websocket.Broadcaster) {
c.broadcaster = broadcaster
}
func (c *Collector) addToHistory(dataType websocket.DataType, data interface{}) {
func (c *Collector) addToHistory(dataType websocket.DataType, data json.RawMessage) {
entry := websocket.HistoryEntry{
Type: string(dataType),
Timestamp: time.Now().UnixNano(),
@@ -149,9 +149,8 @@ func (c *Collector) SearchHistory(ctx context.Context, query string, limit int)
if query == "" {
filtered = append(filtered, entry)
} else {
// Basic string filter for in-memory
data, _ := json.Marshal(entry.Data)
if strings.Contains(strings.ToLower(string(data)), lowerQuery) {
// Basic string filter for in-memory, no need to re-marshal RawMessage
if strings.Contains(strings.ToLower(string(entry.Data)), lowerQuery) {
filtered = append(filtered, entry)
}
}
@@ -180,17 +179,12 @@ func (c *Collector) ConsumeTraces(ctx context.Context, td ptrace.Traces) error {
return err
}
// Parse to interface{} for history storage
var data interface{}
if err := json.Unmarshal(buf, &data); err != nil {
log.Printf("failed to unmarshal traces for history: %v", err)
} else {
c.addToHistory(websocket.DataTypeTraces, data)
}
// Store and broadcast raw bytes as json.RawMessage to avoid unsafe interface{} usage
c.addToHistory(websocket.DataTypeTraces, buf)
entry := websocket.Entry{
Type: string(websocket.DataTypeTraces),
Data: data,
Data: buf,
}
c.broadcaster.Broadcast(&entry)
@@ -206,17 +200,12 @@ func (c *Collector) ConsumeMetrics(ctx context.Context, md pmetric.Metrics) erro
return err
}
// Parse to interface{} for history storage
var data interface{}
if err := json.Unmarshal(buf, &data); err != nil {
log.Printf("failed to unmarshal metrics for history: %v", err)
} else {
c.addToHistory(websocket.DataTypeMetrics, data)
}
// Store and broadcast raw bytes as json.RawMessage to avoid unsafe interface{} usage
c.addToHistory(websocket.DataTypeMetrics, buf)
entry := websocket.Entry{
Type: string(websocket.DataTypeMetrics),
Data: data,
Data: buf,
}
c.broadcaster.Broadcast(&entry)
@@ -232,17 +221,12 @@ func (c *Collector) ConsumeLogs(ctx context.Context, ld plog.Logs) error {
return err
}
// Parse to interface{} for history storage
var data interface{}
if err := json.Unmarshal(buf, &data); err != nil {
log.Printf("failed to unmarshal logs for history: %v", err)
} else {
c.addToHistory(websocket.DataTypeLogs, data)
}
// Store and broadcast raw bytes as json.RawMessage to avoid unsafe interface{} usage
c.addToHistory(websocket.DataTypeLogs, buf)
entry := websocket.Entry{
Type: string(websocket.DataTypeLogs),
Data: data,
Data: buf,
}
c.broadcaster.Broadcast(&entry)