Commit db4f06f
fix(policy): run migrations on db only once for all policy services (#1040)
Closes #742
1. Runs migrations just once and IFF at least one service requires a DB
connection
2. Resolves pass by value error where struct pointer `*db.Client`
outside for loop was not reassigned within `startService` function due
to copy of value. Returns a `*db.Client` instead of resolving with
`**db.Client` parameter for better readability.
Service starting logs after these changes:
```shell
time=2024-06-26T16:54:22.597-07:00 level=INFO msg="starting services"
time=2024-06-26T16:54:22.597-07:00 level=INFO msg="skipping migrations" namespace=wellknown service=wellknownconfiguration.WellKnownService runMigrations=true reason="service does not require a database"
time=2024-06-26T16:54:22.597-07:00 level=INFO msg="started service" namespace=wellknown service=wellknownconfiguration.WellKnownService
time=2024-06-26T16:54:22.597-07:00 level=INFO msg="skipping migrations" namespace=entityresolution service=entityresolution.EntityResolutionService runMigrations=true reason="service does not require a database"
time=2024-06-26T16:54:22.597-07:00 level=INFO msg="started service" namespace=entityresolution service=entityresolution.EntityResolutionService
time=2024-06-26T16:54:22.597-07:00 level=INFO msg="creating database client" namespace=policy
time=2024-06-26T16:54:22.611-07:00 level=INFO msg="running database migrations"
time=2024-06-26T16:54:22.612-07:00 level=INFO msg="running migration up" schema=opentdf_policy database=opentdf
time=2024-06-26T16:54:22.617-07:00 level=INFO msg="migration db info " "current version"=20240618000000
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="migration up complete" "post-op version"=20240618000000
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="database migrations complete" applied=0
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="started service" namespace=policy service=policy.attributes.AttributesService
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="skipping migrations" namespace=policy service=policy.namespaces.NamespaceService runMigrations=true reason="required migrations already ran"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="started service" namespace=policy service=policy.namespaces.NamespaceService
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="skipping migrations" namespace=policy service=policy.resourcemapping.ResourceMappingService runMigrations=true reason="required migrations already ran"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="started service" namespace=policy service=policy.resourcemapping.ResourceMappingService
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="skipping migrations" namespace=policy service=policy.subjectmapping.SubjectMappingService runMigrations=true reason="required migrations already ran"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="started service" namespace=policy service=policy.subjectmapping.SubjectMappingService
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="skipping migrations" namespace=policy service=policy.kasregistry.KeyAccessServerRegistryService runMigrations=true reason="required migrations already ran"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="started service" namespace=policy service=policy.kasregistry.KeyAccessServerRegistryService
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="skipping migrations" namespace=health service=grpc.health.v1.Health runMigrations=true reason="service does not require a database"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="started service" namespace=health service=grpc.health.v1.Health
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="skipping migrations" namespace=authorization service=authorization.AuthorizationService runMigrations=true reason="service does not require a database"
time=2024-06-26T16:54:22.619-07:00 level=DEBUG msg="authorization service client config" config="{ClientID:tdf-authorization-svc ClientSecret:secret TokenURL:http://localhost:8888/auth/realms/opentdf/protocol/openid-connect/token Scopes:[] EndpointParams:map[] AuthStyle:0 authStyleCache:{v:{v:<nil>}}}"
time=2024-06-26T16:54:22.619-07:00 level=DEBUG msg="authorization service token source created" token_source="&{new:0x14000412450 mu:{state:0 sema:0} t:<nil> expiryDelta:100}"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="started service" namespace=authorization service=authorization.AuthorizationService
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="skipping migrations" namespace=kas service=kas.AccessService runMigrations=true reason="service does not require a database"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="started service" namespace=kas service=kas.AccessService
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="starting opentdf"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="services running"
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="service running" namespace=wellknown service=wellknownconfiguration.WellKnownService database=false
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="service running" namespace=entityresolution service=entityresolution.EntityResolutionService database=false
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="service running" namespace=policy service=policy.attributes.AttributesService database=true
time=2024-06-26T16:54:22.619-07:00 level=INFO msg="service running" namespace=policy service=policy.namespaces.NamespaceService database=true
time=2024-06-26T16:54:22.620-07:00 level=INFO msg="service running" namespace=policy service=policy.resourcemapping.ResourceMappingService database=true
time=2024-06-26T16:54:22.620-07:00 level=INFO msg="service running" namespace=policy service=policy.subjectmapping.SubjectMappingService database=true
time=2024-06-26T16:54:22.620-07:00 level=INFO msg="service running" namespace=policy service=policy.kasregistry.KeyAccessServerRegistryService database=true
time=2024-06-26T16:54:22.620-07:00 level=INFO msg="service running" namespace=health service=grpc.health.v1.Health database=false
time=2024-06-26T16:54:22.620-07:00 level=INFO msg="service running" namespace=authorization service=authorization.AuthorizationService database=false
time=2024-06-26T16:54:22.620-07:00 level=INFO msg="service running" namespace=kas service=kas.AccessService database=false
time=2024-06-26T16:54:22.620-07:00 level=INFO msg="starting http server" address=:8080
time=2024-06-26T16:54:22.620-07:00 level=INFO msg="starting in process grpc server"
```
---------
Co-authored-by: Ryan Schumacher <[email protected]>1 parent 93d8f70 commit db4f06f
2 files changed
+47
-23
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
58 | 61 | | |
59 | 62 | | |
60 | 63 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | | - | |
| 70 | + | |
71 | 71 | | |
| 72 | + | |
72 | 73 | | |
73 | 74 | | |
74 | | - | |
| 75 | + | |
75 | 76 | | |
76 | 77 | | |
77 | 78 | | |
| 79 | + | |
78 | 80 | | |
79 | 81 | | |
80 | 82 | | |
81 | 83 | | |
82 | 84 | | |
83 | 85 | | |
84 | 86 | | |
85 | | - | |
86 | | - | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
87 | 99 | | |
88 | 100 | | |
89 | 101 | | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | 102 | | |
96 | | - | |
97 | 103 | | |
98 | 104 | | |
99 | 105 | | |
100 | 106 | | |
101 | 107 | | |
102 | | - | |
| 108 | + | |
103 | 109 | | |
104 | 110 | | |
105 | 111 | | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
112 | 115 | | |
113 | 116 | | |
114 | 117 | | |
115 | | - | |
| 118 | + | |
116 | 119 | | |
117 | 120 | | |
118 | 121 | | |
119 | 122 | | |
120 | | - | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
121 | 141 | | |
122 | 142 | | |
123 | | - | |
124 | | - | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
125 | 146 | | |
126 | 147 | | |
127 | 148 | | |
| |||
146 | 167 | | |
147 | 168 | | |
148 | 169 | | |
149 | | - | |
| 170 | + | |
150 | 171 | | |
151 | 172 | | |
152 | 173 | | |
| |||
158 | 179 | | |
159 | 180 | | |
160 | 181 | | |
161 | | - | |
| 182 | + | |
162 | 183 | | |
0 commit comments