Commit Graph

9105 Commits

Author SHA1 Message Date
Jiri Pechanec
f3eb643822 DBZ-7043 Use code idiom 2023-11-10 10:53:00 +01:00
Vadzim Ramanenka
a46069a8f7 DBZ-7043: Emit a notification when completed reading from a capture instance
Let the database know when the connector has finished reading
from a capture instance by calling a stored procedure.
2023-11-10 10:53:00 +01:00
Chris Cranford
34df6ade4d DBZ-6942 Verify no log sequence gaps on log switch
There is a corner case where it's possible the Oracle connector may query
the Oracle metadata tables quicker than the ARC process can generate an
archive log history record in V$ARCHIVED_LOG, and this can lead to a race
condition where we may incorrectly advance the connector forward to start
mining a group of logs when a log sequence gap exists in the log ranges.

For users who use the online_catalog strategy, there are some checks that
LogMiner does automatically which it skips, and one is with log sequence
gaps. This fix enforces that check by Debezium even for users who may use
the faster online_catalog mode so that no logs are omitted and events
could be missed.
2023-11-10 09:49:10 +01:00
mfvitale
33dc8e0ec6 DBZ-6317 Document tombstone behaviour 2023-11-10 06:43:18 +01:00
Jiri Pechanec
4f485caca3 DBZ-7119 Allow empty column list in INSERT 2023-11-09 14:25:14 +01:00
Chris Cranford
b834a3a66a DBZ-6963 Test should only apply to LogMiner 2023-11-09 10:58:01 +01:00
Chris Cranford
81d30a1224 DBZ-6963 Fix test failure 2023-11-09 10:58:01 +01:00
Chris Cranford
a4346222a7 DBZ-6963 Checkstyle fixes 2023-11-09 10:58:01 +01:00
Chris Cranford
b69dbd53e6 DBZ-6963 Do not merge events if table has no LOB columns
There was a possible situation where if a long transaction consisted of
updating and inserting into the same table with identical keys with a
given sequence that the commit handler would merge several events for a
table without LOB columns, resulting in a difference in expected events
in the Kafka topic vs what was seen in LogMiner.
2023-11-09 10:58:01 +01:00
Jakub Cechacek
468b6e431e DBZ-6726 Documenting split handling mode for oversized change events 2023-11-09 10:55:40 +01:00
Chris Cranford
da9c2bfeb4 DBZ-7085 Fix default value handling in tests 2023-11-09 10:00:33 +01:00
Chris Cranford
2bff852174 DBZ-7085 Fix temporal reader MariaDB implementation 2023-11-09 10:00:33 +01:00
Chris Cranford
8ff03447e4 DBZ-7085 Implement simple MariaDB protocol field reader 2023-11-09 10:00:33 +01:00
Chris Cranford
35a536aefc DBZ-7085 Apply MariaDB unique fetchSize requirements
Per https://jira.mariadb.org/browse/CONJ-977, the MariaDB team does not
believe that the Integer.MIN_VALUE solution for triggering streaming is
spec compliant and as of MariaDB 3.x+ drivers, they explicitly will not
allow this.

This change explicitly sets the fetchSize to 1 to mimic the same style
of behavior that the default fetchSize uses when using MySQL. If a user
provides a custom fetchSize, that will take precedences.
2023-11-09 10:00:33 +01:00
Chris Cranford
47df821c6d DBZ-7085 Don't use MySQL test artifacts in JDBC storage tests 2023-11-09 10:00:33 +01:00
Chris Cranford
b849effaf9 DBZ-7085 Add MariaDB and use it with MariaDB profile 2023-11-09 10:00:33 +01:00
Chris Cranford
0f4d2f2b1a DBZ-7085 Fix test suite to protocol-based factory URL 2023-11-09 10:00:33 +01:00
ani-sha
700942b258 DBZ-6874 Drop MySQL 5.7, test MySQL 8.0 & adjust documentation 2023-11-09 09:26:26 +01:00
Chris Cranford
7532e52228 DBZ-7120 Add a connection max retry limit to Redis schema history 2023-11-09 07:59:58 +01:00
Jiri Pechanec
9d84d01f64 DBZ-6726 Switch to ArrayList for repeated iteration 2023-11-09 07:57:12 +01:00
Jakub Cechacek
89b07a013e DBZ-6726 support for $changeStreamSplitLargeEvent aggregation in MongoDB connector 2023-11-09 07:57:12 +01:00
dependabot[bot]
7b23b31408 [ci] Bump tj-actions/changed-files from 39.2.4 to 40.1.0
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 39.2.4 to 40.1.0.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/v39.2.4...v40.1.0)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-08 17:39:57 -05:00
Jiri Pechanec
be2ec95aa8 [docs] Fix param names 2023-11-08 13:27:34 +01:00
Jakub Cechacek
2f70c30962 DBZ-6875 Ensuring root user is created when using authenticated mongo rs 2023-11-08 13:13:43 +01:00
Rafael Câmara
83e6f28e41 [docs] Add commas to SQL Server connector configuration example. 2023-11-08 12:54:35 +01:00
ani-sha
16ab761bed DBZ-6873 Deprecate expire_logs_days, use binlog_expire_logs_seconds 2023-11-08 07:06:27 +01:00
ani-sha
e7a9430de3 DBZ-6873 Support MySQL 8.2 2023-11-08 07:06:27 +01:00
ani-sha
54be3bb663 DBZ-6873 Use percona server version 8.0 2023-11-08 07:06:27 +01:00
ani-sha
519c382153 DBZ-6873 Support MySQL 8.1 2023-11-08 07:06:27 +01:00
Bob Roldan
f9c321024b DBZ-7108 Minor edit to description of mongodb.connection.mode property 2023-11-08 05:59:39 +01:00
Jakub Cechacek
bddf8802ec DBZ-7108 Switched default connection mode for sharded clusters from replica_set to sharded 2023-11-07 10:36:53 +01:00
Anatolii Popov
3ad0779158 DBZ-7109 Upgrade SQLServer JDBC driver to support sensitivity classification 2023-11-07 10:23:27 +01:00
Vojtech Juranek
cf7f0f3801 DBZ-7110 Use better name for DebeziumEngine.Builder implementation 2023-11-07 10:13:50 +01:00
Vojtech Juranek
c34cf6920c DBZ-7110 Remove deprecated EmbeddedEngine interface 2023-11-07 10:13:50 +01:00
rkerner
68481038b3 DBZ-7105 Fix exceptions that are triggered by RelationalBaseSourceConnector#validate when calling #validateConnection() with an invalid configuration. Other, not-checked fields can cause an exception when the ConnectorConfig class is instantiated to setup the connection. Now we are only allowing connection validation when all config options are free of errors.
closes to https://issues.redhat.com/browse/DBZ-7105
2023-11-06 15:02:51 +01:00
Vojtech Juranek
11d2ff0b9b DBZ-7007 Use better name for auxiliary variable detecing if engine is running 2023-11-06 10:50:21 +01:00
Vojtech Juranek
89054bf8a8 DBZ-7007 Introduce TestingDebeziumEngine and switch to it in AbstractConnectorTest
Postgres `RecordsStreamProducerIT` reliaes on
EmebeddedEngine.runWithTask(). As this method effectively expose
engine's internal task and tests do the asserts against the state
of the task, it's hard to replace it. If we want to keep the tests,
the most simple approach seems to expose engine task in similar way
how EmbeddedEngine does that.

Add interface for testing Debezium engine, which would define minimal
set of methods which needs to be exposed by the implementing classes to
be able to run the testsuite against the Debezium engine. The number of
such methods should be as low as possible. Implementing classes would
typically act as proxies to actual `DebeziumEngine` implementations.

Add `TestingDebeziumEngine` implementation for `EmbeddedEngine` and
switch to `TestingDebeziumEngine` in `AbstractConnectorTest`.
2023-11-06 10:50:21 +01:00
Vojtech Juranek
fdab2cd61b DBZ-7007 Remove engine.isRunning() from testsuite 2023-11-06 10:50:21 +01:00
Vojtech Juranek
89277591dd DBZ-7007 Replace engine.await() with Awaitility condition
In the second case replace infinite loop by one minute wait. If this is
not sufficient for any case, we can increase the timeout in the future.
2023-11-06 10:50:21 +01:00
Vojtech Juranek
9b1d5172ff DBZ-6213 Remove unneeded code from the testsuite
After fixing start method to really start the connector, this wait loop
is not needed any more.
2023-11-06 10:50:21 +01:00
Vojtech Juranek
1a58845507 DBZ-7007 Use close() instead of EmbeddedEngine#stop() method 2023-11-06 10:50:21 +01:00
Vojtech Juranek
953f1c77aa DBZ-7007 Switch to DebeziuEngine in ConnectorOutputTest 2023-11-06 10:50:21 +01:00
Vojtech Juranek
d0c2658c43 DBZ-7007 Switch to DebeziuEngine in EmbeddedEngineTest 2023-11-06 10:50:21 +01:00
Vojtech Juranek
3295844cc3 DBZ-7007 Use property based configuration in the emebdded tests 2023-11-06 10:50:21 +01:00
Vojtech Juranek
9d26dd4cf4 DBZ-7007 Move embedded engine config into separate interface
This config will be re-used by possible other implementations of
DebeiumEngine API in the embedded package. As DebeziumEngine API
can have completely different implementations and thus also config,
the class is called `EmbeddedEngineConfig` as it's assumed to be used
only by embedded engine "family" of implementations.

To keep backward compatibility, the config options are extracted into
an interface and `EmbeddedEngine` implements this interface, thus
allowing to use these options in custom classes without any need for the
code changes.
2023-11-06 10:50:21 +01:00
Vojtech Juranek
e073dbd1be DBZ-7007 Use DebeziumEngine API instead of EmbeddedEngine in postgres tests 2023-11-06 10:50:21 +01:00
Ondrej Babec
b0ee60df1d DBZ-6996
In order to stabilize testsuite on Docker and Kuberetes following changes were made:
- Remove port forwarding from testsuite
- Increase poll timeout
- Separate Mongo test classes based on deployment and streaming mode
- Allow both Docker and Kubernetes Mongo deployments use connection string
- Create container for testsuite
- Create kubernetes deployment for the testsuite
2023-11-04 11:00:46 +01:00
Jakub Cechacek
e48af62c0f DBZ-6996 Updating system tests to properly use MongoDB in a container 2023-11-04 11:00:46 +01:00
caicancai
4b40bb935e DBZ-7095 The MySqlParser.g4 parser has a priority problem 2023-11-03 16:39:23 +01:00
Chris Cranford
e67620d30e DBZ-7047 Add comment about abstract method usage 2023-11-02 08:58:28 -04:00