From 79cc2db72b6648ecff7f5cf1c1ded494ce444a62 Mon Sep 17 00:00:00 2001 From: Justin Mclean Date: Wed, 23 Sep 2026 13:51:57 +1000 Subject: [PATCH 1/3] docs: add upgrade notes for 0.8 to 0.9 Lists what has to change when moving to 0.9.0: a fresh data directory, matching SDKs, configuration moves, and the advertised address rule. --- content/docs/server/meta.json | 2 +- content/docs/server/upgrading.mdx | 38 +++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 content/docs/server/upgrading.mdx diff --git a/content/docs/server/meta.json b/content/docs/server/meta.json index a80c2e9d80..87b3681079 100644 --- a/content/docs/server/meta.json +++ b/content/docs/server/meta.json @@ -1,4 +1,4 @@ { "title": "Server", - "pages": ["introduction", "configuration", "topic-options", "storage-engine", "durability", "networking", "security", "docker", "linux-tuning", "benchmarking"] + "pages": ["introduction", "upgrading", "configuration", "topic-options", "storage-engine", "durability", "networking", "security", "docker", "linux-tuning", "benchmarking"] } diff --git a/content/docs/server/upgrading.mdx b/content/docs/server/upgrading.mdx new file mode 100644 index 0000000000..360fa8dd7a --- /dev/null +++ b/content/docs/server/upgrading.mdx @@ -0,0 +1,38 @@ +--- +title: Upgrading from 0.8 to 0.9 +description: "What you need to change when moving from Apache Iggy 0.8 to 0.9: a fresh data directory, matching SDKs, and config changes." +--- + +0.9.0 is a major upgrade with breaking changes to the data format, the wire protocol and the server configuration. Work through this list before moving an existing deployment. The [0.9.0 release post](/blogs/2026/09/21/release-0.9.0/) has the full list of changes. + +## Start from a fresh data directory + +The on-disk format changed, and 0.9.0 can't read a data directory written by 0.8. There is no migration. Copy out anything you need to keep before switching over, then start 0.9.0 with an empty data directory. + +## Upgrade the server and every SDK together + +0.8 clients can't talk to a 0.9.0 server, and 0.9 clients can't talk to a 0.8 server. There is no fallback between the two protocols, so plan a cutover where the server and all your clients change at the same time, rather than a rolling upgrade. + +Check [Server compatibility](/docs/sdk/introduction#server-compatibility) for the SDK version that goes with the 0.9.0 server in each language. + +## Review your configuration + +Don't carry the old `config.toml` or `IGGY_*` environment variables across unchanged. The server refuses to start if it finds a setting that has moved or been removed. + +- **The `[system]` table is gone.** Its `path` key and the tables under it (`runtime`, `logging`, `encryption`, `partition`, `sharding` and `memory_pool`) move to the top level of the config. Environment variables lose `SYSTEM_`, so `IGGY_SYSTEM_PATH` becomes `IGGY_PATH`. +- **The `[stream]` and `[topic]` tables are gone.** Settings like `segment_size`, `messages_required_to_save` and `size_of_messages_required_to_save` are now set per topic when the topic is created. See [Topic options](/docs/server/topic-options). +- **`enforce_fsync` and `consumer_offset_enforce_fsync` are gone.** Durability is now chosen per topic, with `durability` and `consumer_offset_durability`. See [Durability](/docs/server/durability). +- **The `[cluster]` and sharding sections were reworked.** Compare yours with [Configuration](/docs/server/configuration). + +## Set an advertised address when listening on all interfaces + +If a listener binds to a wildcard address such as `0.0.0.0`, the server now needs an advertised address too, set with `IGGY_NODE_ADVERTISED_ADDRESS` or `node.advertised_address`. 0.8 allowed a wildcard bind without one; 0.9.0 won't start. This affects most Docker deployments. See [Docker & Helm](/docs/server/docker). + +## If you run a cluster + +- Each node's `cluster.nodes[*].ip` must be a literal IP address, not a hostname. +- Clients have to log in before they can read cluster metadata. `PING` is the only command accepted before login. See [Cluster security](/docs/clustering/security). + +## If you build connectors in Rust + +In the connector SDK, `ConnectivityConfig` is replaced by `RetryPolicy`. This only affects Rust code written against the SDK. Connector plugins that are already built are unaffected. From e102dbc12de84eac239370e25ac3d844a75b026a Mon Sep 17 00:00:00 2001 From: Justin Mclean Date: Wed, 23 Sep 2026 13:54:53 +1000 Subject: [PATCH 2/3] docs: drop the cluster section from the upgrade notes 0.8 had no production clustering to upgrade from, so these points belong on the clustering pages, which already cover them. --- content/docs/server/upgrading.mdx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/content/docs/server/upgrading.mdx b/content/docs/server/upgrading.mdx index 360fa8dd7a..3d838e9433 100644 --- a/content/docs/server/upgrading.mdx +++ b/content/docs/server/upgrading.mdx @@ -28,11 +28,6 @@ Don't carry the old `config.toml` or `IGGY_*` environment variables across uncha If a listener binds to a wildcard address such as `0.0.0.0`, the server now needs an advertised address too, set with `IGGY_NODE_ADVERTISED_ADDRESS` or `node.advertised_address`. 0.8 allowed a wildcard bind without one; 0.9.0 won't start. This affects most Docker deployments. See [Docker & Helm](/docs/server/docker). -## If you run a cluster - -- Each node's `cluster.nodes[*].ip` must be a literal IP address, not a hostname. -- Clients have to log in before they can read cluster metadata. `PING` is the only command accepted before login. See [Cluster security](/docs/clustering/security). - ## If you build connectors in Rust In the connector SDK, `ConnectivityConfig` is replaced by `RetryPolicy`. This only affects Rust code written against the SDK. Connector plugins that are already built are unaffected. From 60d21d457cd7fc5001d4cd5bf87fbbc7fdd028a6 Mon Sep 17 00:00:00 2001 From: Justin Mclean Date: Tue, 6 Oct 2026 21:13:30 +1100 Subject: [PATCH 3/3] docs: list the testing page in the server sidebar --- content/docs/server/meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/server/meta.json b/content/docs/server/meta.json index 87b3681079..805c73cf00 100644 --- a/content/docs/server/meta.json +++ b/content/docs/server/meta.json @@ -1,4 +1,4 @@ { "title": "Server", - "pages": ["introduction", "upgrading", "configuration", "topic-options", "storage-engine", "durability", "networking", "security", "docker", "linux-tuning", "benchmarking"] + "pages": ["introduction", "upgrading", "configuration", "topic-options", "storage-engine", "durability", "networking", "security", "docker", "testing", "linux-tuning", "benchmarking"] }