Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Invisible history records #3398

Merged
merged 8 commits into from
Jul 14, 2023
Merged

Invisible history records #3398

merged 8 commits into from
Jul 14, 2023

Conversation

SergeyGaluzo
Copy link
Contributor

@SergeyGaluzo SergeyGaluzo commented Jul 11, 2023

This PR provides ability to replace current events change capturing system, currently based on writing resource keys for changed resources to user tables, by querying Resource table based on processed transactions (old events system is still not removed and works AS-IS).

To enable above we need to hold resource versions for the event retention period, so events system can query Resource table and data is not missed. This works out of the box with versioned data policy and absence of hard deletes.

To cover no-version policy and hard deletes PR code delays physical deletes. It marks historical resource version as "invisible", i.e. sets raw resource to 0xF. As far as data size, setting raw resource to single byte is equivalent to retaining only resource keys in the old events tables, but without actual writes (other name of this feature is "events with no writes"). Note that these updates are scoped only to no-version & events enabled case. This magic 0xF value allows to filter out these resources from search (hence "invisible" name).

To finally remove these invisible historical resource keys, a new watchdog "InvisibleHistoryCleanupWatchdog" was added.

Main logic to set raw resource to 0xF is in the couple of lines added to MergeResources and HardDeleteResource stored procedures.

@SergeyGaluzo SergeyGaluzo added Enhancement Enhancement on existing functionality. Azure Healthcare APIs Label denotes that the issue or PR is relevant to the FHIR service in the Azure Healthcare APIs labels Jul 11, 2023
@SergeyGaluzo SergeyGaluzo added this to the S117 milestone Jul 11, 2023
@SergeyGaluzo SergeyGaluzo requested a review from a team as a code owner July 11, 2023 03:17
@microsoft microsoft deleted a comment from azure-pipelines bot Jul 13, 2023
@microsoft microsoft deleted a comment from azure-pipelines bot Jul 13, 2023
@microsoft microsoft deleted a comment from azure-pipelines bot Jul 13, 2023
@feordin
Copy link
Contributor

feordin commented Jul 13, 2023

@SergeyGaluzo Just a general question Sergey, is there any problem with this change and the constraint we have on the Resource table to detect empty resources?

@SergeyGaluzo
Copy link
Contributor Author

No. Resource is technically not empty (one byte 0xF), and it passes constraint check.


In reply to: 1634916506

@microsoft microsoft deleted a comment from azure-pipelines bot Jul 13, 2023
@SergeyGaluzo SergeyGaluzo merged commit b63ece6 into main Jul 14, 2023
@SergeyGaluzo SergeyGaluzo deleted the users/sergal/events branch July 14, 2023 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Azure Healthcare APIs Label denotes that the issue or PR is relevant to the FHIR service in the Azure Healthcare APIs Enhancement Enhancement on existing functionality.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants