Skip to content

DynamoDB reminders: provide strongly consistent range reads with a versioned schema #10909

Description

@ReubenBond

DynamoDB reminder point reads are strongly consistent: DynamoDBStorage.ReadSingleEntryAsync sets ConsistentRead = true.

Reminder collection reads currently query two global secondary indexes:

  • ReadRows(GrainId) uses ServiceIdGrainReferenceIndex
  • ReadRows(uint begin, uint end) uses ServiceIdIndex

DynamoDB does not support strongly consistent reads from global secondary indexes, so these calls explicitly use consistentRead: false. Replacing them with strongly consistent Scan operations would scan the full shared table for every silo reminder refresh, double read-capacity consumption, and scale cost/latency with total table rows multiplied by silo count.

Design and implement a versioned reminder-table schema whose primary key supports strongly consistent service/grain and service/hash queries without full-table scans. The migration must preserve existing reminders during rolling upgrades and concurrent registration/removal.

Acceptance criteria:

  • ReadRow, ReadRows(GrainId), and hash-range ReadRows provide strongly consistent completed-write visibility.
  • Periodic range refreshes use key queries rather than full-table scans.
  • Existing tables have a documented, tested migration or compatibility path.
  • Writes, ETags, removal, wrap-around ranges, and cleanup remain atomic and deterministic.
  • DynamoDB reminder table and lifecycle conformance suites cover both target frameworks and migration behavior.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions