Commit ab0b2ab
committed
fix: synchronize plugin data phase loading
Changed plugin loading logic to ensure all plugins complete their module
phase before any plugin starts the data phase. Previously, when a plugin
reached ModuleEnd status, it would immediately proceed to LoadPluginTask
for data loading. Now, the system waits until all plugins have finished
their module phase (ModuleEnd, ModuleErr, or PluginEnd status) before
starting data loading for any plugin.
Key changes:
1. Added m_modulePhaseFinished flag to track module phase completion
2. Added allModulesFinished() method to check if all plugins have
completed module phase
3. Added loadPluginData() method extracted from original loadPlugin()
logic
4. Added onModulePhaseFinished() slot to handle transition to data phase
5. Modified loadPlugin() to check module phase completion before
proceeding to data loading
6. Connected modulePhaseFinished signal to onModulePhaseFinished slot
This ensures that plugins don't start their data loading (createData())
until all plugins have completed their module initialization, preventing
potential race conditions and ensuring proper synchronization between
plugins.
Log: Fixed plugin loading synchronization issue
Influence:
1. Test plugin loading with multiple plugins to ensure all complete
module phase before data phase starts
2. Verify that plugins with ModuleEnd status wait for others before
proceeding
3. Test edge cases where some plugins may have ModuleErr or PluginEnd
status
4. Verify that the m_modulePhaseFinished flag is properly reset when
needed
5. Test plugin loading performance to ensure no regression
6. Verify that hidden plugins (not visibleToApp) still follow the
synchronization logic
fix: 同步插件数据阶段加载
修改插件加载逻辑,确保所有插件完成模块阶段后再开始数据阶段。之前,当插件
达到 ModuleEnd 状态时,会立即进入 LoadPluginTask 进行数据加载。现在,系
统会等待所有插件完成模块阶段(ModuleEnd、ModuleErr 或 PluginEnd 状态)后
才开始任何插件的数据加载。
主要变更:
1. 添加 m_modulePhaseFinished 标志来跟踪模块阶段完成状态
2. 添加 allModulesFinished() 方法来检查所有插件是否已完成模块阶段
3. 添加 loadPluginData() 方法,从原始 loadPlugin() 逻辑中提取
4. 添加 onModulePhaseFinished() 槽函数来处理向数据阶段的过渡
5. 修改 loadPlugin() 以在进入数据加载前检查模块阶段完成状态
6. 连接 modulePhaseFinished 信号到 onModulePhaseFinished 槽
这确保了插件在所有插件完成模块初始化之前不会开始数据加载
(createData()),防止潜在的竞争条件并确保插件之间的正确同步。
Log: 修复插件加载同步问题
Influence:
1. 测试多插件加载,确保所有插件在数据阶段开始前完成模块阶段
2. 验证具有 ModuleEnd 状态的插件在继续之前会等待其他插件
3. 测试某些插件可能具有 ModuleErr 或 PluginEnd 状态的边缘情况
4. 验证 m_modulePhaseFinished 标志在需要时正确重置
5. 测试插件加载性能,确保没有回归问题
6. 验证隐藏插件(不可见)仍然遵循同步逻辑1 parent 71b4faa commit ab0b2ab
2 files changed
Lines changed: 56 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
| 177 | + | |
177 | 178 | | |
178 | 179 | | |
179 | 180 | | |
180 | 181 | | |
| 182 | + | |
181 | 183 | | |
182 | 184 | | |
183 | 185 | | |
| |||
322 | 324 | | |
323 | 325 | | |
324 | 326 | | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
325 | 339 | | |
326 | 340 | | |
327 | 341 | | |
| |||
346 | 360 | | |
347 | 361 | | |
348 | 362 | | |
349 | | - | |
350 | | - | |
351 | | - | |
352 | | - | |
353 | | - | |
354 | | - | |
355 | | - | |
356 | | - | |
357 | | - | |
358 | | - | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
359 | 369 | | |
360 | 370 | | |
361 | 371 | | |
| |||
448 | 458 | | |
449 | 459 | | |
450 | 460 | | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
451 | 479 | | |
452 | 480 | | |
453 | 481 | | |
| |||
591 | 619 | | |
592 | 620 | | |
593 | 621 | | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
594 | 635 | | |
595 | 636 | | |
596 | 637 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
42 | 43 | | |
43 | 44 | | |
44 | 45 | | |
| 46 | + | |
45 | 47 | | |
46 | 48 | | |
47 | 49 | | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
| 53 | + | |
51 | 54 | | |
52 | 55 | | |
53 | 56 | | |
| |||
56 | 59 | | |
57 | 60 | | |
58 | 61 | | |
| 62 | + | |
59 | 63 | | |
60 | 64 | | |
61 | 65 | | |
| |||
66 | 70 | | |
67 | 71 | | |
68 | 72 | | |
| 73 | + | |
69 | 74 | | |
70 | 75 | | |
71 | 76 | | |
| |||
0 commit comments