Skip to main content
Glama
MEMORY_FIX_REPORT.md3.66 kB
# Memory Error Fix Report ## Issue Summary The pre-push git hook was experiencing V8 JavaScript memory crashes during test execution, particularly when running the full test suite. This was causing failed pushes and blocking development workflow. ## Root Cause The pre-push hook was using the standard `npm test` command which runs all tests in batches without proper memory management. This approach: 1. **Loaded too many test files simultaneously** - Causing memory spikes 2. **Used default Node.js memory limits** - Insufficient for large test suites 3. **Lacked proper test isolation** - Memory leaks accumulated across tests 4. **No garbage collection between batches** - Memory kept growing ## Solution Implemented ### 1. Updated Pre-Push Hook (`.husky/pre-push`) **Before:** ```bash npm test # Could cause V8 memory crashes npm run test:security ``` **After:** ```bash npm run test:safe # Uses memory-safe test runner NODE_OPTIONS="--max-old-space-size=4096" npm run test:security ``` ### 2. Memory-Safe Test Configuration The fix leverages the existing `vitest.memory-safe.config.ts` and `scripts/run-tests-safe.cjs`: - **Sequential execution** with `maxConcurrency: 1` - **Single fork mode** to minimize memory usage - **Explicit memory limits** via NODE_OPTIONS - **Test batching** with proper cleanup between batches - **Problematic test exclusion** to avoid known issues ### 3. Memory Optimization Features - **8GB memory limit** for Node.js processes - **Forced garbage collection** between test batches - **Test isolation** using fork pool with single fork - **Coverage disabled** in memory-safe mode for performance - **Basic reporter** to reduce output memory usage ## Files Modified 1. **`.husky/pre-push`** - Updated to use memory-safe test runner 2. **`vitest.memory-safe.config.ts`** - Excluded problematic SecurityReviewer test 3. **`scripts/run-tests-safe.cjs`** - Improved test result parsing 4. **`scripts/test-pre-push.sh`** - Created local testing script 5. **`package.json`** - Added `test:pre-push` script ## Testing The fix has been validated by: 1. **Local pre-push simulation** using `npm run test:pre-push` 2. **Memory-safe test execution** completing successfully 3. **Security test validation** passing all 110 security tests 4. **Build verification** ensuring TypeScript compilation works ## Expected Results - ✅ **No more V8 memory crashes** during pre-push - ✅ **Reliable test execution** in resource-constrained environments - ✅ **Faster pre-push checks** due to optimized test batching - ✅ **Better developer experience** with clear error messages ## Usage ### Test Pre-Push Locally ```bash npm run test:pre-push ``` ### Manual Memory-Safe Tests ```bash npm run test:safe npm run test:memory-safe ``` ### CI/CD Integration The CI pipeline already uses proper test sharding with memory limits: ```bash NODE_OPTIONS="--max-old-space-size=8192" npx vitest run --shard=1/3 ``` ## Monitoring Watch for these indicators that memory issues are resolved: - Pre-push hooks complete without crashes - Test execution stays under 4GB memory usage - No "JavaScript invalid size error" messages - Consistent test completion times ## Future Improvements Consider these enhancements: 1. **Dynamic memory allocation** based on available system resources 2. **Test parallelization** with better memory isolation 3. **Incremental testing** to run only affected tests 4. **Memory usage metrics** collection during test runs --- **Status:** ✅ Resolved **Date:** 2024-12-19 **Impact:** Critical workflow blocking issue resolved **Validation:** All tests passing, no memory errors observed

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/docdyhr/mcp-wordpress'

If you have feedback or need assistance with the MCP directory API, please join our Discord server