{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":452391137,"defaultBranch":"master","name":"router","ownerLogin":"gcs278","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2022-01-26T18:22:58.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/4316443?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1717005317.0","currentOid":""},"activityList":{"items":[{"before":"126af48798ea7170dd0e7e87d3de8e91a3aca51c","after":"2370e2966a5cd89408cf071b13d198a8a7c39625","ref":"refs/heads/router-resync-fix","pushedAt":"2024-06-13T21:40:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"OCPBUGS-32250: Fix UniqueHost from Preventing Status Updates on Resyncs\n\nRemove the ResourceVersion check in the UniqueHost Plugin to ensure it\n\"activates\" routes even when there are no changes. If routes aren't\n\"activated\", the UniqueHost Plugin won't call downstream plugins.\nIf the downstream plugins aren't called, then the route status won't\nhave a chance to resync.\n\nResyncing route status is vital for after periods of status contention,\nwhich can occur when rolling out new versions of the router. If the\nnew router loses the status update battle to the old router and the old\nrouter is subsequently terminated, the new router needs to resync the\nstatus to achieve the right state.\n\nRemoving this ResourceVersion check should only impact resyncs, as\nroutes are only reconciled without changes during resyncs, except at\ninitial startup.","shortMessageHtmlLink":"OCPBUGS-32250: Fix UniqueHost from Preventing Status Updates on Resyncs"}},{"before":"cb444e62599aea57821ab447d468aa8dda330a61","after":"126af48798ea7170dd0e7e87d3de8e91a3aca51c","ref":"refs/heads/router-resync-fix","pushedAt":"2024-06-13T21:39:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"OCPBUGS-32250: Fix UniqueHost from Preventing Status Updates on Resyncs\n\nRemove the ResourceVersion check in the UniqueHost Plugin to ensure it\n\"activates\" routes even when there are no changes. If routes aren't\n\"activated\", the UniqueHost Plugin won't call downstream plugins.\nIf the downstream plugins aren't called, then the route status won't\nhave a chance to resync.\n\nResyncing route status is vital for after periods of status contention,\nwhich can occur when rolling out new versions of the router. If the\nnew router loses the status update battle to the old router and the old\nrouter is subsequently terminated, the new router needs to resync the\nstatus to achieve the right state.\n\nRemoving this ResourceVersion check should only impact resyncs, as\nroutes are only reconciled without changes during resyncs, except at\ninitial startup.","shortMessageHtmlLink":"OCPBUGS-32250: Fix UniqueHost from Preventing Status Updates on Resyncs"}},{"before":"5afca9ebf7f8ce8f3acbda070395f1d7bf3521e6","after":"fa20a2437f013dfc51d360e3f50b43df1db590bc","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-4.15","pushedAt":"2024-05-30T17:00:19.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":null,"after":"27825bfc99d8f0992b9ce67efa87d3662ec59856","ref":"refs/heads/OCPBUGS-27741-path-with-rewrite","pushedAt":"2024-05-29T17:55:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"OCPBUGS-27741: Properly handle route path while rewriting\n\nProcess the route's spec.path while using the\n`haproxy.router.openshift.io/rewrite-target` annotation to prevent\nHAProxy configuration issues.\n\nPreviously, values in the route's path would be interpreted as\nregex meta characters. Now, this fix forces literal interpretation\nof the characters in spec.path when matching for rewriting. This\nchange introduces some unavoidable incompatibilities if users were\npreviously using regex meta characters in a spec.path.","shortMessageHtmlLink":"OCPBUGS-27741: Properly handle route path while rewriting"}},{"before":"a18859829ce909e1035da6e98a842417cbecf4a0","after":"5afca9ebf7f8ce8f3acbda070395f1d7bf3521e6","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-4.15","pushedAt":"2024-05-22T20:40:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"2cf6fdd49c8661ad9387fc93ff388203e43ce5b2","after":"a18859829ce909e1035da6e98a842417cbecf4a0","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-4.15","pushedAt":"2024-05-22T16:10:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"155a417968de1d9ab990cf1ebf7ee0121b382de0","after":"a71e1a3a5f790be5f67d236478ac30508f416a25","ref":"refs/heads/OCPBUGS-22739-rewrite-percent-4.14","pushedAt":"2024-05-16T17:31:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"OCPBUGS-22739: Properly handle rewrite-target annotation\n\nProcess the `haproxy.router.openshift.io/rewrite-target` annotation\nvalue to prevent HaProxy configuration issues while maintaining API\ncompatibility. Properly handle values with spaces, backslashes, and\nother special characters.\n\nAdd a new package, rewritetarget, to organize the functions that process\nthe rewrite target annotation. Add a separate unit test package,\nrewritetarget_test, to enforce black-box testing principles.","shortMessageHtmlLink":"OCPBUGS-22739: Properly handle rewrite-target annotation"}},{"before":"b2150de4b07f1c05d40857b9619e08c34181f391","after":"2cf6fdd49c8661ad9387fc93ff388203e43ce5b2","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-4.15","pushedAt":"2024-05-06T02:51:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"bd67d4f32bfaa71d1f17b45a8f01a3ca9b21e622","after":"b2150de4b07f1c05d40857b9619e08c34181f391","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-4.15","pushedAt":"2024-05-02T14:04:41.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"7c01e095ed5376d96222fb32cb967fdcb0101a20","after":"13ab1dd86f33eed5cb5981668bccc8bfd8959725","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-05-01T23:11:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"a75561c601f9a0abdaea98a5876a0be2cd85ce8d","after":"7c01e095ed5376d96222fb32cb967fdcb0101a20","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-05-01T23:06:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"62ebee76d0b9ab2572109de76cbf48d2849afe33","after":"a75561c601f9a0abdaea98a5876a0be2cd85ce8d","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-05-01T23:04:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"73ab620790cd939c0c7999535ad7b97b9a37d5c8","after":"62ebee76d0b9ab2572109de76cbf48d2849afe33","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-05-01T17:52:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"b3fcf1e5fd47e202336037d4b239971dce83281c","after":"73ab620790cd939c0c7999535ad7b97b9a37d5c8","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-05-01T14:34:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":"674685500b1dc8b03ae9005bd5eaab56a71518c3","after":"b3fcf1e5fd47e202336037d4b239971dce83281c","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-05-01T14:16:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize Upgrade Validation plugin by skipping unnecessary changes\n\nBoth performIngressConditionUpdate and performIngressConditionRemoval functions\nadd tasks to the writerlease queue even if no work needed to be done. This commit\noptimizes the Upgrade Validation plugin by ensuring that tasks for updating\nUnservableInFutureVersions are only added to the queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.\n\nThe selective updates are only added to the interface used by Upgrade Validation\nplugin to avoid perturbing existing Admitted condition logic. This means\nnominal clusters without SHA1 routes should not be impacted by the Upgrade\nValidation plugin, minimizing the risk associated with its introduction.","shortMessageHtmlLink":"Optimize Upgrade Validation plugin by skipping unnecessary changes"}},{"before":null,"after":"470f02809d8f93303bf5e7d732904ccace332ad4","ref":"refs/heads/remove-removal-lease-extend","pushedAt":"2024-05-01T04:10:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Remove lease.Extend from performIngressConditionRemoval\n\nSince performIngressConditionUpdate already extends the lease, we should not\nextend the lease in performIngressConditionRemoval. The lease gets over\nextended because the UpgradeValidation plugin and the Status plugin\nboth attempt to update route status in two separate lease work items and\nboth are extending the lease when there is no work to be done.\n\nIn a scenario where the Status plugin needs to admit a route, but the\nUpgradeValidation has no change to UnservableInFutureVersions condition,\nthe UpgradeValidation lease work item will unnecessarily extend the lease,\nleading to an extra delay in the Status plugin admitted the route.\n\nAlso add a TODO item to document current limitations of doing multiple\nstatus updates in the same route reconcile loop for future developers.","shortMessageHtmlLink":"Remove lease.Extend from performIngressConditionRemoval"}},{"before":"c97331fae21c5fcb8396d9a508e6cc82976e5d55","after":"44f217fe022fde263b3ff719ab885e28f9ec63e6","ref":"refs/heads/efficient-contention-comparison","pushedAt":"2024-04-30T13:39:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Make ingressConditionsEqual more efficient\n\nWe found that the router's contention tracker was slower after updates\nwere made to support the UnservableInFutureVersions condition. This\nlag sometimes causes routers to update the route status before the\ncontention tracker detected an update, leading to the per-route\ncontention logic not activating.\n\nIn such scenarios, the maxContentions logic eventually activates, temporarily\npreventing the router from making any updates to the routes. This commit\nimproves the efficiency of the ingressConditionsEqual function to help\nmitigate this type of issues.","shortMessageHtmlLink":"Make ingressConditionsEqual more efficient"}},{"before":"b1bea4d90af236e6ede0934ba6c41598f8e9827f","after":"c97331fae21c5fcb8396d9a508e6cc82976e5d55","ref":"refs/heads/efficient-contention-comparison","pushedAt":"2024-04-30T04:09:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Make ingressConditionsEqual more efficient\n\nWe found that the router's contention tracker was slower after updates\nwere made to support the UnservableInFutureVersions condition. This\nlag sometimes causes routers to update the route status before the\ncontention tracker detected an update, leading to the per-route\ncontention logic not activating.\n\nIn such scenarios, the maxContentions logic eventually activates, temporarily\npreventing the router from making any updates to the routes. This commit\nimproves the efficiency of the ingressConditionsEqual function to help\nmitigate this type of issues.","shortMessageHtmlLink":"Make ingressConditionsEqual more efficient"}},{"before":"27cfb9a89baf08b3b9bbdc8e07fa5a10a323c5b6","after":"b1bea4d90af236e6ede0934ba6c41598f8e9827f","ref":"refs/heads/efficient-contention-comparison","pushedAt":"2024-04-29T22:50:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Make ingressConditionsEqual more efficient\n\nWe found that the router's contention tracker was slower after updates\nwere made to support the UnservableInFutureVersions condition. This\nlag sometimes causes routers to update the route status before the\ncontention tracker detected an update, leading to the per-route\ncontention logic not activating.\n\nIn such scenarios, the maxContentions logic eventually activates, temporarily\npreventing the router from making any updates to the routes. This commit\nimproves the efficiency of the ingressConditionsEqual function to help\nmitigate this type of issues.","shortMessageHtmlLink":"Make ingressConditionsEqual more efficient"}},{"before":null,"after":"27cfb9a89baf08b3b9bbdc8e07fa5a10a323c5b6","ref":"refs/heads/efficient-contention-comparison","pushedAt":"2024-04-29T22:44:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Make ingressConditionsEqual more efficient\n\nWe found that the router's contention tracker was slower after updates\nwere made to support the UnservableInFutureVersions condition. This\nlag sometimes causes routers to update the route status before the\ncontention tracker detected an update, leading to the per-route\ncontention logic not activating.\n\nIn such scenarios, the maxContentions logic eventually activates, temporarily\npreventing the router from making any updates to the routes. This commit\nimproves the efficiency of the ingressConditionsEqual function to help\nmitigate this type of issues.","shortMessageHtmlLink":"Make ingressConditionsEqual more efficient"}},{"before":null,"after":"27cfb9a89baf08b3b9bbdc8e07fa5a10a323c5b6","ref":"refs/heads/efficient-contention-comparision","pushedAt":"2024-04-29T22:43:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Make ingressConditionsEqual more efficient\n\nWe found that the router's contention tracker was slower after updates\nwere made to support the UnservableInFutureVersions condition. This\nlag sometimes causes routers to update the route status before the\ncontention tracker detected an update, leading to the per-route\ncontention logic not activating.\n\nIn such scenarios, the maxContentions logic eventually activates, temporarily\npreventing the router from making any updates to the routes. This commit\nimproves the efficiency of the ingressConditionsEqual function to help\nmitigate this type of issues.","shortMessageHtmlLink":"Make ingressConditionsEqual more efficient"}},{"before":"caddb9176888b7e89176c53b75644e21904fbe0a","after":"674685500b1dc8b03ae9005bd5eaab56a71518c3","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-04-25T17:34:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize route status updates by skipping unnecessary changes\n\nPreviously, both performIngressConditionUpdate and performIngressConditionRemoval\nfunctions were adding tasks to the writerlease queue even if no work needed to be\ndone. This commit optimizes the logic by ensuring that tasks are only added to\nthe queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.","shortMessageHtmlLink":"Optimize route status updates by skipping unnecessary changes"}},{"before":"d771aa2a0a161a89ba4e3da004db4ceee60ee079","after":"caddb9176888b7e89176c53b75644e21904fbe0a","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-04-25T17:04:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize route status updates by skipping unnecessary changes\n\nPreviously, both performIngressConditionUpdate and performIngressConditionRemoval\nfunctions were adding tasks to the writerlease queue even if no work needed to be\ndone. This commit optimizes the logic by ensuring that tasks are only added to\nthe queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.","shortMessageHtmlLink":"Optimize route status updates by skipping unnecessary changes"}},{"before":null,"after":"d771aa2a0a161a89ba4e3da004db4ceee60ee079","ref":"refs/heads/efficient-route-status-updates","pushedAt":"2024-04-25T16:55:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Optimize route status updates by skipping unnecessary changes\n\nPreviously, both performIngressConditionUpdate and performIngressConditionRemoval\nfunctions were adding tasks to the writerlease queue even if no work needed to be\ndone. This commit optimizes the logic by ensuring that tasks are only added to\nthe queue when changes are required.\n\nThis reduction in unnecessary work significantly lowers the frequency of lease\nextensions. Previously, excessive lease extensions could delay route status\nupdates under certain conditions, such as during temporary contention periods\nwhere a router pod gets demoted to a follower. After the contention is resolved,\nthe pod’s subsequent retry will be delayed more than necessary.\n\nAdditionally, this update provides a clearer indication of when updates are actually\nrequired, but have been completed by another router pod. The prior logic did not\nclearly distinguish between unnecessary updates and updates that were completed by\nanother pod.","shortMessageHtmlLink":"Optimize route status updates by skipping unnecessary changes"}},{"before":"1611fb447dfa018b7c64c261894ec92303e6bb50","after":"0ff5da48bc6ee1ac5112d635caaf09817dd1596b","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-E2E-args","pushedAt":"2024-04-23T02:06:39.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Add Upgrade Validation force arguments for running E2E tests\n\nAdd --debug-upgrade-validation-force-add-condition and\n--debug-upgrade-validation-force-remove-condition as arguments\nto the openshift-router. These force add or force remove the\nUnservableInFutureVersions condition to allow for an E2E test\nto do contention testing on a condition-level. For debugging\nand testing purposes only.","shortMessageHtmlLink":"Add Upgrade Validation force arguments for running E2E tests"}},{"before":"e8c4381358f8ea62e75d8292a6986b477b5b393f","after":"bd67d4f32bfaa71d1f17b45a8f01a3ca9b21e622","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-4.15","pushedAt":"2024-04-23T01:32:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Add Upgrade Validation router plugin\n\nAdd the Upgrade Validation plugin which provides a framework for adding\na status to a route to indicate future upgrade issues. For this\ninitial implementation, if a route has a SHA1 certificate, the upgrade\nvalidation plugin will mark the route with a UnservableInFutureVersions\nstatus. If the route no longer has a SHA1 certificate, remove the status\ninstead of setting UnservableInFutureVersions=false.\n\nThis is specific to OpenShift 4.15 and is expected to be removed\nfrom 4.16 once backported to avoid confusion. It's specific to 4.15\nbecause 4.15 accepts SHA1 certs, but 4.16 does not. Therefore,\nvalidating the upgrade should be only done in 4.15.\n\nUpdate the RejectionRecorder interface to be the RouteStatusRecorder to\nsupport more generic status-related use cases as we have more than just\nAdmitted status now.\n\nAdd UPGRADE_VALIDATION env variable, but default to true, so that we can\ndisable in the future. Follow existing pattern similar to existing\nEXTENDED_VALIDATION env variable.\n\nKey the writerlease logic off of route UID AND condition type. This is\nnow essential because if only route UID, then the lease logic will only\nupdate one condition as it doesn't differentiate from the work items for\nthe different conditions.\n\nAdjust findMostRecentIngress to use the latest condition instead of just\nAdmitted as we can no longer assume that Admitted is the only condition.\n\nAdd a type for writelease WorkKey to ensure strings aren't used anymore\nas the previous logic was only using route.UID. Add a type for\nContentionTracker key to ensure it is different than writelease WorkKey.\n\nUpdate ingressEqual function to detect contention if any condition is\nnot equal. Previously, it hardcoded the \"Admitted\" status. Add a unit\ntest, TestRouterContentionUpdateCondition to test these changes.","shortMessageHtmlLink":"Add Upgrade Validation router plugin"}},{"before":null,"after":"e8c4381358f8ea62e75d8292a6986b477b5b393f","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-4.15","pushedAt":"2024-04-22T23:58:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Add Upgrade Validation router plugin\n\nAdd the Upgrade Validation plugin which provides a framework for adding\na status to a route to indicate future upgrade issues. For this\ninitial implementation, if a route has a SHA1 certificate, the upgrade\nvalidation plugin will mark the route with a UnservableInFutureVersions\nstatus. If the route no longer has a SHA1 certificate, remove the status\ninstead of setting UnservableInFutureVersions=false.\n\nThis is specific to OpenShift 4.15 and is expected to be removed\nfrom 4.16 once backported to avoid confusion. It's specific to 4.15\nbecause 4.15 accepts SHA1 certs, but 4.16 does not. Therefore,\nvalidating the upgrade should be only done in 4.15.\n\nUpdate the RejectionRecorder interface to be the RouteStatusRecorder to\nsupport more generic status-related use cases as we have more than just\nAdmitted status now.\n\nAdd UPGRADE_VALIDATION env variable, but default to true, so that we can\ndisable in the future. Follow existing pattern similar to existing\nEXTENDED_VALIDATION env variable.\n\nKey the writerlease logic off of route UID AND condition type. This is\nnow essential because if only route UID, then the lease logic will only\nupdate one condition as it doesn't differentiate from the work items for\nthe different conditions.\n\nAdjust findMostRecentIngress to use the latest condition instead of just\nAdmitted as we can no longer assume that Admitted is the only condition.\n\nAdd a type for writelease WorkKey to ensure strings aren't used anymore\nas the previous logic was only using route.UID. Add a type for\nContentionTracker key to ensure it is different than writelease WorkKey.\n\nUpdate ingressEqual function to detect contention if any condition is\nnot equal. Previously, it hardcoded the \"Admitted\" status. Add a unit\ntest, TestRouterContentionUpdateCondition to test these changes.","shortMessageHtmlLink":"Add Upgrade Validation router plugin"}},{"before":"398c4977cbc28bc413eb1201b1fd454a85730ef5","after":"423ea1ef3f858d62caedee496ebe36bc0b7d7bf9","ref":"refs/heads/OCPBUGS-26498-reject-sha1","pushedAt":"2024-04-22T16:42:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Remove SHA1 detection from Upgrade Validation\n\nThe router will now clear UnservableInFutureVersions conditions for\nroutes with SHA1 certs. This is desirable because the router is now\nrejecting routes with SHA1 cert and UnservableInFutureVersions no longer\napplies.","shortMessageHtmlLink":"Remove SHA1 detection from Upgrade Validation"}},{"before":null,"after":"155a417968de1d9ab990cf1ebf7ee0121b382de0","ref":"refs/heads/OCPBUGS-22739-rewrite-percent-4.14","pushedAt":"2024-04-22T16:33:28.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"OCPBUGS-22739: Properly handle rewrite-target annotation\n\nProcess the `haproxy.router.openshift.io/rewrite-target` annotation\nvalue to prevent HaProxy configuration issues while maintaining API\ncompatibility. Properly handle values with spaces, backslashes, and\nother special characters.\n\nAdd a new package, rewritetarget, to organize the functions that process\nthe rewrite target annotation. Add a separate unit test package,\nrewritetarget_test, to enforce black-box testing principles.","shortMessageHtmlLink":"OCPBUGS-22739: Properly handle rewrite-target annotation"}},{"before":"2134bcf81c1e905c9696f39a7f8b3fa02fdd9b06","after":"1611fb447dfa018b7c64c261894ec92303e6bb50","ref":"refs/heads/OCPBUGS-26498-upgradeable-status-E2E-args","pushedAt":"2024-04-22T14:19:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gcs278","name":"Grant Spence","path":"/gcs278","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4316443?s=80&v=4"},"commit":{"message":"Add Upgrade Validation force arguments for running E2E tests\n\nAdd --upgrade-validation-force-add-condition and\n--upgrade-validation-force-remove-condition as arguments to the\nopenshift-router. These force add or force remove the\nUnservableInFutureVersions condition to allow for an E2E test to do\ncontention testing on a condition-level.","shortMessageHtmlLink":"Add Upgrade Validation force arguments for running E2E tests"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEZN-hmQA","startCursor":null,"endCursor":null}},"title":"Activity · gcs278/router"}