Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Retry support for ingestion layer #60

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

hemantavi
Copy link
Contributor

Fixes AV-113235
Currently, if AMKO is unable to reach the controller because of a network
issue while validating the references in a GSLBHostRule, it doesn't
retry or reconcile even after the network issue is fixed. A reconcilation
may also be required if the user provides a non-existent reference, but
the user creates the reference later.

This PR introduces a retry queue for the ingestion layer. Currently, it
will only be used for GSLBHostRule objects. It functions like the slow
retry queue, but at the end of the tiner expiry, it makes a decision
to call add/update the GSLBHostRule based on the key that's pushed.

Decision to retry: A retry decision is made for all cases for an object
reference check, except for non-federated objects.

Fixes AV-113235
Currently, if AMKO is unable to reach the controller because of a network
issue while validating the references in a `GSLBHostRule`, it doesn't
retry or reconcile even after the network issue is fixed. A reconcilation
may also be required if the user provides a non-existent reference, but
the user creates the reference later.

This PR introduces a retry queue for the ingestion layer. Currently, it
will only be used for `GSLBHostRule` objects. It functions like the slow
retry queue, but at the end of the tiner expiry, it makes a decision
to call add/update the `GSLBHostRule` based on the key that's pushed.

Decision to retry: A retry decision is made for all cases for an object
reference check, except for non-federated objects.
if fullSync && isHealthMonitorRefPresentInCache(refName) {
gslbutils.Debugf("health monitor %s present in hm cache", refName)
return true
return nil
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible that the ref is removed from the controller but present in cache ?

case gslbutils.GslbHostRuleType:
ghrObj, err := getGslbHostRule(ns, name)
if err != nil {
gslbutils.Errf("key: %s, msg: error in getting GSLBHostRule object: %v", key, err)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we return error in case of delete too ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants