risingwavelabs/risingwave · error
missing `password` in CDC properties
Error message
missing `password` in CDC properties
What it means
Raised by `query_sql_server_lsns` when `password` is missing from the CDC properties. Along with `username`, the password is required to build `tiberius::AuthMethod::sql_server` for the LSN monitoring connection.
Source
Thrown at src/connector/src/source/cdc/enumerator/mod.rs:294
async fn query_sql_server_lsns(&self) -> ConnectorResult<Option<(String, String)>> {
let hostname = self
.properties
.get("hostname")
.ok_or_else(|| anyhow!("missing `hostname` in CDC properties"))?;
let port = self
.properties
.get("port")
.ok_or_else(|| anyhow!("missing `port` in CDC properties"))?
.parse::<u16>()
.context("failed to parse `port` as a u16")?;
let username = self
.properties
.get("username")
.ok_or_else(|| anyhow!("missing `username` in CDC properties"))?;
let password = self
.properties
.get("password")
.ok_or_else(|| anyhow!("missing `password` in CDC properties"))?;
let database = self
.properties
.get("database.name")
.ok_or_else(|| anyhow!("missing `database.name` in CDC properties"))?;
let mut config = Config::new();
config.host(hostname);
config.port(port);
config.database(database);
config.authentication(tiberius::AuthMethod::sql_server(username, password));
config.trust_cert();
let mut client = SqlServerClient::new_with_config(config).await?;
let row = client
.inner_client
.simple_query(
"SELECT \
sys.fn_cdc_get_max_lsn() AS max_lsn, \View on GitHub (pinned to 6469eb736d)
Solutions
- Add `password` to the CDC source properties
- Check secret resolution/injection logs to confirm the password was populated
- Recreate the table with both username and password set
- Verify there is no key-name typo (must be exactly `password`)
Example fix
// before WITH (connector = 'cdc', username = 'cdc_user') // after WITH (connector = 'cdc', username = 'cdc_user', password = '***')
Defensive patterns
Strategy: validation
Validate before calling
match properties.get("password") {
Some(p) if !p.is_empty() => Ok(()),
Some(_) => Err("`password` must not be empty".into()),
None => Err("CDC source is missing required property: password".into()),
} Prevention
- Confirm secret resolution succeeded before launching the CDC source
- Use exact key names; avoid typos by defining a schema for CDC options
When it happens
Trigger: Calling `monitor_sql_server_lsns` on a SqlServerEnumerator whose `properties` map lacks a `password` entry.
Common situations: Password stored in a secret that failed to resolve; user quotes an empty password; config migration drops the password field; typo like `passsword` in the with clause.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- missing `username` in CDC properties
- missing `hostname` in CDC properties
- missing `port` in CDC properties
- missing `database.name` in CDC properties
- Both `access_key` and `secret_key` must be provided
AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11).
Data as JSON: /api/errors/9e8cd23b004b5393.
Report an issue: GitHub.