Skip to content

Commit 8c1a9b2

Browse files
KAFKA-414: External secrets in connection.uri attribute runs into validation error during connector deployment if config providers is not set on the connect worker level (#163)
Co-authored-by: Asif Mahmud <[email protected]>
1 parent 6e43b1d commit 8c1a9b2

File tree

3 files changed

+27
-7
lines changed

3 files changed

+27
-7
lines changed

src/main/java/com/mongodb/kafka/connect/MongoSinkConnector.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,18 @@ public ConfigDef config() {
8181

8282
@Override
8383
public Config validate(final Map<String, String> connectorConfigs) {
84-
Config rawConfig = super.validate(connectorConfigs);
85-
8684
MongoSinkConfig sinkConfig;
8785
try {
8886
sinkConfig = new MongoSinkConfig(connectorConfigs);
8987
} catch (Exception e) {
90-
return rawConfig;
88+
return super.validate(connectorConfigs);
9189
}
9290

93-
final Config config = ConfigHelper.evaluateConfigValues(rawConfig, sinkConfig);
91+
final Map<String, String> resolvedConnectorConfigs =
92+
ConfigHelper.evaluateConfigValues(connectorConfigs, sinkConfig);
93+
94+
final Config tempConfig = super.validate(resolvedConnectorConfigs);
95+
final Config config = ConfigHelper.evaluateConfigValues(tempConfig, sinkConfig);
9496

9597
validateCanConnect(sinkConfig, config, CONNECTION_URI_CONFIG)
9698
.ifPresent(

src/main/java/com/mongodb/kafka/connect/MongoSourceConnector.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,18 @@ public Class<? extends Task> taskClass() {
5050

5151
@Override
5252
public Config validate(final Map<String, String> connectorConfigs) {
53-
Config rawConfig = super.validate(connectorConfigs);
5453
MongoSourceConfig sourceConfig;
5554
try {
5655
sourceConfig = new MongoSourceConfig(connectorConfigs);
5756
} catch (Exception e) {
58-
return rawConfig;
57+
return super.validate(connectorConfigs);
5958
}
6059

61-
final Config config = ConfigHelper.evaluateConfigValues(rawConfig, sourceConfig);
60+
final Map<String, String> resolvedConnectorConfigs =
61+
ConfigHelper.evaluateConfigValues(connectorConfigs, sourceConfig);
62+
63+
final Config tempConfig = super.validate(resolvedConnectorConfigs);
64+
final Config config = ConfigHelper.evaluateConfigValues(tempConfig, sourceConfig);
6265

6366
validateCanConnect(sourceConfig, config, MongoSourceConfig.CONNECTION_URI_CONFIG)
6467
.ifPresent(

src/main/java/com/mongodb/kafka/connect/util/ConfigHelper.java

+15
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static java.lang.String.format;
1919

20+
import java.util.HashMap;
2021
import java.util.List;
2122
import java.util.Map;
2223
import java.util.Optional;
@@ -205,4 +206,18 @@ public static Config evaluateConfigValues(
205206
});
206207
return rawConfig;
207208
}
209+
210+
public static Map<String, String> evaluateConfigValues(
211+
final Map<String, String> rawConfigs, final AbstractConfig resolvedConfig) {
212+
Map<String, String> resolvedRawConfigs = new HashMap<>(rawConfigs);
213+
final Map<String, Object> originals = resolvedConfig.originals();
214+
rawConfigs.forEach(
215+
(key, val) -> {
216+
Object ev = originals.get(key);
217+
if (ev instanceof String) {
218+
resolvedRawConfigs.put(key, (String) ev);
219+
}
220+
});
221+
return resolvedRawConfigs;
222+
}
208223
}

0 commit comments

Comments
 (0)