同步P0-10审查基线

保留幂等活动状态和域名删除保护的当前审查基线,后续继续修复并补充测试。
This commit is contained in:
xuans 2026-09-30 04:15:31 +08:00
parent c4c96bc30a
commit 569499e54d
2 changed files with 20 additions and 3 deletions

View File

@ -74,7 +74,7 @@ func (s *Server) issueDomainAsTask(c *gin.Context) {
}
if existing, err := s.tasks.FindTaskByIdempotencyKey(c.Request.Context(), domainID, idempotencyKey); err == nil {
status := http.StatusOK
if existing.Status == "queued" || existing.Status == "running" {
if isActiveTaskStatus(existing.Status) {
status = http.StatusConflict
}
c.JSON(status, gin.H{"task": existing, "replayed": true})
@ -106,7 +106,7 @@ func (s *Server) issueDomainAsTask(c *gin.Context) {
if idempotencyKey != "" {
if existing, lookupErr := s.tasks.FindTaskByIdempotencyKey(c.Request.Context(), domainID, idempotencyKey); lookupErr == nil {
status := http.StatusOK
if existing.Status == "queued" || existing.Status == "running" {
if isActiveTaskStatus(existing.Status) {
status = http.StatusConflict
}
c.JSON(status, gin.H{"task": existing, "replayed": true})
@ -432,6 +432,23 @@ func validTaskIdempotencyKey(value string) bool {
}
return true
}
func isActiveTaskStatus(status string) bool {
switch status {
case "queued", "running", "retry_wait", "cancelling":
return true
default:
return false
}
}
func (s *Server) listTasks(c *gin.Context) {
reader, ok := s.projectTaskReader(c)
if !ok {

View File

@ -112,7 +112,7 @@ func (r *SQLProjectMemberRepository) DeleteProjectDomain(ctx context.Context, ac
return err
}
rows, err := tx.QueryContext(ctx, Rebind(r.driver, `SELECT id FROM tasks
WHERE domain_id = ? AND task_type IN ('certificate_issue', 'certificate_validate', 'certificate_deploy', 'certificate_import', 'certificate_restore')
WHERE domain_id = ? AND task_type IN ('certificate_issue', 'certificate_validate', 'certificate_deploy', 'certificate_import', 'certificate_restore', 'renewal_run')
AND status IN ('queued', 'running', 'retry_wait', 'cancelling')`+r.resourceWriteLock()), domainID)
if err != nil {
return fmt.Errorf("检查域名任务失败:%w", err)