Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

resource version reset default when event object resource version inv… - #199

Closed
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master
Closed

resource version reset default when event object resource version inv…#199
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master

Conversation

@DrAuYueng

Copy link
Copy Markdown

Watch an API resource and stream the result back via a generator, when resource_version specified, may be cause "too old resource version" error, then result would be:
{ "type":"ERROR", "object":{ "kind":"Status", "apiVersion":"v1", "metadata":{ }, "status":"Failure", "message":"too old resource version: 38081900 (64845263)", "reason":"Gone", "code":410 } }
In this case, the func unmarshal_event can not parse the right resource version, actually is None,
the stream while loop continue, the next request will get ApiException: (500) error:
HTTP response headers: HTTPHeaderDict({'Content-Length': '186', 'Content-Type': 'application/json', 'Date': 'Fri, 19 Jun 2020 06:21:06 GMT'}) HTTP response body: b'{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"resourceVersion: Invalid value: \\"None\\": strconv.ParseUint: parsing \\"None\\": invalid syntax","code":500}\n'

@k8s-ci-robotk8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jun 20, 2020
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DrAuYueng
To complete the pull request process, please assign yliaog
You can assign the PR to them by writing /assign @yliaog in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @DrAuYueng!

It looks like this is your first PR to kubernetes-client/python-base 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python-base has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robotk8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 20, 2020
@DrAuYueng

Copy link
Copy Markdown
Author

@yliaog

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Merging #199 into master will increase coverage by 0.42%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## master #199 +/- ##
==========================================
+ Coverage 92.23% 92.66% +0.42% 
==========================================
Files 13 13 Lines 1481 1554 +73 ==========================================
+ Hits 1366 1440 +74 + Misses 115 114 -1 
Impacted FilesCoverage Δ
watch/watch.py100.00% <100.00%> (ø)
config/kube_config.py83.29% <0.00%> (-0.20%)⬇️
config/kube_config_test.py95.76% <0.00%> (+0.16%)⬆️
config/incluster_config_test.py97.84% <0.00%> (+0.55%)⬆️
config/incluster_config.py95.45% <0.00%> (+10.34%)⬆️

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 b87a5fe...8b57234. Read the comment docs.

@DrAuYueng

Copy link
Copy Markdown
Author

kubernetes version:v1.14.6

@roycaihw

Copy link
Copy Markdown
Member

/cc

Comment threadwatch/watch.py
if self.resource_version is None:
# In some case like 'too old resource version',
# the event type would be ERROR, resource version will be None
self.resource_version = 0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Watching with resourceVersion=0doesn't guarantee the client to continue watching from the last seen state, and therefore may cause missing watch events. The right way to handle a 410 Gone response is to perform a LIST request, and start the watch from the resourceVersion returned by that new list operation (see https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes for more details).

This is part of the problems kubernetes-client/python#868 was trying to address

@DrAuYuengDrAuYuengJun 24, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Make resourceVersion=0 make sure the watch stream still work even if the wrong init resource version set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

I don't think that's what we want and it should not happen

perform a LIST request, and start the watch from the resourceVersion returned by that new list operation

the resourceVersion returned by a LIST request will be the latest resourceVersion, it won't be stale

@fejta-bot

Copy link
Copy Markdown

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robotk8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 20, 2020
@fejta-bot

Copy link
Copy Markdown

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robotk8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 19, 2020
@fejta-bot

Copy link
Copy Markdown

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@fejta-bot: Closed this PR.

Details

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.size/XSDenotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@DrAuYueng@k8s-ci-robot@codecov-commenter@roycaihw@fejta-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
resource version reset default when event object resource version inv… by DrAuYueng · Pull Request #199 · kubernetes-client/python-base · GitHub
Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

resource version reset default when event object resource version inv… - #199

Closed
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master
Closed

resource version reset default when event object resource version inv…#199
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master

Conversation

@DrAuYueng

Copy link
Copy Markdown

