Files
ruflo/docs/troubleshooting
lanemcandClaude 69e93300bc fix: prevent concurrent NPX cache conflicts with isolated cache directories (#215)
* 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>
2025-07-12 23:29:20 -04:00
..

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

  1. Check your version: Ensure you're using the latest alpha release

    npx claude-flow@alpha --version
    
  2. Clear NPX cache (if using older versions):

    npm cache clean --force
    rm -rf ~/.npm/_npx
    
  3. Run diagnostics:

    npx claude-flow@alpha init --dry-run
    
  4. 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:

  1. Search existing issues: GitHub Issues
  2. Check the logs: Look for specific error patterns in the troubleshooting guides
  3. 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

📚 Additional Resources