mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-03-22 18:33:08 +00:00
fix: Address code review findings for memory leak fix (#330)
## Code Review Fixes 1. **Test Assertion Error (line 292)** - CRITICAL - Fixed incorrect assertion in sqljs-memory-leak test - Changed from `expect(saveCallback).toBeLessThan(10)` - To: `expect(saveCallback.mock.calls.length).toBeLessThan(10)` - ✅ Test now passes (12/12 tests passing) 2. **Upper Bound Validation** - Added maximum value validation for SQLJS_SAVE_INTERVAL_MS - Valid range: 100ms - 60000ms (1 minute) - Falls back to default 5000ms if out of range - Location: database-adapter.ts:255 3. **Railway Dockerfile Optimization** - Removed build tools after installing dependencies - Reduces image size by ~50-100MB - Pattern: install → build native modules → remove tools - Location: Dockerfile.railway:38-41 4. **Defensive Programming** - Added `closed` flag to prevent double-close issues - Early return if already closed - Location: database-adapter.ts:236, 283-286 5. **Documentation Improvements** - Added comprehensive comments for DEFAULT_SAVE_INTERVAL_MS - Documented data loss window trade-off (5 seconds) - Explained constructor optimization (no initial save) - Clarified scheduleSave() debouncing under load 6. **CHANGELOG Accuracy** - Fixed discrepancy about explicit cleanup - Updated to reflect automatic cleanup via function scope - Removed misleading `data = null` reference ## Verification - ✅ Build: Success - ✅ Lint: No errors - ✅ Critical test: sqljs-memory-leak (12/12 passing) - ✅ All code review findings addressed 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -25,17 +25,20 @@ RUN npm run build
|
||||
FROM node:22-alpine AS runtime
|
||||
WORKDIR /app
|
||||
|
||||
# Install system dependencies including build tools for better-sqlite3 compilation
|
||||
# Build tools (python3, make, g++) enable native SQLite instead of sql.js, preventing memory leaks
|
||||
RUN apk add --no-cache curl python3 make g++ && \
|
||||
# Install runtime dependencies
|
||||
RUN apk add --no-cache curl && \
|
||||
rm -rf /var/cache/apk/*
|
||||
|
||||
# Copy runtime-only package.json
|
||||
COPY package.runtime.json package.json
|
||||
|
||||
# Install only production dependencies
|
||||
RUN npm install --production --no-audit --no-fund && \
|
||||
npm cache clean --force
|
||||
# Install production dependencies with temporary build tools
|
||||
# Build tools (python3, make, g++) enable better-sqlite3 compilation (native SQLite)
|
||||
# They are removed after installation to reduce image size and attack surface
|
||||
RUN apk add --no-cache python3 make g++ && \
|
||||
npm install --production --no-audit --no-fund && \
|
||||
npm cache clean --force && \
|
||||
apk del python3 make g++
|
||||
|
||||
# Copy built application from builder stage
|
||||
COPY --from=builder /app/dist ./dist
|
||||
|
||||
Reference in New Issue
Block a user