Watch an API resource and stream the result back via a generator, when resource_version specified, may be cause "too old resource version" error, then result would be:
{ "type":"ERROR", "object":{ "kind":"Status", "apiVersion":"v1", "metadata":{ }, "status":"Failure", "message":"too old resource version: 38081900 (64845263)", "reason":"Gone", "code":410 } }
In this case, the func unmarshal_event can not parse the right resource version, actually is None,
the stream while loop continue, the next request will get ApiException: (500) error:
HTTP response headers: HTTPHeaderDict({'Content-Length': '186', 'Content-Type': 'application/json', 'Date': 'Fri, 19 Jun 2020 06:21:06 GMT'}) HTTP response body: b'{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"resourceVersion: Invalid value: \\"None\\": strconv.ParseUint: parsing \\"None\\": invalid syntax","code":500}\n'

@k8s-ci-robotk8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jun 20, 2020
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DrAuYueng
To complete the pull request process, please assign yliaog
You can assign the PR to them by writing /assign @yliaog in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @DrAuYueng!

It looks like this is your first PR to kubernetes-client/python-base 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python-base has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robotk8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 20, 2020
@DrAuYueng

Copy link
Copy Markdown
Author

@yliaog

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Merging #199 into master will increase coverage by 0.42%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## master #199 +/- ##
==========================================
+ Coverage 92.23% 92.66% +0.42% 
==========================================
Files 13 13 Lines 1481 1554 +73 ==========================================
+ Hits 1366 1440 +74 + Misses 115 114 -1 
Impacted FilesCoverage Δ
watch/watch.py100.00% <100.00%> (ø)
config/kube_config.py83.29% <0.00%> (-0.20%)⬇️
config/kube_config_test.py95.76% <0.00%> (+0.16%)⬆️
config/incluster_config_test.py97.84% <0.00%> (+0.55%)⬆️
config/incluster_config.py95.45% <0.00%> (+10.34%)⬆️

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 b87a5fe...8b57234. Read the comment docs.

@DrAuYueng

Copy link
Copy Markdown
Author

kubernetes version:v1.14.6

@roycaihw

Copy link
Copy Markdown
Member

/cc

Comment threadwatch/watch.py
if self.resource_version is None:
# In some case like 'too old resource version',
# the event type would be ERROR, resource version will be None
self.resource_version = 0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Watching with resourceVersion=0doesn't guarantee the client to continue watching from the last seen state, and therefore may cause missing watch events. The right way to handle a 410 Gone response is to perform a LIST request, and start the watch from the resourceVersion returned by that new list operation (see https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes for more details).

This is part of the problems kubernetes-client/python#868 was trying to address

@DrAuYuengDrAuYuengJun 24, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Make resourceVersion=0 make sure the watch stream still work even if the wrong init resource version set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

I don't think that's what we want and it should not happen

perform a LIST request, and start the watch from the resourceVersion returned by that new list operation

the resourceVersion returned by a LIST request will be the latest resourceVersion, it won't be stale

@fejta-bot

Copy link
Copy Markdown

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robotk8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 20, 2020
@fejta-bot

Copy link
Copy Markdown

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robotk8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 19, 2020
@fejta-bot

Copy link
Copy Markdown

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@fejta-bot: Closed this PR.

Details

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.size/XSDenotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@DrAuYueng@k8s-ci-robot@codecov-commenter@roycaihw@fejta-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' resource version reset default when event object resource version inv… by DrAuYueng · Pull Request #199 · kubernetes-client/python-base · GitHub
Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

resource version reset default when event object resource version inv… - #199

Closed
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master
Closed

resource version reset default when event object resource version inv…#199
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master

Conversation

@DrAuYueng

Copy link
Copy Markdown

Watch an API resource and stream the result back via a generator, when resource_version specified, may be cause "too old resource version" error, then result would be:
{ "type":"ERROR", "object":{ "kind":"Status", "apiVersion":"v1", "metadata":{ }, "status":"Failure", "message":"too old resource version: 38081900 (64845263)", "reason":"Gone", "code":410 } }
In this case, the func unmarshal_event can not parse the right resource version, actually is None,
the stream while loop continue, the next request will get ApiException: (500) error:
HTTP response headers: HTTPHeaderDict({'Content-Length': '186', 'Content-Type': 'application/json', 'Date': 'Fri, 19 Jun 2020 06:21:06 GMT'}) HTTP response body: b'{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"resourceVersion: Invalid value: \\"None\\": strconv.ParseUint: parsing \\"None\\": invalid syntax","code":500}\n'

@k8s-ci-robotk8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jun 20, 2020
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DrAuYueng
To complete the pull request process, please assign yliaog
You can assign the PR to them by writing /assign @yliaog in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @DrAuYueng!

