opentdf / platform

OpenTDF Platform monorepo enabling the development and integration of _forever control_ of data into new and existing applications. The concept of forever control stems from an increasingly common concept known as zero trust.
BSD 3-Clause Clear License
15 stars 4 forks source link

fix(core): database clients pooling improvements #1047

Closed jakedoublev closed 4 days ago

jakedoublev commented 4 days ago

Closes #681

Per service with db connection:

Not supported (and documented in db package)

jakedoublev commented 4 days ago

Example downstream logs when a PEPA service does not require a db connection and a PEPB does with its own migrations:


time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=health service=grpc.health.v1.Health
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=authorization service=authorization.AuthorizationService
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=kas service=kas.AccessService
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=wellknown service=wellknownconfiguration.WellKnownService
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=entityresolution service=entityresolution.EntityResolutionService
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=policy service=policy.attributes.AttributesService
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=policy service=policy.namespaces.NamespaceService
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=policy service=policy.resourcemapping.ResourceMappingService
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=policy service=policy.subjectmapping.SubjectMappingService
time=2024-06-28T07:40:37.691-07:00 level=INFO msg="registered service" namespace=policy service=policy.kasregistry.KeyAccessServerRegistryService
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="no client credentials provided. GRPC requests to KAS and services will not be authenticated."
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="starting services"
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="skipping migrations" namespace=PEPA service=PEPA "configured runMigrations"=true reason="service does not require a database"
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="Creating PEPA service."
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="started service" namespace=PEPA service=PEPAService
time=2024-06-28T07:40:37.747-07:00 level=DEBUG msg="start service skipped" namespace=tdfviewer
time=2024-06-28T07:40:37.747-07:00 level=DEBUG msg="start service skipped" namespace=policyimportexport
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="skipping migrations" namespace=health service=grpc.health.v1.Health "configured runMigrations"=true reason="service does not require a database"
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="started service" namespace=health service=grpc.health.v1.Health
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="skipping migrations" namespace=wellknown service=wellknownconfiguration.WellKnownService "configured runMigrations"=true reason="service does not require a database"
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="started service" namespace=wellknown service=wellknownconfiguration.WellKnownService
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="skipping migrations" namespace=entityresolution service=entityresolution.EntityResolutionService "configured runMigrations"=true reason="service does not require a database"
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="started service" namespace=entityresolution service=entityresolution.EntityResolutionService
time=2024-06-28T07:40:37.747-07:00 level=DEBUG msg="start service skipped" namespace=helloworld
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="skipping migrations" namespace=authorization service=authorization.AuthorizationService "configured runMigrations"=true reason="service does not require a database"
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="started service" namespace=authorization service=authorization.AuthorizationService
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="skipping migrations" namespace=kas service=kas.AccessService "configured runMigrations"=true reason="service does not require a database"
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="started service" namespace=kas service=kas.AccessService
time=2024-06-28T07:40:37.747-07:00 level=INFO msg="creating database client" namespace=policy
time=2024-06-28T07:40:37.748-07:00 level=INFO msg="opening new database pool" schema=platform_policy
time=2024-06-28T07:40:37.748-07:00 level=INFO msg="successfully set database client search_path" schema=platform_policy
time=2024-06-28T07:40:37.764-07:00 level=INFO msg="running database migrations"
time=2024-06-28T07:40:37.764-07:00 level=INFO msg="running migration up" schema=platform_policy database=opentdf
time=2024-06-28T07:40:37.780-07:00 level=INFO msg="migration db info" "current version"=0
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="migration up complete" "post-op version"=20240618000000
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="database migrations complete" applied=11
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="started service" namespace=policy service=policy.resourcemapping.ResourceMappingService
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="skipping migrations" namespace=policy service=policy.subjectmapping.SubjectMappingService "configured runMigrations"=true reason="required migrations already ran"
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="started service" namespace=policy service=policy.subjectmapping.SubjectMappingService
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="skipping migrations" namespace=policy service=policy.kasregistry.KeyAccessServerRegistryService "configured runMigrations"=true reason="required migrations already ran"
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="started service" namespace=policy service=policy.kasregistry.KeyAccessServerRegistryService
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="skipping migrations" namespace=policy service=policy.attributes.AttributesService "configured runMigrations"=true reason="required migrations already ran"
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="started service" namespace=policy service=policy.attributes.AttributesService
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="skipping migrations" namespace=policy service=policy.namespaces.NamespaceService "configured runMigrations"=true reason="required migrations already ran"
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="started service" namespace=policy service=policy.namespaces.NamespaceService
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="creating database client" namespace=PEPB
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="opening new database pool" schema=platform_PEPB
time=2024-06-28T07:40:37.933-07:00 level=INFO msg="successfully set database client search_path" schema=platform_PEPB
time=2024-06-28T07:40:37.941-07:00 level=INFO msg="running database migrations"
time=2024-06-28T07:40:37.941-07:00 level=INFO msg="running migration up" schema=platform_PEPB database=opentdf
time=2024-06-28T07:40:37.953-07:00 level=INFO msg="migration db info" "current version"=0
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="migration up complete" "post-op version"=5
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="database migrations complete" applied=5
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="Creating PEPB service."
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="started service" namespace=PEPB service=PEPBService
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="starting opentdf"
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="services running"
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=PEPA service=PEPAService database=false
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=health service=grpc.health.v1.Health database=false
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=wellknown service=wellknownconfiguration.WellKnownService database=false
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=entityresolution service=entityresolution.EntityResolutionService database=false
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=authorization service=authorization.AuthorizationService database=false
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="starting in process grpc server"
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="starting https server" address=:8080
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=kas service=kas.AccessService database=false
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=policy service=policy.resourcemapping.ResourceMappingService database=true
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=policy service=policy.subjectmapping.SubjectMappingService database=true
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=policy service=policy.kasregistry.KeyAccessServerRegistryService database=true
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=policy service=policy.attributes.AttributesService database=true
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=policy service=policy.namespaces.NamespaceService database=true
time=2024-06-28T07:40:37.974-07:00 level=INFO msg="service running" namespace=PEPB service=PEPBService database=true