Bug fix release
src/mysqloperatorcalculator/integration_test.go
Updated Mysqlversion in makeRequest helper from Patch: 32 to Patch: 46 to match MySQLMinSupported
Updated same version in TestIntegration_OpenDimension_PXC inline request
Updated version filter test comment to reference 8.0.46
src/mysqloperatorcalculator/Configuration.go
Added named version boundary variables: MySQLMinSupported, MySQLMaxSupported, V8_0_46, V8_4_1, V11_1_1
Updated all parameter MySQLVersions ranges from raw Version{...} literals to named variables
Fixed limit_memory.Default = "!" → "1" for HAProxy and PMM resource groups
src/mysqloperatorcalculator/Constants.go
Added inline documentation comments to every constant explaining what it controls and why
Added section headers grouping related constants
Documented the dual-role of MinLimitPXC / MinLimitGR (buffer pool floor AND response evaluation threshold)
src/mysqloperatorcalculator/configurator.go
Fixed getRedologDimensionTot HeavyWrites case: 0.15 + 0.15 * loadFactor → 0.4 + 0.4 * loadFactor
Fixed wrong comments on CalculateReturnBytes thresholds (// 50% / // 90% → // 20% / // 85%)
Commented out dead getAdjFactor function (was never called)
Enhanced getGCScache TODO with specific details: unbounded gcsFactor, cascading effect on buffer pool, and the recommended fix (cap at MaxGCSCacheFactor + memoryLeftover/3)
README.md
Added "Constants & Tuning Reference" section with tables for all constant groups
Added "Calculation Pipeline" section (9 phases + response evaluation + orchestration loops)
Fixed MinLimitPXC value in table: 0.45 → 0.50
Fixed InnoDBPctValueGR value in table: 0.68 → 0.70
Fixed all MySQL version references to 8.0.46
Fixed HeavyWrites redo log formula: idealBP × (0.15 + 0.15 × loadFactor) → idealBP × (0.40 + 0.40 × loadFactor)
Updated /supported response example: min/max to {8,0,46} / {11,1,1}
Added load type 4 (Heavy Writes) to the LoadType table
Fixed Init() stale c.request bug: moved c.request = r to the top of Init() so idealBufferPoolDIm is computed using the correct incoming DBType (PXC: 0.80, GR: 0.70) instead of always defaulting to the GR factor on the first call
Refactored getRedologDimensionTot: replaced the old proportional double-factor formula (pct + pct × loadFactor) with a cleaner index-based approach (baseIndex + 0.5 × loadFactor, capped at 1.0); base indices are 0.6 / 0.7 / 0.8 / 0.9 for MostlyReads / SomeWrites / EqualReadsWrites / HeavyWrites respectively
Fixed GetAllGaleraProviderOptionsAsString: sort provider param keys before building the wsrep-provider-options string to produce deterministic output across all calls
Commented out dead struct fields Configurator.connectionResearch and references.loadAdjustment (never assigned or read)
Added TODO to references.gcscacheLoad noting it should be made dynamic to match PXC's gcacheLoad scaling
README.md
Updated Phase 2 (Redo Log Sizing) to document the new index-based formula (baseIndex + 0.5 × loadFactor, capped at 1.0)
Added SomeWrites row which was missing from the load-type table
Corrected idealBP denominator: now explicitly states PXC=0.80 / GR=0.70 instead of a fixed 0.80
Added note explaining cap semantics: HeavyWrites at loadFactor > 0.2 always produces redo log = idealBP
src/mysqloperatorcalculator/Configuration.go
Registered LoadTypeHeavyWrites {4, "Mainly write", "Data load, data ingest. 90% writes"}
in conf.LoadType so /supported returns all four load types.
src/mysqloperatorcalculator/configuration_test.go
Extended TestGetLoadByID_Valid to include LoadTypeHeavyWrites.
src/mysqloperatorcalculator/configurator.go
Removed redundant bufferPoolSubstract variable in paramInnoDBBufferPool first pass;
memoryLeftover is now decremented directly by bufferPool (same value, single variable).
src/mysqloperatorcalculator/integration_test.go
Added redoLogCapacityBytes() helper (extracts innodb_redo_log_capacity, skips if version-filtered).
Added four LoadTypeHeavyWrites end-to-end integration tests:
TestIntegration_PXC_HeavyWrites_OK — PXC happy path, verifies BP and redo log > 0
TestIntegration_GR_HeavyWrites_OK — GR happy path, verifies GCS cache > 0
TestIntegration_HeavyWrites_SaturatesEarlierThanEqualReadsWrites
— proves HeavyWrites (factor 2.0) overloads XSmall at 350 connections
while EqualReadsWrites (factor 1.6) does not
TestIntegration_HeavyWrites_RedoLog_MonotonicByLoadType
— verifies MostlyReads < SomeWrites < EqualReadsWrites < HeavyWrites redo log
on Large (id=4) at 50 connections
src/server.go
Added -loglevel CLI flag (ERROR|INFO|DEBUG, default DEBUG); log level is now runtime-configurable
instead of hardcoded to DebugLevel.
Fixed server.ListenAndServe() return value: error is now captured, logged, and triggers os.Exit(1).
Added "strings" import for strings.ToUpper on the loglevel flag value.
src/help.go
Complete rewrite of GetHelpText():
- Updated title: "PXC and PS" → "PXC and Group Replication"
- Corrected example IP: 192.168.4.41 → 127.0.0.1
- /supported response now shows all 10 dimensions, all 4 load types, correct version
range 8.0.46–11.1.1 - Calculator examples changed from GET to POST; MySQL patch updated from 33 to 46
- Three curl examples added: predefined dimension, open dimension (999), connection-driven (998)
- REQUEST FIELDS reference section added (documents all fields including providerCostPct)