It looks like this is your first PR to kubernetes-client/python-base 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python-base has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robotk8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 20, 2020
@DrAuYueng

Copy link
Copy Markdown
Author

@yliaog

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Merging #199 into master will increase coverage by 0.42%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## master #199 +/- ##
==========================================
+ Coverage 92.23% 92.66% +0.42% 
==========================================
Files 13 13 Lines 1481 1554 +73 ==========================================
+ Hits 1366 1440 +74 + Misses 115 114 -1 
Impacted FilesCoverage Δ
watch/watch.py100.00% <100.00%> (ø)
config/kube_config.py83.29% <0.00%> (-0.20%)⬇️
config/kube_config_test.py95.76% <0.00%> (+0.16%)⬆️
config/incluster_config_test.py97.84% <0.00%> (+0.55%)⬆️
config/incluster_config.py95.45% <0.00%> (+10.34%)⬆️

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 b87a5fe...8b57234. Read the comment docs.

@DrAuYueng

Copy link
Copy Markdown
Author

kubernetes version:v1.14.6

@roycaihw

Copy link
Copy Markdown
Member

/cc

Comment threadwatch/watch.py
if self.resource_version is None:
# In some case like 'too old resource version',
# the event type would be ERROR, resource version will be None
self.resource_version = 0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Watching with resourceVersion=0doesn't guarantee the client to continue watching from the last seen state, and therefore may cause missing watch events. The right way to handle a 410 Gone response is to perform a LIST request, and start the watch from the resourceVersion returned by that new list operation (see https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes for more details).

This is part of the problems kubernetes-client/python#868 was trying to address

@DrAuYuengDrAuYuengJun 24, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Make resourceVersion=0 make sure the watch stream still work even if the wrong init resource version set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

I don't think that's what we want and it should not happen

perform a LIST request, and start the watch from the resourceVersion returned by that new list operation

the resourceVersion returned by a LIST request will be the latest resourceVersion, it won't be stale

@fejta-bot

Copy link
Copy Markdown

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robotk8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 20, 2020
@fejta-bot

Copy link
Copy Markdown

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robotk8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 19, 2020
@fejta-bot

Copy link
Copy Markdown

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@fejta-bot: Closed this PR.

Details

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.size/XSDenotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@DrAuYueng@k8s-ci-robot@codecov-commenter@roycaihw@fejta-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' resource version reset default when event object resource version inv… by DrAuYueng · Pull Request #199 · kubernetes-client/python-base · GitHub
Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

resource version reset default when event object resource version inv… - #199

Closed
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master
Closed

resource version reset default when event object resource version inv…#199
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master

Conversation

@DrAuYueng

Copy link
Copy Markdown

Watch an API resource and stream the result back via a generator, when resource_version specified, may be cause "too old resource version" error, then result would be:
{ "type":"ERROR", "object":{ "kind":"Status", "apiVersion":"v1", "metadata":{ }, "status":"Failure", "message":"too old resource version: 38081900 (64845263)", "reason":"Gone", "code":410 } }
In this case, the func unmarshal_event can not parse the right resource version, actually is None,
the stream while loop continue, the next request will get ApiException: (500) error:
HTTP response headers: HTTPHeaderDict({'Content-Length': '186', 'Content-Type': 'application/json', 'Date': 'Fri, 19 Jun 2020 06:21:06 GMT'}) HTTP response body: b'{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"resourceVersion: Invalid value: \\"None\\": strconv.ParseUint: parsing \\"None\\": invalid syntax","code":500}\n'

@k8s-ci-robotk8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jun 20, 2020
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DrAuYueng
To complete the pull request process, please assign yliaog
You can assign the PR to them by writing /assign @yliaog in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @DrAuYueng!

It looks like this is your first PR to kubernetes-client/python-base 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python-base has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robotk8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 20, 2020
@DrAuYueng

Copy link
Copy Markdown
Author

@yliaog

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Merging #199 into master will increase coverage by 0.42%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## master #199 +/- ##
==========================================
+ Coverage 92.23% 92.66% +0.42% 
==========================================
Files 13 13 Lines 1481 1554 +73 ==========================================
+ Hits 1366 1440 +74 + Misses 115 114 -1 
Impacted FilesCoverage Δ
watch/watch.py100.00% <100.00%> (ø)
config/kube_config.py83.29% <0.00%> (-0.20%)⬇️
config/kube_config_test.py95.76% <0.00%> (+0.16%)⬆️
config/incluster_config_test.py97.84% <0.00%> (+0.55%)⬆️
config/incluster_config.py95.45% <0.00%> (+10.34%)⬆️

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 b87a5fe...8b57234. Read the comment docs.

