Commit af3fa83
authored
feat: PostgreSQL support for DomainAudit (#7665)
<!-- 1-2 line summary of WHAT changed technically:
- Always link the relevant projects GitHub issue, unless it is a minor
bugfix
- Good: "Modified FailoverDomain mapper to allow null ActiveClusterName
#320"
- Bad: "added nil check" -->
**What changed?**
Implement SQL plugin interface and add PostgreSQL support for
DomainAudit.
- Created `domain_audit_log` table in Postgresql schema
- Created data structures for `DomainAuditLogRow` and
`DomainAuditLogFilter` in sqlplugin
- Implemented sqlplugin interfaces for `InsertIntoDomainAuditLog` and
`SelectFromDomainAuditLogs` functions
- Implemented `InsertIntoDomainAuditLog` and `SelectFromDomainAuditLogs`
functions in Postgresql
- Updated SQL factory to create `newSQLDomainAuditStore`
Fixes: #7602
<!-- Your goal is to provide all the required context for a future
maintainer
to understand the reasons for making this change (see
https://cbea.ms/git-commit/#why-not-how).
How did this work previously (and what was wrong with it)? What has
changed, and why did you solve it
this way?
- Good: "Active-active domains have independent cluster attributes per
region. Previously,
modifying cluster attributes required spedifying the default
ActiveClusterName which
updates the global domain default. This prevents operators from updating
regional
configurations without affecting the primary cluster designation. This
change allows
attribute updates to be independent of active cluster selection."
- Bad: "Improves domain handling" -->
**Why?**
DomainAudit allows all modifications made to a domain (e.g failovers) to
be stored and retrieved. This has previously only been supported by
NoSQL databases (Cassandra, MongoDB, DynamoDB). The SQL plugin is now
configured to handle DomainAudit requests, so other SQL databases can
also be easily configured to support DomainAudit. PostgreSQL support for
DomainAudit is now added.
<!-- Include specific test commands and setup. Please include the exact
commands such that
another maintainer or contributor can reproduce the test steps taken.
- e.g Unit test commands with exact invocation
`go test -v ./common/types/mapper/proto -run TestFailoverDomainRequest`
- For integration tests include setup steps and test commands
Example: "Started local server with `./cadence start`, then ran `make
test_e2e`"
- For local simulation testing include setup steps for the server and
how you ran the tests
- Good: Full commands that reviewers can copy-paste to verify
- Bad: "Tested locally" or "Added tests" -->
**How did you test it?**
- Unit tests: `go test -v ./common/persistence/sql -run
TestCreateDomainAuditLog TestGetDomainAuditLogs
TestFactoryNewDomainAuditStore TestInsertIntoDomainAuditLog
TestSelectFromDomainAuditLogs TestGetDataBlobEncoding
TestGetDataBlobBytes`
- Integration tests: Ran `TestPostgresSQLDomainAuditPersistence` on
github actions
<!-- If there are risks that the release engineer should know about
document them here.
For example:
- Has an API/IDL been modified? Is it backwards/forwards compatible? If
not, what are the repecussions?
- Has a schema change been introduced? Is it possible to roll back?
- Has a feature flag been re-used for a new purpose?
- Is there a potential performance concern? Is the change modifying core
task processing logic?
- If truly N/A, you can mark it as such -->
**Potential risks**
- Postgresql schema is updated with a new table; it can be rolled back
with Postgres database release version
<!-- If this PR completes a user facing feature or changes functionality
add release notes here.
Your release notes should allow a user and the release engineer to
understand the changes with little context.
Always ensure that the description contains a link to the relevant
GitHub issue. -->
**Release notes**
Added PostgreSQL support for DomainAudit
<!-- Consider whether this change requires documentation updates in the
Cadence-Docs repo
- If yes: mention what needs updating (or link to docs PR in
cadence-docs repo)
- If in doubt, add a note about potential doc needs
- Only mark N/A if you're certain no docs are affected -->
**Documentation Changes**
N/A
---
## Potential Breaking change
**Detailed Description**
[In-depth description of the changes made to the schema or interfaces,
specifying new fields, removed fields, or modified data structures]
- Created `domain_audit_log` table in Postgresql schema
- Created data structures for `DomainAuditLogRow` and
`DomainAuditLogFilter` in sqlplugin
- Implemented sqlplugin interfaces for `InsertIntoDomainAuditLog` and
`SelectFromDomainAuditLogs` functions
- Implemented `InsertIntoDomainAuditLog` and `SelectFromDomainAuditLogs`
functions in Postgresql
- Updated SQL factory to create `newSQLDomainAuditStore`
**Impact Analysis**
- **Backward Compatibility**: Schema changes can be rolled back with
Postgres database release version
- **Forward Compatibility**: Doesn't affect existing schema
**Testing Plan**
- **Unit Tests**: `go test -v ./common/persistence/sql -run
TestCreateDomainAuditLog TestGetDomainAuditLogs
TestFactoryNewDomainAuditStore TestInsertIntoDomainAuditLog
TestSelectFromDomainAuditLogs TestGetDataBlobEncoding
TestGetDataBlobBytes`
- **Persistence Tests**: Ran `TestPostgresSQLDomainAuditPersistence` on
github actions
- **Integration Tests**: [Do we have integration test covering the
change?]
- **Compatibility Tests**: [Have we done tests to test the backward and
forward compatibility?]
**Rollout Plan**
- What is the rollout plan?
- Does the order of deployment matter?
- Is it safe to rollback? Does the order of rollback matter? Schema
changes can be rolled back with Postgres database release version
- Is there a kill switch to mitigate the impact immediately? Changing
[NewDomainAuditStore()](https://github.com/cadence-workflow/cadence/blob/57b7157840e96ab7746fece26c8da291a582bf7b/common/persistence/sql/factory.go#L114)
to return `nil, nil` should revert effects of all changes
---
## Reviewer Validation
**PR Description Quality** (check these before reviewing code):
- [ ] **"What changed"** provides a clear 1-2 line summary
- [ ] Project Issue is linked
- [ ] **"Why"** explains the full motivation with sufficient context
- [ ] **Testing is documented:**
- [ ] Unit test commands are included (with exact `go test` invocation)
- [ ] Integration test setup/commands included (if integration tests
were run)
- [ ] Canary testing details included (if canary was mentioned)
- [ ] **Potential risks** section is thoughtfully filled out (or
legitimately N/A)
- [ ] **Release notes** included if this completes a user-facing feature
- [ ] **Documentation** needs are addressed (or noted if uncertain)
---------
Signed-off-by: Joanna Lau <118241363+joannalauu@users.noreply.github.com>1 parent f551af0 commit af3fa83
File tree
15 files changed
+1409
-3
lines changed- common/persistence/sql
- sqlplugin
- mysql
- postgres
- host/persistence/postgres
- schema/postgres
- cadence
- versioned/v0.7
- tools/common/schema
15 files changed
+1409
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
116 | 120 | | |
117 | 121 | | |
118 | 122 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
221 | 221 | | |
222 | 222 | | |
223 | 223 | | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
0 commit comments