DBZ-7260 Added validation guard against the use of removed RS connection mode configuration
This commit is contained in:
parent
5dbe073d3b
commit
716630043c
@ -37,6 +37,8 @@
|
||||
public class MongoDbConnector extends BaseSourceConnector {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(MongoDbConnector.class);
|
||||
public static final String DEPRECATED_SHARD_CS_PARAMS_FILED = "mongodb.connection.string.shard.params";
|
||||
public static final String DEPRECATED_CONNECTION_MODE_FILED = "mongodb.connection.mode";
|
||||
|
||||
private Configuration config;
|
||||
|
||||
@ -105,6 +107,20 @@ public Config validate(Map<String, String> connectorConfigs) {
|
||||
}
|
||||
|
||||
public void validateConnection(Configuration config, ConfigValue connectionStringValidation) {
|
||||
// Shard specific parameters shouldn't be set after RS connection mode removal
|
||||
if (config.hasKey(DEPRECATED_SHARD_CS_PARAMS_FILED)) {
|
||||
LOGGER.warn("Field '{}' is deprecated. Use only '{}' to set connection parameters", DEPRECATED_SHARD_CS_PARAMS_FILED,
|
||||
MongoDbConnectorConfig.CONNECTION_STRING.name());
|
||||
connectionStringValidation.addErrorMessage("Deprecated field '" + DEPRECATED_SHARD_CS_PARAMS_FILED + "' is used");
|
||||
}
|
||||
|
||||
// RS connection mode should not be used
|
||||
var mode = config.getString(DEPRECATED_CONNECTION_MODE_FILED);
|
||||
if (mode != null && mode.equals("replica_set")) {
|
||||
LOGGER.warn("Field '{}' is deprecated. Sharded mode is now used implicitly, please remove it. ", DEPRECATED_CONNECTION_MODE_FILED);
|
||||
connectionStringValidation.addErrorMessage("Deprecated field '" + DEPRECATED_CONNECTION_MODE_FILED + "' is used set to removed 'replica_set' value");
|
||||
}
|
||||
|
||||
MongoDbConnectionContext connectionContext = new MongoDbConnectionContext(config);
|
||||
|
||||
try {
|
||||
|
@ -114,6 +114,19 @@ public void shouldFailToValidateInvalidConfiguration() {
|
||||
assertNoConfigurationErrors(result, CommonConnectorConfig.TOMBSTONES_ON_DELETE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldFailToValidateWithReplicaSetModeParams() {
|
||||
config = TestHelper.getConfiguration(mongo)
|
||||
.edit()
|
||||
.with(MongoDbConnector.DEPRECATED_SHARD_CS_PARAMS_FILED, "readPreference=primary")
|
||||
.with(MongoDbConnector.DEPRECATED_CONNECTION_MODE_FILED, "replica_set")
|
||||
.build();
|
||||
MongoDbConnector connector = new MongoDbConnector();
|
||||
Config result = connector.validate(config.asMap());
|
||||
|
||||
assertConfigurationErrors(result, MongoDbConnectorConfig.CONNECTION_STRING, 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldThrowExceptionWhenFieldExcludeListDatabasePartIsOnlyProvided() {
|
||||
shouldValidateFilterFieldConfiguration(MongoDbConnectorConfig.FIELD_EXCLUDE_LIST, "inventory", 1);
|
||||
|
Loading…
Reference in New Issue
Block a user