aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki.pm
diff options
context:
space:
mode:
authorMark Jason Dominus (陶敏修) <mjd@plover.com>2014-11-30 14:34:46 -0500
committerAmitai Schlair <schmonz-web-ikiwiki@schmonz.com>2014-12-02 10:37:09 -0500
commite2354943d7bca4e52fce923ff7709b7f84bd76e1 (patch)
treee1f2bab50d22228c987b62f4e8f3053323e4aca9 /IkiWiki.pm
parentcfbf8f07252b13143412413e753c3849efa5153c (diff)
downloadikiwiki-e2354943d7bca4e52fce923ff7709b7f84bd76e1.tar
ikiwiki-e2354943d7bca4e52fce923ff7709b7f84bd76e1.tar.gz
in debug mode, issue a warning before waiting for a lock
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r--IkiWiki.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 03f058ef7..a8e2865be 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -5,6 +5,7 @@ package IkiWiki;
use warnings;
use strict;
use Encode;
+use Fcntl q{:flock};
use URI::Escape q{uri_escape_utf8};
use POSIX ();
use Storable;
@@ -1813,8 +1814,11 @@ sub lockwiki () {
}
open($wikilock, '>', "$config{wikistatedir}/lockfile") ||
error ("cannot write to $config{wikistatedir}/lockfile: $!");
- if (! flock($wikilock, 2)) { # LOCK_EX
- error("failed to get lock");
+ if (! flock($wikilock, LOCK_EX | LOCK_NB)) {
+ debug("failed to get lock; waiting...");
+ if (! flock($wikilock, LOCK_EX)) {
+ error("failed to get lock");
+ }
}
return 1;
}