Skip to content
This repository was archived by the owner on Feb 20, 2020. It is now read-only.

Commit 184d6a7

Browse files
committed
Merge branch 'master' of https://github.com/taskcluster/generic-worker into bug1534223
2 parents 6097d54 + 03d0d16 commit 184d6a7

4 files changed

Lines changed: 33 additions & 66 deletions

File tree

main.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,3 +1202,27 @@ type TaskContext struct {
12021202
TaskDir string
12031203
User *gwruntime.OSUser
12041204
}
1205+
1206+
// deleteTaskDirs deletes all task directories (directories whose name starts
1207+
// with `task_`) inside directory parentDir, except those whose names are in
1208+
// skipNames
1209+
func deleteTaskDirs(parentDir string, skipNames ...string) error {
1210+
taskDirs, err := taskDirsIn(parentDir)
1211+
if err != nil {
1212+
return err
1213+
}
1214+
outer:
1215+
for _, taskDir := range taskDirs {
1216+
name := filepath.Base(taskDir)
1217+
for _, skip := range skipNames {
1218+
if name == skip {
1219+
continue outer
1220+
}
1221+
}
1222+
err = deleteDir(taskDir)
1223+
if err != nil {
1224+
return err
1225+
}
1226+
}
1227+
return nil
1228+
}

main_test.go

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ import (
1010
"strings"
1111
"testing"
1212
"time"
13-
14-
"github.com/taskcluster/generic-worker/gwconfig"
15-
"github.com/taskcluster/generic-worker/runtime"
1613
)
1714

1815
// Test failure should resolve as "failed"
@@ -197,18 +194,7 @@ func TestRemoveTaskDirs(t *testing.T) {
197194
t.Fatalf("Could not write %v file: %v", file, err)
198195
}
199196
}
200-
config = &gwconfig.Config{
201-
PublicConfig: gwconfig.PublicConfig{
202-
TasksDir: d,
203-
},
204-
}
205-
taskContext = &TaskContext{
206-
TaskDir: filepath.Join(d, "task_1234561234"),
207-
User: &runtime.OSUser{
208-
Name: "task_1234561234",
209-
},
210-
}
211-
err = deleteTaskDirs()
197+
err = deleteTaskDirs(d, "task_1234561234")
212198
if err != nil {
213199
t.Fatalf("Could not remove task directories: %v", err)
214200
}

plat_all-unix-style.go

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func purgeOldTasks() error {
8585
log.Printf("WARNING: Not purging previous task directories/users since config setting cleanUpTaskDirs is false")
8686
return nil
8787
}
88-
return deleteTaskDirs()
88+
return deleteTaskDirs(config.TasksDir, taskContext.User.Name)
8989
}
9090

9191
func install(arguments map[string]interface{}) (err error) {
@@ -175,27 +175,6 @@ func defaultTasksDir() string {
175175
return filepath.Dir(os.Getenv("HOME"))
176176
}
177177

178-
func deleteTaskDirs() error {
179-
currentTaskDir := taskContext.TaskDir
180-
taskDirs, err := taskDirsIn(config.TasksDir)
181-
if err != nil {
182-
return err
183-
}
184-
for _, taskDir := range taskDirs {
185-
// this string comparison works because both taskDir and currentTaskDir
186-
// are constructed from filepath.Join(config.TasksDir, taskDir) - but
187-
// if this becomes a problem, we can call os.Stat against both files
188-
// and use os.SameFile to check if they are the same file (directory).
189-
if taskDir != currentTaskDir {
190-
err = deleteDir(taskDir)
191-
if err != nil {
192-
return err
193-
}
194-
}
195-
}
196-
return nil
197-
}
198-
199178
func GrantSIDFullControlOfInteractiveWindowsStationAndDesktop(sid string) (err error) {
200179
return fmt.Errorf("Cannot grant %v full control of interactive windows station and desktop; platform %v does not have such entities", sid, runtime.GOOS)
201180
}

plat_windows.go

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -452,9 +452,14 @@ func purgeOldTasks() error {
452452
log.Printf("WARNING: Not purging previous task directories/users since config setting cleanUpTaskDirs is false")
453453
return nil
454454
}
455-
err := deleteTaskDirs()
455+
err := deleteTaskDirs(win32.ProfilesDirectory(), taskContext.User.Name, AutoLogonCredentials().Name)
456456
if err != nil {
457-
log.Printf("Could not delete old task directories:\n%v", err)
457+
log.Printf("Could not delete task directory %v:\n%v", win32.ProfilesDirectory(), err)
458+
return err
459+
}
460+
err = deleteTaskDirs(config.TasksDir, taskContext.User.Name, AutoLogonCredentials().Name)
461+
if err != nil {
462+
log.Printf("Could not delete old task directory %v:\n%v", config.TasksDir, err)
458463
return err
459464
}
460465
// note if this fails, we carry on without throwing an error
@@ -793,14 +798,6 @@ func AutoLogonCredentials() (user runtime.OSUser) {
793798
return
794799
}
795800

796-
func deleteTaskDirs() error {
797-
err := removeTaskDirs(win32.ProfilesDirectory())
798-
if err != nil {
799-
return err
800-
}
801-
return removeTaskDirs(config.TasksDir)
802-
}
803-
804801
func (pd *PlatformData) RefreshLoginSession() {
805802
err := pd.LoginInfo.Release()
806803
if err != nil {
@@ -935,22 +932,3 @@ func GrantSIDFullControlOfInteractiveWindowsStationAndDesktop(sid string) (err e
935932
func rebootBetweenTasks() bool {
936933
return true
937934
}
938-
939-
func removeTaskDirs(parentDir string) error {
940-
currentTaskUser := taskContext.User.Name
941-
nextTaskUser := AutoLogonCredentials().Name
942-
taskDirs, err := taskDirsIn(parentDir)
943-
if err != nil {
944-
return err
945-
}
946-
for _, taskDir := range taskDirs {
947-
name := filepath.Base(taskDir)
948-
if name != currentTaskUser && name != nextTaskUser {
949-
err = deleteDir(taskDir)
950-
if err != nil {
951-
return err
952-
}
953-
}
954-
}
955-
return nil
956-
}

0 commit comments

Comments
 (0)