Removing race condition on writing/removing cache lock
diff --git a/cache/global_lock.go b/cache/global_lock.go
index b7d1a5d..d85283d 100644
--- a/cache/global_lock.go
+++ b/cache/global_lock.go
@@ -14,6 +14,9 @@
var isStarted bool
+// If the global cache lock file should be written
+var shouldWriteLock = true
+
// SystemLock starts a system rather than application lock. This way multiple
// app instances don't cause race conditions when working in the cache.
func SystemLock() error {
@@ -47,6 +50,13 @@
// Write a lock for now.
func writeLock() error {
+
+ // If the lock should not be written exit immediately. This happens in cases
+ // where shutdown/clean is happening.
+ if !shouldWriteLock {
+ return nil
+ }
+
ld := &lockdata{
Comment: "File managed by Glide (https://glide.sh)",
Pid: os.Getpid(),
@@ -87,6 +97,7 @@
signal.Notify(ch, os.Interrupt, os.Kill)
go func(cc <-chan os.Signal) {
s := <-cc
+ shouldWriteLock = false
SystemUnlock()
// Exiting with the expected exit codes when we can.