Skip to content

Commit 1a9a36b

Browse files
committed
Address review feedback
1 parent c9e3877 commit 1a9a36b

5 files changed

Lines changed: 33 additions & 15 deletions

File tree

internal/api/api.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,10 @@ func (s *Server) handleScanRepo(w http.ResponseWriter, r *http.Request) {
240240

241241
var req scanRequest
242242
if r.Body != nil {
243-
json.NewDecoder(r.Body).Decode(&req)
243+
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
244+
http.Error(w, "Invalid JSON body", http.StatusBadRequest)
245+
return
246+
}
244247
}
245248
if req.Trigger == "" {
246249
req.Trigger = "manual"
@@ -334,7 +337,10 @@ func (s *Server) handleScanStack(w http.ResponseWriter, r *http.Request) {
334337

335338
var req scanRequest
336339
if r.Body != nil {
337-
json.NewDecoder(r.Body).Decode(&req)
340+
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
341+
http.Error(w, "Invalid JSON body", http.StatusBadRequest)
342+
return
343+
}
338344
}
339345
if req.Trigger == "" {
340346
req.Trigger = "manual"

internal/queue/task.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"encoding/json"
66
"errors"
77
"fmt"
8+
"os"
9+
"path/filepath"
810
"strconv"
911
"time"
1012

@@ -319,26 +321,33 @@ func (q *Queue) MarkTaskEnqueueFailed(ctx context.Context, taskID string) error
319321

320322
func (q *Queue) maybeFinishTask(ctx context.Context, taskID string) error {
321323
taskKey := keyTaskPrefix + taskID
322-
values, err := q.client.HMGet(ctx, taskKey, "repo", "total", "completed", "failed").Result()
324+
values, err := q.client.HMGet(ctx, taskKey, "repo", "total", "completed", "failed", "workspace").Result()
323325
if err != nil {
324326
return err
325327
}
326-
if len(values) != 4 {
328+
if len(values) != 5 {
327329
return nil
328330
}
329331

330332
repoName, _ := values[0].(string)
331333
total := toInt(values[1])
332334
completed := toInt(values[2])
333335
failed := toInt(values[3])
336+
workspacePath, _ := values[4].(string)
334337

335338
if total == 0 {
336339
return q.finishTask(ctx, taskKey, repoName, 0)
337340
}
338341
if completed+failed < total {
339342
return nil
340343
}
341-
return q.finishTask(ctx, taskKey, repoName, failed)
344+
if err := q.finishTask(ctx, taskKey, repoName, failed); err != nil {
345+
return err
346+
}
347+
if workspacePath != "" {
348+
_ = os.RemoveAll(filepath.Dir(workspacePath))
349+
}
350+
return nil
342351
}
343352

344353
func (q *Queue) finishTask(ctx context.Context, taskKey, repoName string, failed int) error {

internal/runner/runner.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ func detectTool(stackPath string) string {
140140

141141
func runPlan(ctx context.Context, workDir, tool, tfBin, tgBin, repoRoot, stackPath string) (string, error) {
142142
var output bytes.Buffer
143-
dataDir := filepath.Join(os.TempDir(), "driftd-tfdata", safePath(stackPath))
143+
dataDir := filepath.Join(os.TempDir(), "driftd-tfdata", safePath(stackPath), filepath.Base(repoRoot))
144144
if err := os.MkdirAll(dataDir, 0755); err == nil {
145145
defer os.RemoveAll(dataDir)
146146
}

internal/scheduler/scheduler.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,10 @@ func (s *Scheduler) enqueueRepoScans(repoName, repoURL string) {
8585
log.Printf("Skipping scheduled scan for %s: repo already running", repoName)
8686
return
8787
}
88+
} else {
89+
log.Printf("Failed to start task for %s: %v", repoName, err)
90+
return
8891
}
89-
log.Printf("Failed to start task for %s: %v", repoName, err)
90-
return
9192
}
9293
go s.queue.RenewTaskLock(context.Background(), task.ID, repoName, s.cfg.Worker.TaskMaxAge, s.cfg.Worker.RenewEvery)
9394

internal/worker/worker.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,15 +132,17 @@ func (w *Worker) processJob(job *queue.Job) {
132132

133133
if w.cfg != nil {
134134
if repoCfg := w.cfg.GetRepo(job.RepoName); repoCfg != nil {
135-
authMethod, authErr := gitauth.AuthMethod(ctx, repoCfg)
136-
if authErr != nil {
137-
log.Printf("Job %s failed (git auth): %v", job.ID, authErr)
138-
if failErr := w.queue.Fail(w.ctx, job, authErr.Error()); failErr != nil {
139-
log.Printf("Failed to mark job %s as failed: %v", job.ID, failErr)
135+
if workspacePath == "" {
136+
authMethod, authErr := gitauth.AuthMethod(ctx, repoCfg)
137+
if authErr != nil {
138+
log.Printf("Job %s failed (git auth): %v", job.ID, authErr)
139+
if failErr := w.queue.Fail(w.ctx, job, authErr.Error()); failErr != nil {
140+
log.Printf("Failed to mark job %s as failed: %v", job.ID, failErr)
141+
}
142+
return
140143
}
141-
return
144+
auth = authMethod
142145
}
143-
auth = authMethod
144146
}
145147
}
146148

0 commit comments

Comments
 (0)