Details
Description
For an RO transaction to work correctly (that is, the same query returns the same result), an RO transaction sometimes needs to wait. In most scenarios, if the readTimestamp is 'now', it ruins the performance (as such transaction have to wait almost always, up to idle safe-time propagation period). To avoid this, readTimestamp is usually chosen in the past as 'now minus idle safe-time propagation period'.
But if a DDL has just happened, then looking in the past might look past the DDL, so a table might not be found, or a stale version of it might be seen by the query.
The 'correct' way to solve this is described in IGNITE-20378, but it will take some time to implement.
We need the RO-related optimization right now, so we could just increase the after-DDL wait by the same idle safe-time propagation period as a workaround.
We should also make this period configurable to have ability to make it lower in our tests (so that they don't be too slow waiting for a second after each table creation).
Attachments
Issue Links
- causes
-
IGNITE-20699 Decrease idle safe time propagation period in tests
- Resolved
- fixes
-
IGNITE-20617 Sql. Performance degradation in SELECTS (2 nodes VS 1 node)
- Resolved
- is related to
-
IGNITE-20378 Both clients and embedded nodes should have an ability to see same-actor schema adjustments though RO requests
- Open
- relates to
-
IGNITE-21098 Increase additional wait after DDL by MaxClockSkew
- Resolved
- links to