16133: Avoid cycle between old and new controllers.
authorTom Clegg <tom@tomclegg.ca>
Thu, 6 Feb 2020 15:45:48 +0000 (10:45 -0500)
committerTom Clegg <tom@tomclegg.ca>
Thu, 6 Feb 2020 16:02:51 +0000 (11:02 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@tomclegg.ca>

lib/controller/federation/conn.go

index 0416549ca4d2390c78e04e57798d7010b5911375..4d4141ffd6a04b7b3fe793607959c678fe4a25b9 100644 (file)
@@ -38,7 +38,11 @@ func New(cluster *arvados.Cluster) *Conn {
                if !remote.Proxy {
                        continue
                }
-               remotes[id] = rpc.NewConn(id, &url.URL{Scheme: remote.Scheme, Host: remote.Host}, remote.Insecure, saltedTokenProvider(local, id))
+               conn := rpc.NewConn(id, &url.URL{Scheme: remote.Scheme, Host: remote.Host}, remote.Insecure, saltedTokenProvider(local, id))
+               // Older versions of controller rely on the Via header
+               // to detect loops.
+               conn.SendHeader = http.Header{"Via": {"HTTP/1.1 arvados-controller"}}
+               remotes[id] = conn
        }
 
        return &Conn{