@DrAuYueng

Copy link
Copy Markdown
Author

kubernetes version:v1.14.6

@roycaihw

Copy link
Copy Markdown
Member

/cc

Comment threadwatch/watch.py
if self.resource_version is None:
# In some case like 'too old resource version',
# the event type would be ERROR, resource version will be None
self.resource_version = 0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Watching with resourceVersion=0doesn't guarantee the client to continue watching from the last seen state, and therefore may cause missing watch events. The right way to handle a 410 Gone response is to perform a LIST request, and start the watch from the resourceVersion returned by that new list operation (see https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes for more details).

This is part of the problems kubernetes-client/python#868 was trying to address

@DrAuYuengDrAuYuengJun 24, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Make resourceVersion=0 make sure the watch stream still work even if the wrong init resource version set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

I don't think that's what we want and it should not happen

perform a LIST request, and start the watch from the resourceVersion returned by that new list operation

the resourceVersion returned by a LIST request will be the latest resourceVersion, it won't be stale

@fejta-bot

Copy link
Copy Markdown

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robotk8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 20, 2020
@fejta-bot

Copy link
Copy Markdown

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robotk8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 19, 2020
@fejta-bot

Copy link
Copy Markdown

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@fejta-bot: Closed this PR.

Details

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.size/XSDenotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@DrAuYueng@k8s-ci-robot@codecov-commenter@roycaihw@fejta-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' resource version reset default when event object resource version inv… by DrAuYueng · Pull Request #199 · kubernetes-client/python-base · GitHub
Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

resource version reset default when event object resource version inv… - #199

Closed
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master
Closed

resource version reset default when event object resource version inv…#199
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master

Conversation

@DrAuYueng

Copy link
Copy Markdown

Watch an API resource and stream the result back via a generator, when resource_version specified, may be cause "too old resource version" error, then result would be:
{ "type":"ERROR", "object":{ "kind":"Status", "apiVersion":"v1", "metadata":{ }, "status":"Failure", "message":"too old resource version: 38081900 (64845263)", "reason":"Gone", "code":410 } }
In this case, the func unmarshal_event can not parse the right resource version, actually is None,
the stream while loop continue, the next request will get ApiException: (500) error:
HTTP response headers: HTTPHeaderDict({'Content-Length': '186', 'Content-Type': 'application/json', 'Date': 'Fri, 19 Jun 2020 06:21:06 GMT'}) HTTP response body: b'{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"resourceVersion: Invalid value: \\"None\\": strconv.ParseUint: parsing \\"None\\": invalid syntax","code":500}\n'

@k8s-ci-robotk8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jun 20, 2020
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DrAuYueng
To complete the pull request process, please assign yliaog
You can assign the PR to them by writing /assign @yliaog in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @DrAuYueng!

It looks like this is your first PR to kubernetes-client/python-base 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python-base has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robotk8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 20, 2020
@DrAuYueng

Copy link
Copy Markdown
Author

@yliaog

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Merging #199 into master will increase coverage by 0.42%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## master #199 +/- ##
==========================================
+ Coverage 92.23% 92.66% +0.42% 
==========================================
Files 13 13 Lines 1481 1554 +73 ==========================================
+ Hits 1366 1440 +74 + Misses 115 114 -1 
Impacted FilesCoverage Δ
watch/watch.py100.00% <100.00%> (ø)
config/kube_config.py83.29% <0.00%> (-0.20%)⬇️
config/kube_config_test.py95.76% <0.00%> (+0.16%)⬆️
config/incluster_config_test.py97.84% <0.00%> (+0.55%)⬆️
config/incluster_config.py95.45% <0.00%> (+10.34%)⬆️

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 b87a5fe...8b57234. Read the comment docs.

@DrAuYueng

Copy link
Copy Markdown
Author

kubernetes version:v1.14.6

@roycaihw

Copy link
Copy Markdown
Member

/cc

