Move fork processing code to earlier in file.
This commit is contained in:
		
							parent
							
								
									26edcca3a3
								
							
						
					
					
						commit
						90466f78e4
					
				
					 1 changed files with 19 additions and 16 deletions
				
			
		|  | @ -137,6 +137,25 @@ while (my $line = <STDIN>) { | ||||||
|   $WHITELIST_COMMIT_IDS{$line} = $line; |   $WHITELIST_COMMIT_IDS{$line} = $line; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | ############################################################################## | ||||||
|  | # Set up child processing and signal commits. | ||||||
|  | 
 | ||||||
|  | my %childProcesses; | ||||||
|  | my %finishedCommits; | ||||||
|  | 
 | ||||||
|  | $SIG{CHLD} = sub { | ||||||
|  |   # don't change $! and $? outside handler | ||||||
|  |   local ($!, $?); | ||||||
|  |   while ( (my $pid = waitpid(-1, WNOHANG)) > 0 ) { | ||||||
|  |     my($errCode, $errString) = ($?, $!); | ||||||
|  |     my $commitId = $childProcesses{$pid}; | ||||||
|  |     my $now = strftime("%Y-%m-%d %H:%M:%S", localtime); | ||||||
|  |     print STDERR "Finished commit $commitId $childProcesses{$pid} in $pid ($errCode, \"$errString\") at $now\n" if $VERBOSE; | ||||||
|  |     $finishedCommits{$commitId} = { pid => $pid, time => $now, errCode => $errCode, errString => $errString }; | ||||||
|  |     delete $childProcesses{$pid}; | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| ############################################################################## | ############################################################################## | ||||||
| # ProcessCommit is the primary function that processes a commit to generate | # ProcessCommit is the primary function that processes a commit to generate | ||||||
| # the blame data.  If $fileListRef is defined, it should be a list reference, | # the blame data.  If $fileListRef is defined, it should be a list reference, | ||||||
|  | @ -219,22 +238,6 @@ if (defined $CENTRAL_COMMIT) { | ||||||
| 
 | 
 | ||||||
| exit 0; | exit 0; | ||||||
| 
 | 
 | ||||||
| my %childProcesses; |  | ||||||
| my %finishedCommits; |  | ||||||
| 
 |  | ||||||
| $SIG{CHLD} = sub { |  | ||||||
|   # don't change $! and $? outside handler |  | ||||||
|   local ($!, $?); |  | ||||||
|   while ( (my $pid = waitpid(-1, WNOHANG)) > 0 ) { |  | ||||||
|     my($errCode, $errString) = ($?, $!); |  | ||||||
|     my $commitId = $childProcesses{$pid}; |  | ||||||
|     my $now = strftime("%Y-%m-%d %H:%M:%S", localtime); |  | ||||||
|     print STDERR "Finished commit $commitId $childProcesses{$pid} in $pid ($errCode, \"$errString\") at $now\n" if $VERBOSE; |  | ||||||
|     $finishedCommits{$commitId} = { pid => $pid, time => $now, errCode => $errCode, errString => $errString }; |  | ||||||
|     delete $childProcesses{$pid}; |  | ||||||
|   } |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| foreach my $commitId (keys %WHITELIST_COMMIT_IDS) { | foreach my $commitId (keys %WHITELIST_COMMIT_IDS) { | ||||||
|   my $remainingCount = scalar(keys %childProcesses); |   my $remainingCount = scalar(keys %childProcesses); | ||||||
|   while ($remainingCount >=  $FORK_LIMIT) { |   while ($remainingCount >=  $FORK_LIMIT) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn