Lowering polling interval intorduced in previous commit doesn't fully
fix the issue and there is still small race condition. To fully fix it
add function for awaiting transaction to be propagate to CDC table and
await transaction in tests which randomly fails.
Some tests fail randomly as they insert some records at the begging
of the test, start Debezium and asserts that there are no records.
However, as SQL server poll for the changes and copies them into
CDC table not immediately but in specified interval (by default 5
secods), there can be a race condition when the entries inserted
at the beginning of the test are copied into CDC table after starting
Debezium and it resutls into the test failure as there are unexpected
records.
Add function for adjusting the polling interval and decrease polling
interval in `IncrementalSnapshotIT` which fails very often.
This doesn't fully fix the race condition, but decreases the changes
the issue is hit.
Run the tests alwyas in thr same order to make it more easy to debug
failures. If needed, the order can be changed (e.g. to `random`) by
overriding propeperty `runOrder`.
Allow to override Docker maven plugin properties [1] from command line
to be able to change various Docker parameters more easily when starting
the container.
[1] https://dmp.fabric8.io/#combining-property-config
Fix randomly failing
SqlServerConnectorIT#updatePrimaryKeyWithRestartInMiddle.
It seems the main source of instability in slow environments is
consuming snapshot record. It's actually not consumed and as the
test assumes exact order of messages, it leads to failures.
Wait for snapshot to be completed using mbean server. Also add more
asserts to make clear where is the issue if the test continues to fail.
Fix randomly failing
SqlServerConnectorIT#updatePrimaryKeyTwiceWithRestartInMiddleOfTx
Wait for snapshot to be complteted and consume expected number of
records.
`TOPIC_PREFIX` is now mandatory to all connectors therefore it make
sense to have it in common config. Beside that, it also makes it more
easy to use it in Debezium UI without any workarounds - if the field is
not member of the given connector config, the field has to be
explicitely added into known fields otherwise is invisible for UI.