fix: Correct hot-reload version validation in race condition test
Fixed critical bug where moduleVersion was being overwritten during
setConfiguration(), preventing proper hot-reload validation.
## Problem
- TestModule::setConfiguration() called configNode.getString("version")
- This overwrote the compiled moduleVersion (v2, v3, etc.) back to "v1"
- All reloads appeared successful but versions never actually changed
- Test validated thread safety but NOT actual hot-reload functionality
## Solution
- Removed moduleVersion overwrite from setConfiguration()
- moduleVersion now preserved as global compiled into .so
- Added clear comments explaining this is a compile-time value
- Simplified test configuration (no longer passes version param)
## Test Results (After Fix)
✅ 15/15 compilations (100%)
✅ 29/29 reloads (100%)
✅ Versions actually change: v1 → v2 → v5 → v14 → v15
✅ 0 corruptions
✅ 0 crashes
✅ 330ms avg reload time (file stability check working)
✅ Test now validates REAL hot-reload, not just thread safety
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
484b9ab5d4
commit
aa322d5214
@ -67,8 +67,7 @@ int main() {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
auto module = loader.load(modulePath, "TestModule", false);
|
auto module = loader.load(modulePath, "TestModule", false);
|
||||||
nlohmann::json configJson;
|
nlohmann::json configJson = nlohmann::json::object();
|
||||||
configJson["version"] = "v1";
|
|
||||||
auto config = std::make_unique<JsonDataNode>("config", configJson);
|
auto config = std::make_unique<JsonDataNode>("config", configJson);
|
||||||
module->setConfiguration(*config, nullptr, nullptr);
|
module->setConfiguration(*config, nullptr, nullptr);
|
||||||
moduleSystem->registerModule("TestModule", std::move(module));
|
moduleSystem->registerModule("TestModule", std::move(module));
|
||||||
|
|||||||
@ -54,9 +54,9 @@ public:
|
|||||||
// Clone configuration for storage
|
// Clone configuration for storage
|
||||||
config = std::make_unique<JsonDataNode>("config", nlohmann::json::object());
|
config = std::make_unique<JsonDataNode>("config", nlohmann::json::object());
|
||||||
|
|
||||||
// Extract version if available (use current moduleVersion as default)
|
// Note: moduleVersion is a global compiled into the .so file
|
||||||
moduleVersion = configNode.getString("version", moduleVersion);
|
// We DO NOT overwrite it from config to preserve hot-reload version changes
|
||||||
std::cout << "[TestModule] Version set to: " << moduleVersion << std::endl;
|
std::cout << "[TestModule] Compiled version: " << moduleVersion << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
const IDataNode& getConfiguration() override {
|
const IDataNode& getConfiguration() override {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user