You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We encountered a failing non-null assertion in tempest's Prefixer when performing a query on a GSI using a prefixed sort key, once the result set grew large enough to require pagination, causing our service to be unable to read from the database.
Analysis by @jialiang-cash found that the LastEvaluatedKey object returned from Dynamo only includes the partition_key and secondary_index_keys fields. This caused an issue in decodeOffset when Tempest tries to remove the prefixes on both partition_key and sort_key, resulting in a null value exception because no sort_key exists.
Stack trace:
java.lang.IllegalArgumentException: Required value was null.
at app.cash.tempest.internal.ReflectionCodec$Prefixer.removePrefix(Codec.kt:137)
at app.cash.tempest.internal.ReflectionCodec.toApp(Codec.kt:92)
at app.cash.tempest2.internal.DynamoDbQueryable.decodeOffset(DynamoDbQueryable.kt:153)
at app.cash.tempest2.internal.DynamoDbQueryable.toQueryResponse(DynamoDbQueryable.kt:114)
at app.cash.tempest2.internal.DynamoDbQueryable.access$toQueryResponse(DynamoDbQueryable.kt:39)
at app.cash.tempest2.internal.DynamoDbQueryable$Sync.query(DynamoDbQueryable.kt:68)
at app.cash.tempest2.internal.LogicalDbFactory$SecondaryIndexFactory$secondaryIndex$1.query(LogicalDbFactory.kt)
at app.cash.tempest2.Queryable$DefaultImpls.query$default(Query.kt:27)
We encountered a failing non-null assertion in tempest's
Prefixer
when performing a query on a GSI using a prefixed sort key, once the result set grew large enough to require pagination, causing our service to be unable to read from the database.Analysis by @jialiang-cash found that the
LastEvaluatedKey
object returned from Dynamo only includes thepartition_key
andsecondary_index_keys
fields. This caused an issue indecodeOffset
when Tempest tries to remove the prefixes on bothpartition_key
andsort_key
, resulting in a null value exception because nosort_key
exists.Stack trace:
This is the assertion that's failing:
tempest/tempest-internal/src/main/kotlin/app/cash/tempest/internal/Codec.kt
Line 137 in 3f520ef
The text was updated successfully, but these errors were encountered: