Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
detect unsynchronized contract table and retry (digital-asset#10617)
* enumerating out-of-sync offsets at the DB level * cleanup in lastOffset * write the latest-requested-or-read offset when catching up - Writing only the latest-read, as before, would imply unsynced offsets that are actually well-synced. This puts the DB in a more uniform state, i.e. it should actually reflect the single value that the fetchAndPersist loop tries to catch everything up to. * detecting lagging offsets from the unsynced-offsets set - Treating every unsynced offset as a lag would make us needlessly retry perfectly synchronized query results. * add Foldable1 derived from Foldable for NonEmpty * nicer version of the unsynced function * ConnectionIO scalaz monad * rename Offset.ordering to `Offset ordering` so it can be imported verbatim * finish aggregating in the lag-detector function, compiles * port sjd * XTag, a scalaz 7.3-derived tag to allow stacked tags * make the complicated aggregation properly testable * extra semantic corner cases I didn't think of * tests for laggingOffsets * a way to rerun queries if the laggingOffsets check reveals inconsistency * if bookmark is ever different, we always have to rerun anyway * boolean blindness * incorporate laggingOffsets into fetchAndPersistBracket * split fetchAndPersist from getTermination and clean up its arguments * just compose functors * add looping to fetchAndPersistBracket * more mvo tests * test unsyncedOffsets, too * Lagginess collector * supply more likely actual data with mvo tests; don't trust Java equals * rework minimumViableOffsets to track sync states across template IDs * extra note * fix the tests to work against the stricter mvo * move surrogatesToDomains call * more tests for lagginess accumulator * add changelog CHANGELOG_BEGIN - [JSON API] Under rare conditions, a multi-template query backed by database could have an ACS portion that doesn't match its transaction stream, if updated concurrently. This conditions is now checked and accounted for. See `issue digital-asset#10617 <https://github.com/digital-asset/daml/pull/10617>`__. CHANGELOG_END * port toSeq to Scala 2.12 * handle a corner case with offsets being too close to expected values * didn't need XTag
- Loading branch information