test(ha-commit-durability): end-to-end durable-majority commit + liveness integration tests (task 5.1)
This commit is contained in:
parent
e9e2a6d703
commit
e14bd62115
4 changed files with 404 additions and 0 deletions
|
|
@ -205,6 +205,13 @@ struct persist_s {
|
|||
* cannot distinguish fsync'd from cache-only, so a direct sync signal is
|
||||
* required. Compiled out of production. */
|
||||
atomic_uint test_replicated_fdatasync_count;
|
||||
/* Liveness observability (ha-commit-durability task 5.1, Req 1.6):
|
||||
* the thread id of the last flusher fdatasync that advanced durable_lsn.
|
||||
* A test reads this to prove fdatasync runs on the dedicated flusher
|
||||
* thread, NOT on the caller/iomgr/heartbeat thread. Compiled out of
|
||||
* production. */
|
||||
pthread_t test_last_fdatasync_thread;
|
||||
atomic_int test_last_fdatasync_thread_set;
|
||||
#endif
|
||||
pthread_t fsync_thread;
|
||||
pthread_mutex_t fsync_mutex; /* guards the fsync timer wait */
|
||||
|
|
@ -450,6 +457,15 @@ unsigned persist_test_replicated_fdatasync_count(persist_t* p);
|
|||
* standing up the replication wire. Compiled out of production. */
|
||||
void persist_test_sync_append_legacy_commit_store(persist_t* p,
|
||||
uint64_t written_lsn);
|
||||
|
||||
/* Return the thread id of the last flusher fdatasync that advanced
|
||||
* durable_lsn (task 5.1 / Req 1.6 liveness). A test asserts this is NOT the
|
||||
* caller/iomgr thread — proving durability (fdatasync) work runs on the
|
||||
* dedicated flusher thread and never stalls heartbeat/election handling.
|
||||
* Returns pthread_self() if no flusher sync has advanced durable_lsn yet
|
||||
* (so an unprimed read can never falsely look "off-thread"). Compiled out of
|
||||
* production. */
|
||||
pthread_t persist_test_last_fdatasync_thread(persist_t* p);
|
||||
#endif /* XCE_TESTING */
|
||||
|
||||
/* Checkpoint */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue