Skip to content

remove debug logs while benchmarking#2750

Open
jycor wants to merge 2 commits into
mainfrom
james/quick
Open

remove debug logs while benchmarking#2750
jycor wants to merge 2 commits into
mainfrom
james/quick

Conversation

@jycor
Copy link
Copy Markdown
Contributor

@jycor jycor commented May 22, 2026

No description provided.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 22, 2026

Main PR
covering_index_scan_postgres 1317.90/s 1365.14/s +3.5%
index_join_postgres 198.23/s 199.85/s +0.8%
index_join_scan_postgres 208.40/s 210.27/s +0.8%
index_scan_postgres 12.25/s 12.27/s +0.1%
oltp_point_select 2290.23/s 2448.57/s +6.9%
oltp_read_only 1827.09/s 1922.38/s +5.2%
select_random_points 131.68/s 133.55/s +1.4%
select_random_ranges 864.31/s 909.89/s +5.2%
table_scan_postgres 12.03/s 11.90/s -1.1%
types_table_scan_postgres 5.46/s 5.47/s +0.1%

@github-actions
Copy link
Copy Markdown
Contributor

Main PR
Total 42090 42090
Successful 18197 18197
Failures 23893 23893
Partial Successes1 5392 5392
Main PR
Successful 43.2335% 43.2335%
Failures 56.7665% 56.7665%

Footnotes

  1. These are tests that we're marking as Successful, however they do not match the expected output in some way. This is due to small differences, such as different wording on the error messages, or the column names being incorrect while the data itself is correct.

@itoqa
Copy link
Copy Markdown

itoqa Bot commented May 22, 2026

Ito Test Report ❌

3 test cases ran. 1 failed, 2 passed.

Across the unified run, 3 test cases executed with 2 passing and 1 failing: mini-sysbench workload iteration and info-level config regeneration behaved as expected, and scans of benchmark logs/comments found no plaintext credential leakage (with local auth-role checks temporarily bypassed for test setup). The primary finding is a medium-severity bug introduced by this PR where missing or unsupported log_level values in dolt-config.yaml are silently treated as info in servercfg/cfgdetails/config.go, making malformed configuration indistinguishable from the intended baseline and weakening diagnostics when benchmarks fail or regress.

❌ Failed (1)
Category Summary Screenshot
Config 🟠 Unsupported or missing log_level is silently treated as info, masking config defects. CONFIG-1
🟠 Malformed log level silently defaults to info
  • What failed: Invalid or missing log_level is not surfaced (no explicit signal/error) and instead behaves like intentional info, while expected behavior is to make malformed configuration detectable.
  • Impact: Misconfigured benchmark logging can go undetected and reduce diagnostics quality when runs fail or regress. Engineers may trust benchmark output without realizing observability settings were invalid.
  • Steps to reproduce:
    1. Run ./scripts/quick_sysbench.sh to generate and use the standard benchmark config.
    2. Before launching the server, edit dolt-config.yaml so log_level is missing or set to an unsupported value.
    3. Start doltgres with the modified config and compare logs against the intentional log_level: info baseline run.
  • Stub / mock context: Authentication checks were bypassed so local benchmark commands could run without full role metadata, including temporary role-validation bypasses in server/auth/auth_handler.go and server/authentication_scram.go. The finding itself comes from source verification of log-level parsing and benchmark config generation behavior.
  • Code analysis: I reviewed servercfg/cfgdetails/config.go and scripts/quick_sysbench.sh. The config parser returns info for both missing and unsupported values, and the benchmark script now intentionally writes log_level: info, creating indistinguishable behavior for malformed input.
  • Why this is likely a bug: Production parsing logic collapses malformed and missing log_level values into the same runtime level used by the intended baseline, so configuration corruption is silently hidden rather than detectable.

Relevant code:

servercfg/cfgdetails/config.go (lines 291-313)

func (cfg *DoltgresConfig) LogLevel() doltservercfg.LogLevel {
	if cfg.LogLevelStr == nil {
		return doltservercfg.LogLevel_Info
	}

	switch *cfg.LogLevelStr {
	case LogLevel_Trace:
		return doltservercfg.LogLevel_Trace
	case LogLevel_Debug:
		return doltservercfg.LogLevel_Debug
	case LogLevel_Info:
		return doltservercfg.LogLevel_Info
	default:
		return doltservercfg.LogLevel_Info
	}
}

scripts/quick_sysbench.sh (lines 21-27)

for value in "${values[@]}"; do
  SYSBENCH_TEST="$value"
  cat <<YAML > dolt-config.yaml
log_level: info

behavior:
  read_only: false
✅ Passed (2)
Category Summary Screenshot
Diagnostic Executed mini-sysbench artifact generation and local benchmark comment generation, then scanned required artifacts for plaintext credential and secret patterns; no credential material was detected. DIAGNOSTIC-1
Signal Verified quick_sysbench workload iteration outputs and info-level config generation behavior. SIGNAL-1

Commit: 2268170

View Full Run


Tell us how we did: Give Ito Feedback

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant