|
@@ -15,16 +15,17 @@ module.exports = LockManager =
|
|
|
pollPeriod: @LOCK_TEST_INTERVAL
|
|
pollPeriod: @LOCK_TEST_INTERVAL
|
|
|
stale: @LOCK_STALE
|
|
stale: @LOCK_STALE
|
|
|
Lockfile.lock path, lockOpts, (error) ->
|
|
Lockfile.lock path, lockOpts, (error) ->
|
|
|
- return callback new Errors.AlreadyCompilingError("compile in progress") if error?.code is 'EEXIST'
|
|
|
|
|
- if error?
|
|
|
|
|
- fs.lstat path, (statLockErr, statLock)->
|
|
|
|
|
- fs.lstat Path.dirname(path), (statDirErr, statDir)->
|
|
|
|
|
- fs.readdir Path.dirname(path), (readdirErr, readdirDir)->
|
|
|
|
|
|
|
+ if error?.code is 'EEXIST'
|
|
|
|
|
+ return callback new Errors.AlreadyCompilingError("compile in progress")
|
|
|
|
|
+ else if error?
|
|
|
|
|
+ fs.lstat path, (statLockErr, statLock)->
|
|
|
|
|
+ fs.lstat Path.dirname(path), (statDirErr, statDir)->
|
|
|
|
|
+ fs.readdir Path.dirname(path), (readdirErr, readdirDir)->
|
|
|
logger.err error:error, path:path, statLock:statLock, statLockErr:statLockErr, statDir:statDir, statDirErr: statDirErr, readdirErr:readdirErr, readdirDir:readdirDir, "unable to get lock"
|
|
logger.err error:error, path:path, statLock:statLock, statLockErr:statLockErr, statDir:statDir, statDirErr: statDirErr, readdirErr:readdirErr, readdirDir:readdirDir, "unable to get lock"
|
|
|
return callback(error)
|
|
return callback(error)
|
|
|
- else
|
|
|
|
|
- runner (error1, args...) ->
|
|
|
|
|
- Lockfile.unlock path, (error2) ->
|
|
|
|
|
- error = error1 or error2
|
|
|
|
|
- return callback(error) if error?
|
|
|
|
|
- callback(null, args...)
|
|
|
|
|
|
|
+ else
|
|
|
|
|
+ runner (error1, args...) ->
|
|
|
|
|
+ Lockfile.unlock path, (error2) ->
|
|
|
|
|
+ error = error1 or error2
|
|
|
|
|
+ return callback(error) if error?
|
|
|
|
|
+ callback(null, args...)
|