feat(scheduler-core): register picker plugin category + job_elect_fn compat wrapper (task 1.2)

plugin_register() now adapts an old-style job_elect_fn-only plugin to
xce_job_picker_iface_t via legacy_picker_wrapper_iface (next_job()
forwards to job_elect_fn; other hooks are safe no-ops covered elsewhere
in the existing lifecycle), logging a one-time deprecation warning. A
plugin that already sets picker_iface directly skips the wrapper and
the warning. Reuses the existing plugin_register()/key_find() mechanism
-- no parallel registration system.

Requirements: 1.6, 2.5
This commit is contained in:
Rongsong Shen 2026-08-03 05:23:53 +00:00
parent 065025a3a6
commit 4d8d72142e
5 changed files with 409 additions and 2 deletions

View file

@ -8,7 +8,7 @@
- Observable: the header compiles standalone and defines a complete function-pointer struct matching every hook category
- _Requirements: 1.2, 1.5, 2.6_
- [ ] 1.2 Register the picker plugin category and deprecate the old election hook
- [x] 1.2 Register the picker plugin category and deprecate the old election hook
- Add a picker plugin registration category to the plugin registration table, parallel to existing plugin categories
- Add a compatibility wrapper that adapts an old-style `job_elect_fn`-only plugin to the new interface, logging a deprecation warning at registration time
- Observable: registering a plugin that implements only `job_elect_fn` succeeds via the wrapper and logs a deprecation warning; registering one that implements the new interface directly succeeds without a warning