[auto-bump] [no-release-notes] dependency by coffeegoddd#2790
[auto-bump] [no-release-notes] dependency by coffeegoddd#2790coffeegoddd wants to merge 1 commit into
Conversation
|
Ito Test Report ❌7 test cases ran. 1 failed, 1 additional finding, 5 passed. Overall, the unified run had 7 test cases with 5 passing and 2 failing, confirming that authentication/SCRAM handshake behavior, first-run default postgres database bootstrap, and core replication start/retry-threshold scenarios generally worked as expected. The most important findings were two High-severity defects: a PR-introduced compile-time regression in server/tables/init.go (undefined sqle.HandleSchema) that blocks server build and planner/wire-flow validation, and an existing startup bug where replication authentication failures are returned by the replicator but ignored because startup launches replication asynchronously, allowing the server to appear healthy while replication is broken. ❌ Failed (1)
|
| Category | Summary | Screenshot |
|---|---|---|
| Replication | ![]() |
⚠️ Startup continues despite replication auth failure
- What failed: The server reports replication authentication failures, but startup still completes and serves SQL connections. Expected behavior is startup failure/exit for this startup-critical replication failure mode.
- Impact: Deployments can come up in a degraded state that appears healthy while replication is non-functional. Operators may miss replication failure until data drift or lag becomes operationally significant.
- Steps to reproduce:
- Configure replication with valid required fields but an invalid replication password.
- Start the server and wait for startup readiness.
- Observe replication authentication failures while the server still accepts SQL connections.
- Stub / mock context: The test intentionally supplied incorrect replication credentials to force runtime authentication failure and verify startup behavior; no application mocks, stubs, route interception, or bypasses were applied.
- Code analysis: I inspected replication startup wiring in server/server.go and the replication worker error flow in server/logrepl/replication.go. Startup launches replication with go replicator.StartReplication(...) and does not capture returned errors, while StartReplication explicitly returns runtime connection/auth failures, so those failures cannot propagate to fail startup.
- Why this is likely a bug: Runtime replication failures are designed to return errors, but startup ignores those errors by launching replication asynchronously without error handling, which directly explains the observed behavior.
Relevant code:
server/server.go (lines 262-269)
replicator, err := logrepl.NewLogicalReplicator(walFilePath, primaryDns, replicationDns)
if err != nil {
return nil, err
}
cli.Println("Starting replication")
go replicator.StartReplication(*cfg.PostgresReplicationConfig.SlotName)
return replicator, nilserver/logrepl/replication.go (lines 176-189)
func (r *LogicalReplicator) StartReplication(slotName string) error {
standbyMessageTimeout := 10 * time.Second
nextStandbyMessageDeadline := time.Now().Add(standbyMessageTimeout)
lastWrittenLsn, err := r.readWALPosition()
if err != nil {
return err
}
replicationConn, err := pgx.Connect(context.Background(), r.replicationDns)
if err != nil {
return err
}server/logrepl/replication.go (lines 377-383)
if err != nil {
if errors.Is(err, errShutdownRequested) {
return nil
}
log.Println("Error during replication:", err)
return err
}Commit: 519faaa
Tell us how we did: Give Ito Feedback







☕ An Automated Dependency Version Bump PR 👑
Initial Changes
The changes contained in this PR were produced by `go get`ing the dependency.
```bash
go get github.com/dolthub/[dependency]/go@[commit]
```