in integration_test/agents/agents.go [619:660]
func isRetriableInstallError(imageSpec string, err error) bool {
if strings.Contains(err.Error(), "Could not refresh zypper repositories.") ||
strings.Contains(err.Error(), "Credentials are invalid") ||
strings.Contains(err.Error(), "Resource temporarily unavailable") ||
strings.Contains(err.Error(), "System management is locked by the application") {
return true
}
if gce.IsWindows(imageSpec) &&
strings.Contains(err.Error(), "context deadline exceeded") {
return true // See b/197127877 for history.
}
if strings.Contains(imageSpec, "rhel-8-") && strings.HasSuffix(imageSpec, "-sap-ha") &&
strings.Contains(err.Error(), "Could not refresh the google-cloud-ops-agent yum repositories") {
return true // See b/174039270 for history.
}
if strings.Contains(imageSpec, "rhel-8-") && strings.HasSuffix(imageSpec, "-sap-ha") &&
strings.Contains(err.Error(), "Failed to download metadata for repo 'rhui-rhel-8-") {
return true // This happens when the RHEL servers are down. See b/189950957.
}
if strings.HasPrefix(imageSpec, "rhel-") && strings.Contains(err.Error(), "SSL_ERROR_SYSCALL") {
return true // b/187661497. Example: screen/3PMwAvhNBKWVYub
}
if strings.HasPrefix(imageSpec, "rhel-") && strings.Contains(err.Error(), "Encountered end of file") {
return true // b/184729120#comment31. Example: screen/4yK9evoY68LiaLr
}
if strings.HasPrefix(imageSpec, "ubuntu-os-cloud") && strings.Contains(err.Error(), "Clearsigned file isn't valid") {
// The upstream repo was in an inconsistent state. The error looks like:
// screen/7U24zrRwADyYKqb
return true
}
if strings.HasPrefix(imageSpec, "ubuntu-os-cloud") && strings.Contains(err.Error(), "Mirror sync in progress?") {
// The mirror repo was in an inconsistent state. The error looks like:
// http://screen/Ai2CHc7fcRosHJu
return true
}
if strings.HasPrefix(imageSpec, "ubuntu-os-cloud") && strings.Contains(err.Error(), "Hash Sum mismatch") {
// The mirror repo was in an inconsistent state. The error looks like:
// http://screen/8HjakedwVnXZvw6
return true
}
return false
}