Comment threadwatch/watch.py
if self.resource_version is None:
# In some case like 'too old resource version',
# the event type would be ERROR, resource version will be None
self.resource_version = 0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Watching with resourceVersion=0doesn't guarantee the client to continue watching from the last seen state, and therefore may cause missing watch events. The right way to handle a 410 Gone response is to perform a LIST request, and start the watch from the resourceVersion returned by that new list operation (see https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes for more details).

This is part of the problems kubernetes-client/python#868 was trying to address

@DrAuYuengDrAuYuengJun 24, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Make resourceVersion=0 make sure the watch stream still work even if the wrong init resource version set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

I don't think that's what we want and it should not happen

perform a LIST request, and start the watch from the resourceVersion returned by that new list operation

the resourceVersion returned by a LIST request will be the latest resourceVersion, it won't be stale

@fejta-bot

Copy link
Copy Markdown

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robotk8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 20, 2020
@fejta-bot

Copy link
Copy Markdown

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robotk8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 19, 2020
@fejta-bot

Copy link
Copy Markdown

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@fejta-bot: Closed this PR.

Details

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.size/XSDenotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@DrAuYueng@k8s-ci-robot@codecov-commenter@roycaihw@fejta-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' resource version reset default when event object resource version inv… by DrAuYueng · Pull Request #199 · kubernetes-client/python-base · GitHub
Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

resource version reset default when event object resource version inv… - #199

Closed
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master
Closed

resource version reset default when event object resource version inv…#199
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master

Conversation

@DrAuYueng

Copy link
Copy Markdown

Watch an API resource and stream the result back via a generator, when resource_version specified, may be cause "too old resource version" error, then result would be:
{ "type":"ERROR", "object":{ "kind":"Status", "apiVersion":"v1", "metadata":{ }, "status":"Failure", "message":"too old resource version: 38081900 (64845263)", "reason":"Gone", "code":410 } }
In this case, the func unmarshal_event can not parse the right resource version, actually is None,
the stream while loop continue, the next request will get ApiException: (500) error:
HTTP response headers: HTTPHeaderDict({'Content-Length': '186', 'Content-Type': 'application/json', 'Date': 'Fri, 19 Jun 2020 06:21:06 GMT'}) HTTP response body: b'{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"resourceVersion: Invalid value: \\"None\\": strconv.ParseUint: parsing \\"None\\": invalid syntax","code":500}\n'

@k8s-ci-robotk8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jun 20, 2020
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DrAuYueng
To complete the pull request process, please assign yliaog
You can assign the PR to them by writing /assign @yliaog in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @DrAuYueng!

It looks like this is your first PR to kubernetes-client/python-base 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python-base has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robotk8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 20, 2020
@DrAuYueng

Copy link
Copy Markdown
Author

@yliaog

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Merging #199 into master will increase coverage by 0.42%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## master #199 +/- ##
==========================================
+ Coverage 92.23% 92.66% +0.42% 
==========================================
Files 13 13 Lines 1481 1554 +73 ==========================================
+ Hits 1366 1440 +74 + Misses 115 114 -1 
Impacted FilesCoverage Δ
watch/watch.py100.00% <100.00%> (ø)
config/kube_config.py83.29% <0.00%> (-0.20%)⬇️
config/kube_config_test.py95.76% <0.00%> (+0.16%)⬆️
config/incluster_config_test.py97.84% <0.00%> (+0.55%)⬆️
config/incluster_config.py95.45% <0.00%> (+10.34%)⬆️

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 b87a5fe...8b57234. Read the comment docs.

@DrAuYueng

Copy link
Copy Markdown
Author

kubernetes version:v1.14.6

@roycaihw

Copy link
Copy Markdown
Member

/cc

Comment threadwatch/watch.py
if self.resource_version is None:
# In some case like 'too old resource version',
# the event type would be ERROR, resource version will be None
self.resource_version = 0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Watching with resourceVersion=0doesn't guarantee the client to continue watching from the last seen state, and therefore may cause missing watch events. The right way to handle a 410 Gone response is to perform a LIST request, and start the watch from the resourceVersion returned by that new list operation (see https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes for more details).

This is part of the problems kubernetes-client/python#868 was trying to address

@DrAuYuengDrAuYuengJun 24, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Make resourceVersion=0 make sure the watch stream still work even if the wrong init resource version set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

I don't think that's what we want and it should not happen

perform a LIST request, and start the watch from the resourceVersion returned by that new list operation

