mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-13 09:07:20 +00:00
feat: comprehensive module system and database management improvements
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
This commit is contained in:
187
docs/DISABLED_MODULES.md
Normal file
187
docs/DISABLED_MODULES.md
Normal file
@@ -0,0 +1,187 @@
|
||||
# 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 of `GetLevel()`
|
||||
- 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 `OnGiveXP` signature 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:
|
||||
|
||||
1. **Leave these modules disabled** until upstream fixes are available
|
||||
2. **Check alternatives** - Some modules have Lua versions (e.g., lua-ah-bot)
|
||||
3. **Monitor updates** - Watch module repositories for fixes
|
||||
|
||||
### For Developers:
|
||||
|
||||
1. **mod-azerothshard**: Fix method name casing (`getLevel` → `GetLevel`)
|
||||
2. **mod-challenge-modes**: Update `OnGiveXP` signature to match current API
|
||||
3. **mod-ahbot**: Verify script loader function exists or switch to Lua version
|
||||
4. **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:
|
||||
|
||||
```bash
|
||||
# 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:**
|
||||
1. Disable the problematic module in `.env`
|
||||
2. Clean build directory
|
||||
3. Rebuild
|
||||
|
||||
### Override Errors
|
||||
**Symptom:** `only virtual member functions can be marked 'override'`
|
||||
|
||||
**Solution:**
|
||||
1. Module hook signature doesn't match AzerothCore API
|
||||
2. Disable module or wait for upstream fix
|
||||
|
||||
### Method Not Found Errors
|
||||
**Symptom:** `no member named 'methodName'`
|
||||
|
||||
**Solution:**
|
||||
1. Module uses outdated API
|
||||
2. Check for case-sensitivity (e.g., `getLevel` vs `GetLevel`)
|
||||
3. Disable module until updated
|
||||
|
||||
---
|
||||
|
||||
## .env Configuration
|
||||
|
||||
Current disabled modules in `.env`:
|
||||
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user