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

internal/contour: remove holdoffmaxdelay forced update #2285

Merged
merged 1 commit into from
Feb 25, 2020

Conversation

davecheney
Copy link
Contributor

Updates #2275

The holdoff logic is subtle, and under tested. To address both of these
issues I'm going to make the fix for #2275 in several stages so we have
a chance to git bisect.

This first change removes the explicit force code path when
holdoffmaxdelay is exceeded. The logic remains the same, if
holdoffmaxdelay is exceeded a delayed update will occur, however after
this change rather than their being a specific code path for the forced
update we set the timer delay to zero, which will make the <-pending
channel ready shortly afterwards.

Strictly speaking a stream of <-op updates can trump a <-pending which
can add further delay to rebuilding the dag but in practice this is
unlikely to occur indefinitely;

  1. When more than one channel is selectable, the runtime chooses between
    them pseudo randomly.
  2. If <-op updates occur continually it is in the users' interest that
    the DAG rebuild is delayed, this is the point of 2275.

A future PR will refactor the delay calculation so that we can test it
in isolation.

Signed-off-by: Dave Cheney [email protected]

@davecheney davecheney added this to the 1.3.0 milestone Feb 24, 2020
Updates projectcontour#2275

The holdoff logic is subtle, and under tested. To address both of these
issues I'm going to make the fix for projectcontour#2275 in several stages so we have
a chance to git bisect.

This first change removes the explicit force code path when
holdoffmaxdelay is exceeded. The logic remains the same, if
holdoffmaxdelay is exceeded a delayed update will occur, however after
this change rather than their being a specific code path for the forced
update we set the timer delay to zero, which will make the <-pending
channel ready shortly afterwards.

Strictly speaking a stream of <-op updates can trump a <-pending which
can add further delay to rebuilding the dag but in practice this is
unlikely to occur indefinitely;

1. When more than one channel is selectable, the runtime chooses between
them pseudo randomly.
2. If <-op updates occur continually it is in the users' interest that
the DAG rebuild is delayed, this is the point of 2275.

A future PR will refactor the delay calculation so that we can test it
in isolation.

Signed-off-by: Dave Cheney <[email protected]>
@codecov
Copy link

codecov bot commented Feb 24, 2020

Codecov Report

Merging #2285 into master will decrease coverage by 0.01%.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #2285      +/-   ##
==========================================
- Coverage   77.34%   77.32%   -0.02%     
==========================================
  Files          59       59              
  Lines        5155     5151       -4     
==========================================
- Hits         3987     3983       -4     
  Misses       1081     1081              
  Partials       87       87              

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 091fdbc...f2d607e. Read the comment docs.

Copy link
Member

@youngnick youngnick left a comment

Choose a reason for hiding this comment

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

LGTM, nice.

@davecheney davecheney merged commit 9131dd6 into projectcontour:master Feb 25, 2020
@davecheney davecheney deleted the issue/2275c branch February 25, 2020 00:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants