Merge pull request #1844 from pikasTech/fix/workbench-runtime-sessions-summary-20260621

fix: 按 actor 限定 Workbench runtime session 列表
This commit is contained in:
Lyon
2026-06-21 22:46:21 +08:00
committed by GitHub
2 changed files with 14 additions and 6 deletions
+12 -1
View File
@@ -185,6 +185,9 @@ func (s *Server) withOtelInternalSpan(ctx context.Context, name string, attrs ma
attributes[key] = value
}
}
if err != nil {
attributes["causeStage"] = name
}
addOtelErrorCauseAttributes(attributes, err)
s.emitOtelSpanAsync(name, trace, spanID, trace.ServerSpanID, otelSpanKindInternal, startedAt, attributes, 0, errorCode)
return err
@@ -216,8 +219,16 @@ func sqlCauseCode(err error) string {
return "invalid_json_text"
case strings.Contains(message, "cannot cast") && strings.Contains(message, "json"):
return "invalid_json_cast"
case strings.Contains(message, "context deadline exceeded"):
case strings.Contains(message, "context deadline exceeded") || strings.Contains(message, "timeout"):
return "query_timeout"
case strings.Contains(message, "context canceled") || strings.Contains(message, "canceling statement due to user request"):
return "query_context_canceled"
case strings.Contains(message, "too many clients") || strings.Contains(message, "remaining connection slots"):
return "postgres_connection_slots_exhausted"
case strings.Contains(message, "server closed") || strings.Contains(message, "connection reset") || strings.Contains(message, "broken pipe") || strings.Contains(message, "bad connection"):
return "postgres_connection_unavailable"
case strings.Contains(message, "scan") || strings.Contains(message, "converting driver.value"):
return "row_scan_failed"
default:
return ""
}
+2 -5
View File
@@ -278,10 +278,7 @@ func (s *Server) listSessions(ctx context.Context, query sessionListQuery) (map[
if offset < 0 {
offset = 0
}
ownerUserID := ""
if strings.ToLower(strings.TrimSpace(query.Actor.Role)) != "admin" {
ownerUserID = strings.TrimSpace(query.Actor.ID)
}
ownerUserID := strings.TrimSpace(query.Actor.ID)
pageFacts, err := s.queryFacts(ctx, factQuery{OwnerUserID: ownerUserID, Limit: limit + offset + 1, Families: []string{"sessions"}, SessionsOrder: "updated_desc", SessionProjection: "summary"})
if err != nil {
return nil, err
@@ -861,7 +858,7 @@ func visibleSessions(rows []any, actor sessionActor) []map[string]any {
if strings.ToLower(text(item["status"])) == "archived" {
continue
}
if strings.ToLower(strings.TrimSpace(actor.Role)) != "admin" && text(item["ownerUserId"]) != strings.TrimSpace(actor.ID) {
if text(item["ownerUserId"]) != strings.TrimSpace(actor.ID) {
continue
}
result = append(result, item)