Merge pull request #1844 from pikasTech/fix/workbench-runtime-sessions-summary-20260621
fix: 按 actor 限定 Workbench runtime session 列表
This commit is contained in:
@@ -185,6 +185,9 @@ func (s *Server) withOtelInternalSpan(ctx context.Context, name string, attrs ma
|
|||||||
attributes[key] = value
|
attributes[key] = value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if err != nil {
|
||||||
|
attributes["causeStage"] = name
|
||||||
|
}
|
||||||
addOtelErrorCauseAttributes(attributes, err)
|
addOtelErrorCauseAttributes(attributes, err)
|
||||||
s.emitOtelSpanAsync(name, trace, spanID, trace.ServerSpanID, otelSpanKindInternal, startedAt, attributes, 0, errorCode)
|
s.emitOtelSpanAsync(name, trace, spanID, trace.ServerSpanID, otelSpanKindInternal, startedAt, attributes, 0, errorCode)
|
||||||
return err
|
return err
|
||||||
@@ -216,8 +219,16 @@ func sqlCauseCode(err error) string {
|
|||||||
return "invalid_json_text"
|
return "invalid_json_text"
|
||||||
case strings.Contains(message, "cannot cast") && strings.Contains(message, "json"):
|
case strings.Contains(message, "cannot cast") && strings.Contains(message, "json"):
|
||||||
return "invalid_json_cast"
|
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"
|
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:
|
default:
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -278,10 +278,7 @@ func (s *Server) listSessions(ctx context.Context, query sessionListQuery) (map[
|
|||||||
if offset < 0 {
|
if offset < 0 {
|
||||||
offset = 0
|
offset = 0
|
||||||
}
|
}
|
||||||
ownerUserID := ""
|
ownerUserID := strings.TrimSpace(query.Actor.ID)
|
||||||
if strings.ToLower(strings.TrimSpace(query.Actor.Role)) != "admin" {
|
|
||||||
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"})
|
pageFacts, err := s.queryFacts(ctx, factQuery{OwnerUserID: ownerUserID, Limit: limit + offset + 1, Families: []string{"sessions"}, SessionsOrder: "updated_desc", SessionProjection: "summary"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -861,7 +858,7 @@ func visibleSessions(rows []any, actor sessionActor) []map[string]any {
|
|||||||
if strings.ToLower(text(item["status"])) == "archived" {
|
if strings.ToLower(text(item["status"])) == "archived" {
|
||||||
continue
|
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
|
continue
|
||||||
}
|
}
|
||||||
result = append(result, item)
|
result = append(result, item)
|
||||||
|
|||||||
Reference in New Issue
Block a user