From 8797bd0b8ed9a1d862c26427a0a6b407c7b73586 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Tue, 19 Feb 2013 12:59:37 +0100 Subject: [PATCH] [backend] update remote project data with data from remotemap to reduce RPCs --- src/backend/bs_sched | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/backend/bs_sched b/src/backend/bs_sched index 59477f0c916..95a6b271979 100755 --- a/src/backend/bs_sched +++ b/src/backend/bs_sched @@ -2248,6 +2248,30 @@ sub update_projpacks { delete $proj->{'package'}; } } + remotemap2remoteprojs($projpacksin->{'remotemap'}); +} + +# update remoteprojs with the remotemap data +sub remotemap2remoteprojs { + my ($remotemap) = @_; + + for my $proj (@{$remotemap || []}) { + my $projid = delete $proj->{'project'}; + my $oproj = $remoteprojs{$projid}; + undef $oproj if $oproj && ($oproj->{'remoteurl'} ne $proj->{'remoteurl'} || $oproj->{'remoteproject'} ne $proj->{'remoteproject'}); + my $c = $proj->{'config'}; + $c = $oproj->{'config'} if !defined($c) && $oproj; + my $error = $proj->{'error'}; + delete $proj->{'error'}; + $proj = $oproj if $proj->{'proto'} && $oproj && !$oproj->{'proto'}; + delete $proj->{'config'}; + $proj->{'config'} = $c if defined $c; + if ($error) { + $proj->{'error'} = $error; + addretryevent({'type' => 'project', 'project' => $projid}) if $error =~ /interconnect error:/; + } + $remoteprojs{$projid} = $proj; + } } # -> BSUtil