the resourceVersion returned by a LIST request will be the latest resourceVersion, it won't be stale

@fejta-bot

Copy link
Copy Markdown

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robotk8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 20, 2020
@fejta-bot

Copy link
Copy Markdown

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robotk8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 19, 2020
@fejta-bot

Copy link
Copy Markdown

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@fejta-bot: Closed this PR.

Details

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.size/XSDenotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@DrAuYueng@k8s-ci-robot@codecov-commenter@roycaihw@fejta-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' resource version reset default when event object resource version inv… by DrAuYueng · Pull Request #199 · kubernetes-client/python-base · GitHub
Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

resource version reset default when event object resource version inv… - #199

Closed
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master
Closed

resource version reset default when event object resource version inv…#199
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master

Conversation

@DrAuYueng

Copy link
Copy Markdown

Watch an API resource and stream the result back via a generator, when resource_version specified, may be cause "too old resource version" error, then result would be:
{ "type":"ERROR", "object":{ "kind":"Status", "apiVersion":"v1", "metadata":{ }, "status":"Failure", "message":"too old resource version: 38081900 (64845263)", "reason":"Gone", "code":410 } }
In this case, the func unmarshal_event can not parse the right resource version, actually is None,
the stream while loop continue, the next request will get ApiException: (500) error:
HTTP response headers: HTTPHeaderDict({'Content-Length': '186', 'Content-Type': 'application/json', 'Date': 'Fri, 19 Jun 2020 06:21:06 GMT'}) HTTP response body: b'{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"resourceVersion: Invalid value: \\"None\\": strconv.ParseUint: parsing \\"None\\": invalid syntax","code":500}\n'

@k8s-ci-robotk8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jun 20, 2020
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DrAuYueng
To complete the pull request process, please assign yliaog
You can assign the PR to them by writing /assign @yliaog in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @DrAuYueng!

It looks like this is your first PR to kubernetes-client/python-base 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python-base has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robotk8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 20, 2020
@DrAuYueng

Copy link
Copy Markdown
Author

@yliaog

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Merging #199 into master will increase coverage by 0.42%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## master #199 +/- ##
==========================================
+ Coverage 92.23% 92.66% +0.42% 
==========================================
Files 13 13 Lines 1481 1554 +73 ==========================================
+ Hits 1366 1440 +74 + Misses 115 114 -1 
Impacted FilesCoverage Δ
watch/watch.py100.00% <100.00%> (ø)
config/kube_config.py83.29% <0.00%> (-0.20%)⬇️
config/kube_config_test.py95.76% <0.00%> (+0.16%)⬆️
config/incluster_config_test.py97.84% <0.00%> (+0.55%)⬆️
config/incluster_config.py95.45% <0.00%> (+10.34%)⬆️

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 b87a5fe...8b57234. Read the comment docs.

@DrAuYueng

Copy link
Copy Markdown
Author

kubernetes version:v1.14.6

@roycaihw

Copy link
Copy Markdown
Member

/cc

Comment threadwatch/watch.py
if self.resource_version is None:
# In some case like 'too old resource version',
# the event type would be ERROR, resource version will be None
self.resource_version = 0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Watching with resourceVersion=0doesn't guarantee the client to continue watching from the last seen state, and therefore may cause missing watch events. The right way to handle a 410 Gone response is to perform a LIST request, and start the watch from the resourceVersion returned by that new list operation (see https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes for more details).

This is part of the problems kubernetes-client/python#868 was trying to address

@DrAuYuengDrAuYuengJun 24, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Make resourceVersion=0 make sure the watch stream still work even if the wrong init resource version set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

I don't think that's what we want and it should not happen

perform a LIST request, and start the watch from the resourceVersion returned by that new list operation

the resourceVersion returned by a LIST request will be the latest resourceVersion, it won't be stale

@fejta-bot

Copy link
Copy Markdown

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robotk8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 20, 2020
@fejta-bot

Copy link
Copy Markdown

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robotk8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 19, 2020
@fejta-bot

Copy link
Copy Markdown

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@fejta-bot: Closed this PR.

Details

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.size/XSDenotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@DrAuYueng@k8s-ci-robot@codecov-commenter@roycaihw@fejta-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); resource version reset default when event object resource version inv… by DrAuYueng · Pull Request #199 · kubernetes-client/python-base · GitHub
Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

