Title: fix(dynamodb): Avoid tag race condition by using diff-based tag updates by HarshSharma1112 · Pull Request #6479 · feast-dev/feast · GitHub
Open Graph Title: fix(dynamodb): Avoid tag race condition by using diff-based tag updates by HarshSharma1112 · Pull Request #6479 · feast-dev/feast
X Title: fix(dynamodb): Avoid tag race condition by using diff-based tag updates by HarshSharma1112 · Pull Request #6479 · feast-dev/feast
Description: What this PR does / why we need it: DynamoDB's TagResource and UntagResource are eventually consistent. The old implementation removed all tags then re-added all desired tags immediately, creating a race window where repeated store.apply() calls would leave tables without any tags. Fix: compute a diff between current and desired tags, then: Only remove keys that are truly obsolete (not in new config) Only add/update tags whose value is new or has changed If nothing changed, make zero API calls (idempotent) This eliminates the race condition and also reduces unnecessary API calls on repeated store.apply() with unchanged configuration. Adds 7 unit tests covering: idempotency, add-only, remove-only, value change, full replace, clear-all, and empty-both cases. Which issue(s) this PR fixes: Fixes #6418 Checks I've made sure the tests are passing. My commits are signed off (git commit -s) My PR title follows conventional commits format Testing Strategy Unit tests Integration tests Manual tests Testing is not required for this change Misc
Open Graph Description: What this PR does / why we need it: DynamoDB's TagResource and UntagResource are eventually consistent. The old implementation removed all tags then re-added all desired tags immediately, creat...
X Description: What this PR does / why we need it: DynamoDB's TagResource and UntagResource are eventually consistent. The old implementation removed all tags then re-added all desired tags immediately, c...
Opengraph URL: https://github.com/feast-dev/feast/pull/6479
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:65f249d7-0ea5-135b-df0c-50f8acaa1b87 |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | B958:B97C3:2627036:346262F:6A4EEBC4 |
| html-safe-nonce | 91540eada7d58bea26b344609f85f11c036dd7f7a8cb560a4c3be1bb2da6bb78 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCOTU4OkI5N0MzOjI2MjcwMzY6MzQ2MjYyRjo2QTRFRUJDNCIsInZpc2l0b3JfaWQiOiI2MzYyNjU4MTU3NDY3MzUwNDQiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | e8176566b42ab32fc1a18a30aac790e7ce9107e8c4d262766484ac70b7b7245d |
| hovercard-subject-tag | pull_request:3823450820 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/feast-dev/feast/pull/6479/files |
| twitter:image | https://avatars.githubusercontent.com/u/219297112?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/219297112?s=400&v=4 |
| og:image:alt | What this PR does / why we need it: DynamoDB's TagResource and UntagResource are eventually consistent. The old implementation removed all tags then re-added all desired tags immediately, creat... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | d12176b31601daf8d3de9a378cbbcf7dac6f33d990d1faedcb9c9b9ff3cbb1ed |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/feast-dev/feast git https://github.com/feast-dev/feast.git |
| octolytics-dimension-user_id | 57027613 |
| octolytics-dimension-user_login | feast-dev |
| octolytics-dimension-repository_id | 161133770 |
| octolytics-dimension-repository_nwo | feast-dev/feast |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 161133770 |
| octolytics-dimension-repository_network_root_nwo | feast-dev/feast |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 9420180b23897f48b04b8d47ee8b1a9341197b64 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width