Changeset 3871
- Timestamp:
- 08/20/10 14:02:58 (1 year ago)
- Files:
-
- trunk/master/lib/Munin/Master/HTMLOld.pm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/master/lib/Munin/Master/HTMLOld.pm
r3404 r3871 90 90 91 91 my $do_dump = 0; 92 my $do_fork = 0; # No effect in this program. 92 my $do_fork = 1; 93 my $max_running=6; 94 my $running=0; 95 93 96 94 97 sub html_startup { … … 122 125 $tmpldir = $config->{tmpldir}; 123 126 $htmldir = $config->{htmldir}; 127 128 $max_running = &munin_get($config, "max_html_jobs", $max_running); 124 129 125 130 %comparisontemplates = instanciate_comparison_templates($tmpldir); … … 827 832 828 833 834 sub fork_and_work { 835 my ($work) = @_; 836 837 if (!$do_fork) { 838 839 # We're not forking. Do work and return. 840 DEBUG "[DEBUG] Doing work synchrnonously"; 841 &$work; 842 return; 843 } 844 845 # Make sure we don't fork too much 846 while ($running >= $max_running) { 847 DEBUG 848 "[DEBUG] Too many forks ($running/$max_running), wait for something to get done"; 849 look_for_child("block"); 850 --$running; 851 } 852 853 my $pid = fork(); 854 855 if (!defined $pid) { 856 ERROR "[ERROR] fork failed: $!"; 857 die "fork failed: $!"; 858 } 859 860 if ($pid == 0) { 861 862 # This block does the real work. Since we're forking exit 863 # afterwards. 864 865 &$work; 866 867 # See?! 868 869 exit 0; 870 871 } 872 else { 873 ++$running; 874 DEBUG "[DEBUG] Forked: $pid. Now running $running/$max_running"; 875 while ($running and look_for_child()) { 876 --$running; 877 } 878 } 879 } 880 881 829 882 sub generate_group_templates { 830 883 my $arr = shift || return; … … 840 893 if (defined $key->{'ngroups'} and $key->{'ngroups'}) { 841 894 # WTF: $key->{'groups'} = $key->{'groups'}; 842 generate_group_templates($key->{'groups'});895 fork_and_work(sub {generate_group_templates($key->{'groups'})}); 843 896 844 897 emit_group_template($key);