resource version reset default when event object resource version inv… - #199

Closed
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master
Closed

resource version reset default when event object resource version inv…#199
DrAuYueng wants to merge 1 commit into
kubernetes-client:masterfrom
DrAuYueng:master

Conversation

@DrAuYueng

Copy link
Copy Markdown

Watch an API resource and stream the result back via a generator, when resource_version specified, may be cause "too old resource version" error, then result would be:
{ "type":"ERROR", "object":{ "kind":"Status", "apiVersion":"v1", "metadata":{ }, "status":"Failure", "message":"too old resource version: 38081900 (64845263)", "reason":"Gone", "code":410 } }
In this case, the func unmarshal_event can not parse the right resource version, actually is None,
the stream while loop continue, the next request will get ApiException: (500) error:
HTTP response headers: HTTPHeaderDict({'Content-Length': '186', 'Content-Type': 'application/json', 'Date': 'Fri, 19 Jun 2020 06:21:06 GMT'}) HTTP response body: b'{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"resourceVersion: Invalid value: \\"None\\": strconv.ParseUint: parsing \\"None\\": invalid syntax","code":500}\n'

@k8s-ci-robotk8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jun 20, 2020
@k8s-ci-robot

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: DrAuYueng
To complete the pull request process, please assign yliaog
You can assign the PR to them by writing /assign @yliaog in a comment when ready.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

Welcome @DrAuYueng!

It looks like this is your first PR to kubernetes-client/python-base 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-client/python-base has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robotk8s-ci-robot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jun 20, 2020
@DrAuYueng

Copy link
Copy Markdown
Author

@yliaog

@codecov-commenter

Copy link
Copy Markdown

Codecov Report

Merging #199 into master will increase coverage by 0.42%.
The diff coverage is 100.00%.

Impacted file tree graph

@@ Coverage Diff @@## master #199 +/- ##
==========================================
+ Coverage 92.23% 92.66% +0.42% 
==========================================
Files 13 13 Lines 1481 1554 +73 ==========================================
+ Hits 1366 1440 +74 + Misses 115 114 -1 
Impacted FilesCoverage Δ
watch/watch.py100.00% <100.00%> (ø)
config/kube_config.py83.29% <0.00%> (-0.20%)⬇️
config/kube_config_test.py95.76% <0.00%> (+0.16%)⬆️
config/incluster_config_test.py97.84% <0.00%> (+0.55%)⬆️
config/incluster_config.py95.45% <0.00%> (+10.34%)⬆️

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 b87a5fe...8b57234. Read the comment docs.

@DrAuYueng

Copy link
Copy Markdown
Author

kubernetes version:v1.14.6

@roycaihw

Copy link
Copy Markdown
Member

/cc

Comment threadwatch/watch.py
if self.resource_version is None:
# In some case like 'too old resource version',
# the event type would be ERROR, resource version will be None
self.resource_version = 0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Watching with resourceVersion=0doesn't guarantee the client to continue watching from the last seen state, and therefore may cause missing watch events. The right way to handle a 410 Gone response is to perform a LIST request, and start the watch from the resourceVersion returned by that new list operation (see https://kubernetes.io/docs/reference/using-api/api-concepts/#efficient-detection-of-changes for more details).

This is part of the problems kubernetes-client/python#868 was trying to address

@DrAuYuengDrAuYuengJun 24, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

If catch event type of Error and continue like #133 ,will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

Make resourceVersion=0 make sure the watch stream still work even if the wrong init resource version set

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

will cause endless loop, current resourceVersion never change, always get Error of message:"too old resource version"

I don't think that's what we want and it should not happen

perform a LIST request, and start the watch from the resourceVersion returned by that new list operation

the resourceVersion returned by a LIST request will be the latest resourceVersion, it won't be stale

@fejta-bot

Copy link
Copy Markdown

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robotk8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 20, 2020
@fejta-bot

Copy link
Copy Markdown

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robotk8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Nov 19, 2020
@fejta-bot

Copy link
Copy Markdown

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot

Copy link
Copy Markdown
Contributor

@fejta-bot: Closed this PR.

Details

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cncf-cla: yesIndicates the PR's author has signed the CNCF CLA.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.size/XSDenotes a PR that changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@DrAuYueng@k8s-ci-robot@codecov-commenter@roycaihw@fejta-bot