hicksy · GitHub

Found while closing #157. dynoxide stores OnDemandThroughput verbatim on every surface, and a capture against real DynamoDB (eu-west-2, 2026-07-24) shows four divergences:

  1. Partial update should merge. UpdateTable with only MaxReadRequestUnits=40 over stored {20, 15} leaves the write ceiling intact on AWS: {40, 15}. dynoxide replaces the stored object wholesale, dropping the unspecified member.
  2. -1 should remove a ceiling. AWS echoes -1 in the update response, then DescribeTable omits the member. dynoxide has no -1 handling.
  3. Both operations should reject ODT on a PROVISIONED table, with subtly different wording per operation. UpdateTable: One or more parameter values were invalid: MaxReadRequestUnits for OnDemandThroughput cannot be specified when the table BillingMode is PROVISIONED. CreateTable drops the "the" and adds a full stop: ... cannot be specified when table BillingMode is PROVISIONED. dynoxide accepts and stores it regardless of billing mode.
  4. Switching billing mode to PROVISIONED should clear stored ceilings. AWS reports no OnDemandThroughput after the switch; dynoxide keeps them.

All four are engine-level and affect every surface (HTTP, wasm, MCP, in-process), so they're separate from the MCP parameter work in #154/#156/#157.

Read the original on github.com ↗