Changelog
v0.5.1 - 2025-11-24
Added
- Added support for Postgres 16.11, 17.7, and 18.1.
Changed
- Default Postgres version to 18.1.
Removed
- Removed unsupported Postgres 17.5.
Fixed
- Fixed a bug where database instance state would not be properly set to unknown when status updates were missed for two consecutive monitor intervals.
- Fixed a bug where port validation would prevent databases from updating.
v0.5.0 - 2025-11-04
Added
- Added support for Postgres 18.0.
- Added a new "client-only" Etcd mode to enable larger clusters and clusters with an even number of hosts.
- Added access logging.
- Added ability to run the Control Plane on Docker Swarm worker nodes.
Changed
- Moved the cluster ID configuration setting to be an optional parameter on the init-cluster endpoint.
- Changed the default behavior when adding a node. Instead of initializing to an empty state, new nodes will always be populated from an existing node unless the new node has a
restore_config. - Changed the shape of the return type for
list-hosts,restart-instance,stop-instance, andstart-instance. - Renamed Etcd server and client configuration options.
Removed
- Removed cohort ID from host API endpoints.
Fixed
- Fixed unknown host status and missing component status in host API endpoints.
- Fixed a bug that prevented users from using Service Accounts for pgBackRest credentials in GCS.
- Fixed missing replication sets after restoring from backup.
- Fixed incorrect response in
update-databasewhen a non-existent host ID is specified. - Fixed a bug with scheduled instance restarts.
v0.4.0 - 2025-10-06
Added
- Introduced stop-instance and start-instance APIs to allow users to manually trigger a stop/start of a specific Postgres instance.
- Added support for adding new database nodes with zero downtime.
- Added stopped state for instances
- Added switchover support via the control plane API
- Added a "cancel database task" API endpoint
- Added validation to update-database to reject requests that update the database name.
- Added support for mTLS to the Control Plane API via user-managed certificates.
- Implemented the "get host" and "get cluster" endpoints.
- Added Failover support via the control plane API
Changed
- Switched to the new images from github.com/pgEdge/postgres-images.
- Added the postgres minor version to the
postgres_versionfields in the database and host APIs. - Changed the database creation behavior so that the first host in
host_idsgets the primary instance for a node. - Database update process so that nodes are processed one at a time. Within a node, replicas are always updated before the primary.
- Added automated switchovers before and after an instance is restarted as part of an update.
- Added validation to the update database API to reject requests that update the Postgres major version.
- Changed MQTT interface in client library to take an endpoint. This removes the need to generate unique client IDs per server. Callers are responsible for calling
Connect()andDisconnect()on the endpoint. - Enable fast basebackup for new nodes. This noticeably speeds up the creation process for a node with replicas.
- Changed patroni configuration to use pg_rewind for faster recovery after a switchover.
Fixed
- Fixed join cluster timeouts when requests were submitted to a member other than the raft leader.
- Ensure that join and init cluster calls only return once the server is ready to take requests. Any errors during the initialization process will now be returned to callers.
v0.3.0 - 2025-08-19
Added
- Added ability to override 'database modifiable state' check via
forceparameters on several endpoints. - Added a
clientpackage that wraps the generated client code in a friendlier interface.
Changed
- Merged separate Go modules into single top-level
github.com/pgEdge/control-planemodule.
Fixed
- Fixed high CPU usage from Etcd after recovering from some network partition scenarios.
- Fixed error in restore database workflow when the request is submitted to a host that is not running the target instance.
- Fixed client-side validation errors from missing enum values in our generated client code.
- Fixed timing issue where a new database operation could not be started immediately after the task was marked as completed.
- Fixed a bug in the restore database workflow where, sometimes, the restore would start before Postgres had finished shutting down.
v0.2.0 - 2025-07-22
Added
- Tasks and task logs for every database operation.
parent_id,node_name,host_id, andinstance_idfields to task API entities.- Support for performing database backups to a mounted file system using the posix repository type via pgBackRest.
- Enabled volume validation during database creation and update to verify that specified extra_volumes paths exist and are accessible.
- APIError type for simpler, more consistent API errors.
- Summaries and groups to API endpoints in OpenAPI spec.
- Introduced restart-instance API to allow users to manually trigger a restart of a specific Postgres instance.
- Added support for attaching database containers to additional Docker networks to enable routing via Traefik and other custom setups.
- Added ability to apply arbitrary labels to the database service/container.
- Add support to disable direct database port exposure on the host in Swarm deployments.
remove-hostendpoint.- Added scheduling functionality in the Control Plane.
Changed
- Create, update, delete, and restore API responses to include task information.
initiate-database-backupoperation name tobackup-database-node- Task logs entries from log lines to structured log entries.
- Renamed
inspectendpoints toget:get-cluster,get-host,get-database-task. - Introduced restore_options as a structured map, and renamed extra_options to backup_options for consistency.
- Moved existing API endpoints under a
/v1prefix. - Allow human-readable IDs in all user-specified ID fields, including
cluster_id,host_id,database_idand backup repository IDs. - Censor sensitive fields, such as user passwords or cloud credentials, in all API responses. Likewise, these fields can be omitted from update requests if they're not being modified.
- Updated
pgedgeimages to 5.0.0-1 - Moved pgEdge and Control Plane images to ghcr.io
control-planebase image fromscratchtogcr.io/distroless/static-debian12for CA certificates
Removed
- Unused fields from API specification.
Fixed
- Delay when resuming workflows after a restart.
- Database operation errors when instance IPs change after restarting.
- Method to determine default IPv4 address to always return IPv4.
v0.1.0 - 2025-05-28
Added
- Release process to publish Docker images for the Control Plane server.