This commit introduces major enhancements to the module installation system, database management, and configuration handling for AzerothCore deployments. ## Module System Improvements ### Module SQL Staging & Installation - Refactor module SQL staging to properly handle AzerothCore's sql/ directory structure - Fix SQL staging path to use correct AzerothCore format (sql/custom/db_*/*) - Implement conditional module database importing based on enabled modules - Add support for both cpp-modules and lua-scripts module types - Handle rsync exit code 23 (permission warnings) gracefully during deployment ### Module Manifest & Automation - Add automated module manifest generation via GitHub Actions workflow - Implement Python-based module manifest updater with comprehensive validation - Add module dependency tracking and SQL file discovery - Support for blocked modules and module metadata management ## Database Management Enhancements ### Database Import System - Add db-guard container for continuous database health monitoring and verification - Implement conditional database import that skips when databases are current - Add backup restoration and SQL staging coordination - Support for Playerbots database (4th database) in all import operations - Add comprehensive database health checking and status reporting ### Database Configuration - Implement 10 new dbimport.conf settings from environment variables: - Database.Reconnect.Seconds/Attempts for connection reliability - Updates.AllowedModules for module auto-update control - Updates.Redundancy for data integrity checks - Worker/Synch thread settings for all three core databases - Auto-apply dbimport.conf settings via auto-post-install.sh - Add environment variable injection for db-import and db-guard containers ### Backup & Recovery - Fix backup scheduler to prevent immediate execution on container startup - Add backup status monitoring script with detailed reporting - Implement backup import/export utilities - Add database verification scripts for SQL update tracking ## User Import Directory - Add new import/ directory for user-provided database files and configurations - Support for custom SQL files, configuration overrides, and example templates - Automatic import of user-provided databases and configs during initialization - Documentation and examples for custom database imports ## Configuration & Environment - Eliminate CLIENT_DATA_VERSION warning by adding default value syntax - Improve CLIENT_DATA_VERSION documentation in .env.template - Add comprehensive database import settings to .env and .env.template - Update setup.sh to handle new configuration variables with proper defaults ## Monitoring & Debugging - Add status dashboard with Go-based terminal UI (statusdash.go) - Implement JSON status output (statusjson.sh) for programmatic access - Add comprehensive database health check script - Add repair-storage-permissions.sh utility for permission issues ## Testing & Documentation - Add Phase 1 integration test suite for module installation verification - Add comprehensive documentation for: - Database management (DATABASE_MANAGEMENT.md) - Module SQL analysis (AZEROTHCORE_MODULE_SQL_ANALYSIS.md) - Implementation mapping (IMPLEMENTATION_MAP.md) - SQL staging comparison and path coverage - Module assets and DBC file requirements - Update SCRIPTS.md, ADVANCED.md, and troubleshooting documentation - Update references from database-import/ to import/ directory ## Breaking Changes - Renamed database-import/ directory to import/ for clarity - Module SQL files now staged to AzerothCore-compatible paths - db-guard container now required for proper database lifecycle management ## Bug Fixes - Fix module SQL staging directory structure for AzerothCore compatibility - Handle rsync exit code 23 gracefully during deployments - Prevent backup from running immediately on container startup - Correct SQL staging paths for proper module installation
4.7 KiB
Disabled Modules - Build Issues
This document tracks modules that have been disabled due to compilation errors or compatibility issues.
Last Updated: 2025-11-14
Disabled Modules
1. mod-azerothshard
Status: ❌ DISABLED Reason: Compilation error - Method name mismatch Error:
fatal error: no member named 'getLevel' in 'Player'; did you mean 'GetLevel'?
Details:
- Module uses incorrect method name
getLevel()instead ofGetLevel() - AzerothCore uses PascalCase for method names
- Module needs update to match current API
Fix Required: Update module source to use correct method names
2. mod-challenge-modes
Status: ❌ DISABLED Reason: Compilation error - Override signature mismatch Error:
fatal error: only virtual member functions can be marked 'override'
OnGiveXP(Player* player, uint32& amount, Unit* /*victim*/, uint8 /*xpSource*/) override
Details:
- Method
OnGiveXPsignature doesn't match base class - Base class may have changed signature in AzerothCore
- Override keyword used on non-virtual method
Fix Required: Update to match current AzerothCore PlayerScript hooks
3. mod-ahbot (C++ version)
Status: ❌ DISABLED Reason: Linker error - Missing script function Error:
undefined reference to `Addmod_ahbotScripts()'
Details:
- ModulesLoader expects
Addmod_ahbotScripts()but function not defined - Possible incomplete module or build issue
- Alternative: Use MODULE_LUA_AH_BOT instead (Lua version)
Alternative: MODULE_LUA_AH_BOT=1 (Lua implementation available)
4. azerothcore-lua-multivendor
Status: ❌ DISABLED Reason: Linker error - Missing script function Error:
undefined reference to `Addazerothcore_lua_multivendorScripts()'
Details:
- ModulesLoader expects script function but not found
- May be Lua-only module incorrectly marked as C++ module
- Module metadata may be incorrect
Fix Required: Check module type in manifest or fix module loader
Previously Blocked Modules (Manifest)
These modules are blocked in the manifest with known issues:
MODULE_POCKET_PORTAL
Reason: Requires C++20 std::format support patch before enabling
MODULE_STATBOOSTER
Reason: Override signature mismatch on OnLootItem
MODULE_DUNGEON_RESPAWN
Reason: Upstream override signature mismatch (OnBeforeTeleport); awaiting fix
Recommended Actions
For Users:
- Leave these modules disabled until upstream fixes are available
- Check alternatives - Some modules have Lua versions (e.g., lua-ah-bot)
- Monitor updates - Watch module repositories for fixes
For Developers:
- mod-azerothshard: Fix method name casing (
getLevel→GetLevel) - mod-challenge-modes: Update
OnGiveXPsignature to match current API - mod-ahbot: Verify script loader function exists or switch to Lua version
- multivendor: Check if module is Lua-only and update manifest type
Current Working Module Count
Total in Manifest: ~93 modules Enabled: 89 modules Disabled (Build Issues): 4 modules Blocked (Manifest): 3 modules
Clean Build After Module Changes
When enabling/disabling modules, always do a clean rebuild:
# Stop containers
docker compose down
# Clean build directory
rm -rf local-storage/source/build
# Regenerate module state
python3 scripts/python/modules.py \
--env-path .env \
--manifest config/module-manifest.json \
generate --output-dir local-storage/modules
# Rebuild
./build.sh --yes
Troubleshooting Build Errors
Undefined Reference Errors
Symptom: undefined reference to 'AddXXXScripts()'
Solution:
- Disable the problematic module in
.env - Clean build directory
- Rebuild
Override Errors
Symptom: only virtual member functions can be marked 'override'
Solution:
- Module hook signature doesn't match AzerothCore API
- Disable module or wait for upstream fix
Method Not Found Errors
Symptom: no member named 'methodName'
Solution:
- Module uses outdated API
- Check for case-sensitivity (e.g.,
getLevelvsGetLevel) - Disable module until updated
.env Configuration
Current disabled modules in .env:
MODULE_AZEROTHSHARD=0 # Method name mismatch
MODULE_CHALLENGE_MODES=0 # Override signature mismatch
MODULE_AHBOT=0 # Linker error (use lua version)
MODULE_MULTIVENDOR=0 # Linker error
MODULE_POCKET_PORTAL=0 # C++20 requirement
MODULE_STATBOOSTER=0 # Override mismatch
MODULE_DUNGEON_RESPAWN=0 # Override mismatch
Note: This list will be updated as modules are fixed or new issues discovered.