Skip to content

fix(diff): migra js OOM error#5045

Merged
avallete merged 3 commits intodevelopfrom
fix/migra-oom-regression
Apr 8, 2026
Merged

fix(diff): migra js OOM error#5045
avallete merged 3 commits intodevelopfrom
fix/migra-oom-regression

Conversation

@avallete
Copy link
Copy Markdown
Member

@avallete avallete commented Apr 7, 2026

What kind of change does this PR introduce?

This fixes a regression we had since 2.52.5 when migrating to pgkit/edge-runtime diff for larges database schemas. It caused OOM error with migra:

error diffing schema: error running container: exit 133:                                                                                                                                                   
                                                                                                                                                                                                           
<--- Last few GCs --->                                                                                                                                                                                     
                                                                                                                                                                                                           
[8:0xffff7cde0000]     9024 ms: Mark-Compact 1400.7 (1404.7) -> 1399.4 (1405.4) MB, pooled: 0 MB, 458.71 / 0.00 ms  (average mu = 0.057, current mu = 0.004) allocation failure; scavenge might not succeed
                                                                                                                                                                                                           
                                                                                                                                                                                                           
<--- JS stacktrace --->                                                                                                                                                                                    
                                                                                                                                                                                                           
                                                                                                                                                                                                           
                                                                                                                                                                                                           
#                                                                                                                                                                                                          
# Fatal JavaScript out of memory: Ineffective mark-compacts near heap limit                                                                                                                                
#                                                                                                                                                                                                          
==== C stack trace ===============================                                                                                                                                                         
                                                                                                                                                                                                           
    edge-runtime(+0x3ef4710) [0xaaaad8bc4710]                                                                                                                                                              
    edge-runtime(+0x35a235c) [0xaaaad827235c]                                                                                                                                                              
    edge-runtime(+0x359f6c4) [0xaaaad826f6c4]                                                                                                                                                              
    edge-runtime(+0x35d306c) [0xaaaad82a306c]                                                                                                                                                              
    edge-runtime(+0x36e3e90) [0xaaaad83b3e90]                                                                                                                                                              
    edge-runtime(+0x36f52b0) [0xaaaad83c52b0]                                                                                                                                                              
    edge-runtime(+0x36f4ae0) [0xaaaad83c4ae0]                                                                                                                                                              
    edge-runtime(+0x3b89ea8) [0xaaaad8859ea8]                                                                                                                                                              
Trace/breakpoint trap

To mitigate this issue, I added a fallback to use the Bash/python approach if this OOM error occurs with the JS wrapper.

@coveralls
Copy link
Copy Markdown

coveralls commented Apr 7, 2026

Coverage Report for CI Build 24089895651

Coverage decreased (-0.03%) to 63.815%

Details

  • Coverage decreased (-0.03%) from the base build.
  • Patch coverage: 5 uncovered changes across 1 file (7 of 12 lines covered, 58.33%).
  • 7 coverage regressions across 2 files.

Uncovered Changes

File Changed Covered %
internal/db/diff/migra.go 11 6 54.55%

Coverage Regressions

7 previously-covered lines in 2 files lost coverage.

File Lines Losing Coverage Coverage
internal/utils/git.go 5 57.14%
internal/storage/rm/rm.go 2 80.61%

Coverage Stats

Coverage Status
Relevant Lines: 15313
Covered Lines: 9772
Line Coverage: 63.82%
Coverage Strength: 6.89 hits per line

💛 - Coveralls

@avallete avallete marked this pull request as ready for review April 7, 2026 15:32
@avallete avallete requested a review from a team as a code owner April 7, 2026 15:32
@avallete avallete merged commit a6c3ece into develop Apr 8, 2026
15 checks passed
@avallete avallete deleted the fix/migra-oom-regression branch April 8, 2026 08:25
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.

3 participants