Add capability-gated atomic full-document replace operation
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
調査の方向性
提案されている MulticloudDbClient.replace(...) のオーバーロードとプロバイダー SPI サポートから始め、続いて capability gating と Cosmos DB および DynamoDB プロバイダーのエントリーポイントを追跡します。適合性テストを使用して、アトミックな置換、アイテムが存在しない場合の動作、正規化されたエラー、プロバイダーの capability の違いを検証し、最後に API/SPI Javadocs、互換性ドキュメント、changelogs を確認します。
索引モデルが issue の本文から書いたものです。
説明
Problem
microsoft/multiclouddb-sdk-for-java#105 changes update() from full-document
replace-if-present semantics to shallow partial update. upsert() is not an
equivalent replacement because it creates a missing item, while a
read-then-upsert sequence can recreate an item deleted or expired between calls.
The portable API therefore needs separate operations for:
replace()— atomically replace an existing complete document; fail with
NOT_FOUNDwhen missingupdate()— partially update an existing documentupsert()— create or fully replace a document
Proposed direction
- Add
MulticloudDbClient.replace(...)overloads and corresponding provider SPI
support. - Add a well-known full-document-replace capability.
- Advertise support from Cosmos DB and DynamoDB.
- Treat omitted declarations from Spanner and legacy providers as unsupported.
- Reject unsupported calls before provider I/O with normalized
UNSUPPORTED_CAPABILITY. - Implement Cosmos DB with native
replaceItem. - Implement DynamoDB with a conditional
PutItemguarded by
attribute_exists. - Do not emulate replace through read-then-upsert because that is not atomic.
- Do not require a Spanner production implementation until that provider enters
the applicable release scope.
Acceptance criteria
- Replacing an existing item removes omitted logical fields.
- Replacing a missing item returns non-retryable
NOT_FOUNDand does not create
the item. - Cosmos DB and DynamoDB expose identical observable behavior.
- Spanner and legacy providers fail at the capability gate before provider I/O.
- Error operation names, diagnostics, conformance tests, API/SPI Javadocs,
compatibility documentation, and changelogs are aligned. - Request-count and cost differences are documented.
- 主要言語
- Java
- スター
- 7
- フォーク
- 7
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 3
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/multiclouddb-sdk-for-java のほかの issue
-
Portable document key fields differ across Cosmos/Dynamo and read/query (id vs sortKey)対応中かも @allenkim0129 が 15 日前に担当しました。 オープン
microsoft/multiclouddb-sdk-for-java#121 · 担当者 1 名 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 28/100
-
documentation enhancement java
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
microsoft/multiclouddb-sdk-for-java の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
QuiltMC/update-quilt-meta#28 ·
-
awaiting triage Documentation P3
難易度 1/5 1〜3時間 初心者へのやさしさ 86/100
メンテナーはふだん 1 日以内に返信
-
area/build area/maintainability component/camunda-process-test kind/tech-debt
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
Kafka: Filter empty strings and whitespace in IcebergSinkConfig stringToList対応中かも @mohamed-elbrik が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
area/kotlin
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信