昨日 [2012-09-27-1] の続き.
以下のように print をいれて,どこのファイルでひっかかるのか確認
sub _lock_write { my ($filename, $mode) = @_; print "$filename: $mode\n";
これで実行すると,以下のように
/var/lib/munin/spool/SPOOL-META を "r" で開いたときに
flock($fh, LOCK_EX) が失敗している.
$ sudo -u munin /usr/share/munin/munin-asyncd -v /var/lib/munin/spool/SPOOL-META: r Cannot lock tied file '/var/lib/munin/spool/SPOOL-META' - Bad file number at /usr/perl5/vendor_perl/5.12/Munin/Common/SyncDictFile.pm line 182.
なので,以下のようにして,SPOOL-META を開くときの mode を
"w+" に変えてしまう.
sub _lock_write { my ($filename, $mode) = @_; $mode = "w+" if $filename =~ /SPOOL-META/; print "$filename: $mode\n";
すると,以下のように,flock でひっかからなくなる.
$ sudo -u munin /usr/share/munin/munin-asyncd -v /var/lib/munin/spool/SPOOL-META: w+ /var/lib/munin/spool/SPOOL-META.tmp: w+ /var/lib/munin/spool/SPOOL-META: w+ /var/lib/munin/spool/SPOOL-META.tmp: w+ /var/lib/munin/spool/SPOOL-META: w+ /var/lib/munin/spool/SPOOL-META.tmp: w+ [21634][main] Reading config from localhost:4949 [21634][plugin:cpu] asking for config [21634][plugin:cpu] asking for data [21634][plugin:df] asking for config
場当り的だけど,これで動くので,
とりあえず,しばらくはこれで使ってみる.
ちなみに,SPOOL-META は以下のようなファイル.
$ cat /var/lib/munin/spool/SPOOL-META lastruntime:1348803319
Referrer (Inside):
[2013-08-17-1] Solaris 11 で Munin asyncd を使う
[2012-09-29-1] munin-async を Solaris 11 上で動かしたい 3
comments powered by Disqus
[2013-08-17-1] Solaris 11 で Munin asyncd を使う
[2012-09-29-1] munin-async を Solaris 11 上で動かしたい 3