Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

TagResource, UntagResource and ListTagsOfResource during a table's DELETING window answer differently from DynamoDB

未关闭
#551 0 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 2 天内回复

@LeeroyHannigan 已经在做这个了。

开始于 2026年10月25日。

  • #599 来自 @LeeroyHannigan —— 未关闭

评估

这个 Issue 还没有评估数据。

描述

Summary

During a table's DELETING window the service refuses TagResource and UntagResource and serves ListTagsOfResource; ExtendDB answers differently on every backend.

Request during DELETING Service (measured 2026-10-25, us-east-1) ExtendDB main 744ea291 ExtendDB after #550 (PostgreSQL, SQLite)
TagResource 400 ResourceInUseException Attempt to change a resource which is still in use: Table is being deleted: <name> 400 ResourceNotFoundException Requested resource not found: ResourceArn: <arn> not found 200
UntagResource same same 200
ListTagsOfResource 200 with the tags same ResourceNotFoundException 200 with the tags

MongoDB and Cassandra keep the main answers after #550.

Cause

crates/engine/src/tagging.rs checks the table's existence through table_key_info and maps TableNotFound to ResourceNotFoundException. On main every backend's key-info read maps a DELETING row to TableNotFound; #550 makes PostgreSQL and SQLite read it as found (so the data plane is served, as the service does), and the tag path inherits that.

A TagResource accepted in the window writes an unconditioned tag row. On PostgreSQL the poller deletes the ARN's tag rows before the catalog row, so a tag written between those two statements survives the table and is inherited by the next table of that name. The measured sequence (tag, then drop) left no row behind; the hazard is the interleaving.

Fix shape

Refuse TagResource and UntagResource on a DELETING row with the TableBeingDeleted sentence #550 introduced (the tag path needs the table's status, which TableKeyInfo does not carry; a describe_table read or a status field on the key info), and serve ListTagsOfResource. One wire row per request, dual-target, on the held-window fixture tests/python/test_deleting_window_control_plane.py uses.

Found while reviewing #505.

主要语言
Rust
星标
517
派生
60
平均合并
2 天 22 小时
30 天内合并 PR
25

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

ExtendDB/extenddb 的其他 Issue

查看 ExtendDB/extenddb 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。