Hi All,
The email below provides a summary of the changes implemented since the previous
update on December 18th.
1. I tested and verified that when ProcessGetMemoryContextInterrupt() returns with error
from processes that don't start a transaction, it doesn't affect system integrity.
In auxiliary processes like ioworker, archiver, and wal_receiver, the ERROR causes
the process to exit, which ensures proper resource and lock release. In other cases,
cleanup and release are managed by error recovery logic, allowing processes to continue
running smoothly.
2. I verified that the only resources acquired in ProcessGetMemoryContextInterrupt
are DSMs, which remain attached until the process exits.
During proc_exit, the release/detach of DSM runs via dsm_backend_shutdown().
3.The error reporting level in the interrupt handler has been adjusted from ERROR
to NOTICE to prevent unnecessary errors from being raised in interrupted transactions
due to minor issues.
4. Aborted transaction check has been added to allow returning without processing
the interrupt if it is called from an aborted transaction.
5. DSHash key type has been changed from string to integer, now using procNumber
directly. This eliminates string formatting overhead.
6. Timeout messaging has been changed from silently returning empty row to issuing
a NOTICE and returning an empty row.
7. Documentation has been to GetNamedDSA() and GetNamedDSHash(), warning that
errors thrown from these functions can propagate to any transaction calling the CFI function
8. Subtracted elapsed time ((MEMORY_STATS_MAX_TIMEOUT * 1000) - elapsed_time) from
timeout passed to ConditionVariableTimedSleep so the total wait doesn't exceed the intended
timeout in case of spurious wakeups.
9. Fixed a race condition bug by ensuring ConditionVariableSignal is called before
dshash_release_lock
Additionally, I included couple of assertions, renamed variables and functions to enhance
clarity and consistency with the existing style, and made improvements to the documentation
and tests.
Please find attached updated and rebased patches.
Thank you,
Rahila Syed