Generalize external database modules - #175
Merged
Areson merged 2 commits intoAug 7, 2026
Merged
Conversation
Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true
Preserve named and typed containers when Blip expands environment and monitor placeholders in opaque module configuration. This keeps programmatic config loaders consistent with YAML-loaded config. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true
Contributor
|
🤔 Side note: making Blip work for pg crossed my mind at the beginning, but back then the chance of SQ needing it for pg was negligible (even considering AP), so the YAGNI argument won. Funny how things change. |
Collaborator
Author
|
Well...this was pushed a litter sooner than I expected. But yes, I'm working on it. I was torn about extending the "purpose build MySQL" tool to pg, so I'm currently taking the route of trying to generalize bits of the core around auth, etc. (which is pretty engine-agnostic) and allow extending it via external plugins. The end goal being that core |
This was referenced Aug 7, 2026
Areson
marked this pull request as ready for review
August 7, 2026 16:39
Areson
added a commit
that referenced
this pull request
Aug 7, 2026
* Guard PostgreSQL monitor configuration Keep MySQL-only heartbeat and plan defaults off PostgreSQL monitors, reject explicit unsupported settings, and sign IAM tokens with the database-specific default port. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Close PostgreSQL integration gaps Cancel and join plan preparation before closing monitor-owned database resources, and reject the remaining MySQL-only plan configurations for PostgreSQL. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Require PostgreSQL exporter plans Avoid assigning the MySQL default exporter plan to PostgreSQL monitors. Require a named plan whenever exporter mode is enabled for PostgreSQL while preserving the public and MySQL defaulting behavior. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Coordinate monitor subsystem teardown Roll back partial startup failures, bind subsystem stops to their startup generation, and retain exporter engines for cleanup before database providers close. Collector cleanup now also runs when a prepared collector is idle. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Join collectors before provider shutdown Track every engine collector goroutine, cancel active runs during teardown, and wait for foreground or ErrMore background work before invoking cleanup and releasing the database provider. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Generalize external database modules (#175) * Generalize external database modules Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Interpolate typed database config values Preserve named and typed containers when Blip expands environment and monitor placeholders in opaque module configuration. This keeps programmatic config loaders consistent with YAML-loaded config. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true --------- Co-authored-by: Codex <noreply@openai.com> --------- Co-authored-by: Codex <noreply@openai.com>
Areson
added a commit
that referenced
this pull request
Aug 7, 2026
* Configure PostgreSQL database discovery Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true Co-authored-by: Goose <opensource@block.xyz> * Add monitor-owned database providers Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Keep provider constructors internal Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Harden PostgreSQL monitor lifecycle (#174) * Guard PostgreSQL monitor configuration Keep MySQL-only heartbeat and plan defaults off PostgreSQL monitors, reject explicit unsupported settings, and sign IAM tokens with the database-specific default port. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Close PostgreSQL integration gaps Cancel and join plan preparation before closing monitor-owned database resources, and reject the remaining MySQL-only plan configurations for PostgreSQL. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Require PostgreSQL exporter plans Avoid assigning the MySQL default exporter plan to PostgreSQL monitors. Require a named plan whenever exporter mode is enabled for PostgreSQL while preserving the public and MySQL defaulting behavior. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Coordinate monitor subsystem teardown Roll back partial startup failures, bind subsystem stops to their startup generation, and retain exporter engines for cleanup before database providers close. Collector cleanup now also runs when a prepared collector is idle. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Join collectors before provider shutdown Track every engine collector goroutine, cancel active runs during teardown, and wait for foreground or ErrMore background work before invoking cleanup and releasing the database provider. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Generalize external database modules (#175) * Generalize external database modules Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Interpolate typed database config values Preserve named and typed containers when Blip expands environment and monitor placeholders in opaque module configuration. This keeps programmatic config loaders consistent with YAML-loaded config. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true --------- Co-authored-by: Codex <noreply@openai.com> --------- Co-authored-by: Codex <noreply@openai.com> --------- Co-authored-by: Codex <noreply@openai.com> Co-authored-by: Goose <opensource@block.xyz>
Areson
added a commit
that referenced
this pull request
Aug 7, 2026
* Configure PostgreSQL database discovery Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true Co-authored-by: Goose <opensource@block.xyz> * Add monitor-owned database providers Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Keep provider constructors internal Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Harden PostgreSQL monitor lifecycle (#174) * Guard PostgreSQL monitor configuration Keep MySQL-only heartbeat and plan defaults off PostgreSQL monitors, reject explicit unsupported settings, and sign IAM tokens with the database-specific default port. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Close PostgreSQL integration gaps Cancel and join plan preparation before closing monitor-owned database resources, and reject the remaining MySQL-only plan configurations for PostgreSQL. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Require PostgreSQL exporter plans Avoid assigning the MySQL default exporter plan to PostgreSQL monitors. Require a named plan whenever exporter mode is enabled for PostgreSQL while preserving the public and MySQL defaulting behavior. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Coordinate monitor subsystem teardown Roll back partial startup failures, bind subsystem stops to their startup generation, and retain exporter engines for cleanup before database providers close. Collector cleanup now also runs when a prepared collector is idle. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Join collectors before provider shutdown Track every engine collector goroutine, cancel active runs during teardown, and wait for foreground or ErrMore background work before invoking cleanup and releasing the database provider. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Generalize external database modules (#175) * Generalize external database modules Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true * Interpolate typed database config values Preserve named and typed containers when Blip expands environment and monitor placeholders in opaque module configuration. This keeps programmatic config loaders consistent with YAML-loaded config. Co-authored-by: Codex <noreply@openai.com> Ai-assisted: true --------- Co-authored-by: Codex <noreply@openai.com> --------- Co-authored-by: Codex <noreply@openai.com> --------- Co-authored-by: Codex <noreply@openai.com> Co-authored-by: Goose <opensource@block.xyz>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Keep Blip purpose-built for MySQL while allowing pgblip and future database modules to reuse its monitor, plan, transform, and sink runtime without adding engine implementations to core.
What
Risk Assessment
Low — the change targets an unreleased feature stack, leaves omitted database types on historical MySQL behavior, and passed full local unit, race, vet, and build validation.
Stack
ioberst/bgblip-module→mainioberst/multi-database-monitor→ioberst/bgblip-moduleAreson/postgres-config-guards→ioberst/multi-database-monitorAreson/database-module-extensibility→Areson/postgres-config-guardsReview bottom-to-top; merge in reverse order: #175, #174, #177, then #176. Keep the stack in draft until the manual Blippy PostgreSQL staging canary passes.
Generated with Codex