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.
DynamoDB reminder point reads are strongly consistent:
DynamoDBStorage.ReadSingleEntryAsyncsetsConsistentRead = true.Reminder collection reads currently query two global secondary indexes:
ReadRows(GrainId)usesServiceIdGrainReferenceIndexReadRows(uint begin, uint end)usesServiceIdIndexDynamoDB does not support strongly consistent reads from global secondary indexes, so these calls explicitly use
consistentRead: false. Replacing them with strongly consistentScanoperations 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-rangeReadRowsprovide strongly consistent completed-write visibility.