feat(component-failover-adoption): validate worker thread isolation, fix rejoin bugs found by E2E
Confirm connector thread is isolated from worker_process_update() (main thread) and resource_sync_thread() (own thread) via code read plus a real pthread concurrency test. Add unit and live 3-node E2E coverage for candidate/reconnect behavior, all-candidates-unreachable diagnostics, and liveness cadence under concurrent reconnect. The E2E run surfaced two production bugs the 2.1/2.2 unit tests missed: xcecli_start() resets the reconnect callback to NULL after it runs, so registering it before xcecli_start() silently no-ops the whole rejoin mechanism; and a successful worker join returns its assigned slot index as reply.status (any rc >= 0), not always exactly 0, so checking_connection()'s rc == 0 success check never fired on a real non-zero-slot join. Both fixed, plus per-candidate names added to the all-unreachable failure log. Root-check bypass needed for the E2E run is gated at compile time via the existing VIRTUAL_CLUSTER flag, not a runtime env var, so the real xcecd binary's root requirement has zero bypass surface.
This commit is contained in:
parent
331fa02423
commit
619b119ef5
5 changed files with 455 additions and 8 deletions
|
|
@ -13,7 +13,10 @@ worker_test_deps = [xcecd_worker_deps, unity_dep]
|
|||
|
||||
controller_connector_test = executable('controller_connector_test',
|
||||
'test_controller_connector.c',
|
||||
c_args: ['-DDBUS_MANAGER'],
|
||||
c_args: ['-DDBUS_MANAGER',
|
||||
'-DXCE_CONTROLLER_CONNECTOR_C_PATH="'
|
||||
+ (meson.current_source_dir() / '..' / 'src' / 'controller_connector.c')
|
||||
+ '"'],
|
||||
include_directories: [worker_test_incdir],
|
||||
dependencies: worker_test_deps,
|
||||
install: false)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue