forked from lei.chen/myxce
feat: JOB_STAT_TRANSIENT, job_should_retain, worker_should_retain, dead_since (P0-5a, P0-8, P0-13)
Add terminal-state constants and GC retention predicates for the checkpoint xzarray_thaw() GC pass: - types.h: add JOB_STAT_TRANSIENT (0x400), XCE_WORKER_HIDDEN (0x00200000), QUEUE_STAT_HIDDEN (0x0100) - persist.c: implement job_is_terminal(), job_should_retain(), worker_should_retain() — placed here so the unit test binary (which links only persist.c) can access them without RTTI deps - persist.h: declare the three GC predicates; include xce/types.h - worker.c: set dead_since = time(NULL) in mark_worker_unavail() when dead_since is not already set - cluster.c: add TODO P0-8b marker on zarray_del endpoint cleanup - meson.build: register test_gc_retention.c; raise test timeout 60→120s - testsuite/test_gc_retention.c: 19 tests covering job_is_terminal, job_should_retain (TRANSIENT TTL, terminal TTL, non-terminal always retained), and worker_should_retain (HIDDEN/UNAVAIL/healthy/zero dead_since); all pass (63 total, 0 failures)
This commit is contained in:
parent
6f3b98c6b5
commit
3030012f51
9 changed files with 330 additions and 2 deletions
|
|
@ -1,7 +1,10 @@
|
|||
#include <errno.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "cluster.h"
|
||||
#include "persist.h"
|
||||
#include "wobj.h"
|
||||
#include "worker.h"
|
||||
#include "xce/cluster_def.h"
|
||||
|
|
@ -519,6 +522,8 @@ int mark_worker_unavail(cluster_t* c, worker_t* w)
|
|||
HOOK_DETAIL_WORKER_DEAD, c, w);
|
||||
|
||||
w->host.status |= XCE_WORKER_UNAVAIL;
|
||||
if (w->host.dead_since == 0)
|
||||
w->host.dead_since = time(NULL);
|
||||
|
||||
xce_run_hooks(&(c->hooksys), XCE_CONTROLLER_HOOK_WORKER, HOOK_AFTER_EVENT,
|
||||
HOOK_DETAIL_WORKER_DEAD, c, w);
|
||||
|
|
@ -658,3 +663,7 @@ int worker_from_capnp(cluster_t* c, const void* capnp_payload, size_t len)
|
|||
(void)len;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* worker_should_retain lives in persist.c —
|
||||
* it only depends on xce_worker_t fields and persist_config_t,
|
||||
* and must be accessible from the unit test binary which links persist.c. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue