mirror of
https://github.com/ruvnet/ruflo.git
synced 2026-11-09 14:04:06 +09:00
* fix: prevent concurrent NPX cache conflicts with lock manager - Add NPX cache manager utility to serialize NPX operations - Wrap all NPX commands in withLock() to ensure exclusive access - Implement automatic retry logic with exponential backoff - Add lock timeout protection (30s) to prevent deadlocks - Create manual lock management CLI for debugging - Add comprehensive troubleshooting documentation This fix addresses the ENOTEMPTY error that occurs when multiple claude-flow instances attempt to use NPX simultaneously. The lock manager ensures only one NPX operation runs at a time, preventing cache directory rename conflicts. Fixes the issue where concurrent swarm operations fail with: npm error code ENOTEMPTY npm error syscall rename npm error ENOTEMPTY: directory not empty 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: replace complex lock manager with simple per-process cache isolation - Remove complex NPX lock manager in favor of simpler approach - Each process now gets isolated NPX cache directory - Maintains true parallel execution without serialization overhead - Add comprehensive test suites to verify fix works - Update documentation with improved solution Benefits: - No performance impact (no serialization) - Simpler implementation (50 lines vs 200+ lines) - Self-cleaning cache directories - Cross-platform compatibility - Zero lock contention Test Results: - All 6 unit tests pass - 18/18 integration tests pass with 0 ENOTEMPTY errors - Concurrent and stress tests successful 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * test: add Jest-compatible tests for NPX cache isolation - Add comprehensive unit tests for npx-isolated-cache utility - Add integration tests for init command NPX isolation - Fix duplicate function declaration in batch-init.js - All tests pass: 15/15 Jest tests + 6/6 integration tests - Verify 0 ENOTEMPTY errors in concurrent scenarios Test Coverage: - Cache isolation functionality - Environment variable handling - Cleanup mechanisms - Integration with existing code - Concurrent NPX execution safety 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: add comprehensive troubleshooting documentation for NPX cache fix - Add troubleshooting/README.md with quick diagnosis guide - Update main troubleshooting.md with NPX cache fix section - Document test verification steps and version notes - Link to detailed NPX cache conflicts guide - Mark issue as FIXED in v2.0.0-alpha.17+ Provides clear guidance for: - Identifying ENOTEMPTY errors - Understanding the fix implemented - Testing concurrent safety - Version-specific notes 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: remove unused imports from batch-init.js Remove unused imports that were leftover from cleanup: - getIsolatedNpxEnv (not needed - batch-init doesn't run NPX commands) - path (removed when duplicate initializeProject function was cleaned up) The batch-init functionality only creates directories and files with Deno APIs, so NPX cache isolation is not required there. NPX isolation is only used in the main init command where create-sparc NPX command is executed. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: maintain Deno environment compatibility in NPX cache isolation Ensure npx-isolated-cache works in both Deno and Node.js environments: - Use Deno.env.toObject() when available (Deno environment) - Fall back to process.env in Node.js environment - Maintains compatibility with existing Deno-based init command This preserves the original behavior where Deno.env.toObject() was used in the init command's environment setup, just with added NPX cache isolation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
Claude-Flow Troubleshooting Guide
This directory contains comprehensive troubleshooting documentation for common issues and their solutions.
📋 Available Guides
NPX Cache Conflicts
Issue: ENOTEMPTY errors when running multiple claude-flow instances concurrently Solution: Automatic per-process cache isolation (v2.0.0-alpha.17+) Symptoms:
npm error code ENOTEMPTY
npm error syscall rename
npm error ENOTEMPTY: directory not empty, rename '[source]' -> '[dest]'
🚀 Quick Diagnosis
Common Error Patterns
| Error Pattern | Guide | Fix |
|---|---|---|
ENOTEMPTY: directory not empty |
NPX Cache Conflicts | Upgrade to alpha.17+ or use isolated cache |
npm ERR! code ENOTEMPTY |
NPX Cache Conflicts | Per-process cache isolation |
Environment Issues
Multiple concurrent operations failing? → See NPX Cache Conflicts
Swarm operations not working? → Check for ENOTEMPTY errors in NPX Cache Conflicts
Batch initialization failing? → Review NPX Cache Conflicts for concurrent operation fixes
🔧 General Troubleshooting Steps
-
Check your version: Ensure you're using the latest alpha release
npx claude-flow@alpha --version -
Clear NPX cache (if using older versions):
npm cache clean --force rm -rf ~/.npm/_npx -
Run diagnostics:
npx claude-flow@alpha init --dry-run -
Test concurrent safety (alpha.17+):
# Run included test suites node test/npx-cache-fix-test.js node test/npx-isolation-integration-test.js
📞 Getting Help
If you don't find your issue here:
- Search existing issues: GitHub Issues
- Check the logs: Look for specific error patterns in the troubleshooting guides
- Create a new issue: Include error messages and steps to reproduce
🔄 Version-Specific Notes
v2.0.0-alpha.17+
- ✅ NPX cache conflicts resolved with automatic isolation
- ✅ True parallel execution maintained
- ✅ Zero performance overhead
Earlier versions
- ⚠️ May experience ENOTEMPTY errors with concurrent operations
- 🔧 Use workarounds from NPX Cache Conflicts
🧪 Testing Your Fix
After applying any fixes, verify with:
# Basic functionality
npx claude-flow@alpha init --minimal --force
# Concurrent safety (alpha.17+)
node test/npx-cache-fix-test.js