Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/docs/server/meta.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"title": "Server",
"pages": ["introduction", "configuration", "topic-options", "storage-engine", "durability", "networking", "security", "docker", "testing", "linux-tuning", "benchmarking"]
"pages": ["introduction", "upgrading", "configuration", "topic-options", "storage-engine", "durability", "networking", "security", "docker", "testing", "linux-tuning", "benchmarking"]
}
33 changes: 33 additions & 0 deletions content/docs/server/upgrading.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
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 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.
Loading