diff options
author | Kevin Lynch <klynch@gmail.com> | 2011-10-17 01:53:30 -0400 |
---|---|---|
committer | Kevin Lynch <klynch@gmail.com> | 2011-10-17 01:53:30 -0400 |
commit | 4d37329c732b394dd521a6568be6b7a5b4c3bd68 (patch) | |
tree | 73adbaf01fb7c9566059afcbc7ad9e8a338bd3b9 | |
parent | ef2bf1520489a23ff64224c3e102a03b46243dbf (diff) | |
download | gitlab-ce-4d37329c732b394dd521a6568be6b7a5b4c3bd68.tar.gz |
Must ensure that the lock is always removed.
-rw-r--r-- | lib/gitosis.rb | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/gitosis.rb b/lib/gitosis.rb index a9eef96cd3f..4cc5e6e3d08 100644 --- a/lib/gitosis.rb +++ b/lib/gitosis.rb @@ -27,13 +27,16 @@ class Gitosis def configure status = Timeout::timeout(20) do File.open(File.join(Dir.tmpdir,"gitlabhq-gitosis.lock"), "w+") do |f| - f.flock(File::LOCK_EX) + begin + f.flock(File::LOCK_EX) - pull - yield(self) - push + pull + yield(self) + push - f.flock(File::LOCK_UN) + ensure + f.flock(File::LOCK_UN) + end end end rescue Exception => ex |