You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "luana (Jira)" <ji...@apache.org> on 2026/10/08 09:42:00 UTC
[jira] [Created] (FLINK-40957) MongoDB CDC encodes spaces as '+' instead of '%20' in credentials
luana created FLINK-40957:
-----------------------------
Summary: MongoDB CDC encodes spaces as '+' instead of '%20' in credentials
Key: FLINK-40957
URL: https://issues.apache.org/jira/browse/FLINK-40957
Project: Flink
Issue Type: Bug
Components: Connectors / MongoDB
Environment: OS: Windows 11
Java: OpenJDK 17.0.20.1
Flink CDC: master branch (3.7-SNAPSHOT)
Reporter: luana
Attachments: Screenshot 2026-10-08 124003.png
MongoDBEnvelope.encodeValue currently uses:
URLEncoder.encode(value, StandardCharsets.UTF_8.name())
URLEncoder follows application/x-www-form-urlencoded semantics and encodes spaces as '+'.
For MongoDB connection strings, spaces should be percent-encoded as '%20'.
Example:
Input:
my pass
Current:
my+pass
Expected:
my%20pass
This can cause authentication failures when usernames or passwords contain spaces.
I reproduced the issue with a unit test:
assertEquals(
"my%20pass",
MongoDBEnvelope.encodeValue("my pass"));
The test fails with the current implementation and passes after replacing '+' with '%20':
URLEncoder.encode(value, StandardCharsets.UTF_8.name())
.replace("+", "%20");
Reference:
https://stackoverflow.com/questions/4737841/urlencoder-not-able-to-translate-space-character
--
This message was sent by Atlassian Jira
(v8.20.10#820010)