From 8707261415774ea1606ed5103ec16a7ae41de5e9 Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Sat, 3 Oct 2026 00:14:42 -0500 Subject: [PATCH 1/5] Use Elasticsearch 9.5.4 for Aspire development --- README.md | 1 + .../Extensions/ElasticsearchExtensions.cs | 4 ++-- src/Exceptionless.AppHost/Program.cs | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 46dd2eedd8..b6cfb016d1 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ Notes: 1. Running `Exceptionless.AppHost` starts the app and required infrastructure together. 2. Backend tests bootstrap required infrastructure automatically. 3. Use Aspire CLI 13.6.0 or newer (`aspire update --self` to update). The AppHost uses the CLI bundle for the dashboard and resource orchestrator; when no CLI is installed, the SDK downloads the matching version through DNX. +4. Aspire runs Elasticsearch and Kibana 9.5.4. Elasticsearch uses a fresh `exceptionless.data.v9` Docker volume; existing 8.x data in `exceptionless.data.v1` is preserved but is not migrated automatically. To migrate existing data, follow [Elastic's upgrade preparation](https://www.elastic.co/docs/deploy-manage/upgrade/prepare-to-upgrade) before attaching it to 9.x. An upgraded data directory cannot be downgraded to 8.x. ## UI Development diff --git a/src/Exceptionless.AppHost/Extensions/ElasticsearchExtensions.cs b/src/Exceptionless.AppHost/Extensions/ElasticsearchExtensions.cs index de5eb373f7..0107183c53 100644 --- a/src/Exceptionless.AppHost/Extensions/ElasticsearchExtensions.cs +++ b/src/Exceptionless.AppHost/Extensions/ElasticsearchExtensions.cs @@ -13,7 +13,7 @@ public static class ElasticsearchBuilderExtensions private const int KibanaPort = 5601; /// - /// Adds a Elasticsearch container to the application model. The default image is "docker.elastic.co/elasticsearch/elasticsearch". This version the package defaults to the 8.19.22 tag of the Elasticsearch container image + /// Adds an Elasticsearch container using exceptionless/elasticsearch:9.5.4, including the mapper-size plugin. /// /// The . /// The name of the resource. This name will be used as the connection string name when referenced in a dependency. @@ -125,7 +125,7 @@ internal static class ElasticsearchContainerImageTags public const string Image = "exceptionless/elasticsearch"; public const string KibanaRegistry = "docker.elastic.co"; public const string KibanaImage = "kibana/kibana"; - public const string Tag = "8.19.22"; + public const string Tag = "9.5.4"; } internal sealed class ElasticsearchConnectionHealthCheck(Func connectionStringFactory) : IHealthCheck diff --git a/src/Exceptionless.AppHost/Program.cs b/src/Exceptionless.AppHost/Program.cs index 9969a49efc..0ef7078d06 100644 --- a/src/Exceptionless.AppHost/Program.cs +++ b/src/Exceptionless.AppHost/Program.cs @@ -21,7 +21,8 @@ const string SharedEmailConnectionString = "smtp://localhost:1026"; var elastic = builder.AddElasticsearch("Elasticsearch", port: 9200) - .WithDataVolume("exceptionless.data.v1") + // Keep the previous 8.x data volume intact; major upgrades cannot be rolled back in place. + .WithDataVolume("exceptionless.data.v9") .WithEndpointProxySupport(false); // Backend tests use in-memory queues/cache and scoped file storage. Starting the From 307b181fcddda1a4bcf4cd4cfe85983474f69da9 Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Sat, 3 Oct 2026 00:17:43 -0500 Subject: [PATCH 2/5] Clarify Elasticsearch release-date upgrade restriction --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b6cfb016d1..995e0d67bc 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,9 @@ Notes: 1. Running `Exceptionless.AppHost` starts the app and required infrastructure together. 2. Backend tests bootstrap required infrastructure automatically. 3. Use Aspire CLI 13.6.0 or newer (`aspire update --self` to update). The AppHost uses the CLI bundle for the dashboard and resource orchestrator; when no CLI is installed, the SDK downloads the matching version through DNX. -4. Aspire runs Elasticsearch and Kibana 9.5.4. Elasticsearch uses a fresh `exceptionless.data.v9` Docker volume; existing 8.x data in `exceptionless.data.v1` is preserved but is not migrated automatically. To migrate existing data, follow [Elastic's upgrade preparation](https://www.elastic.co/docs/deploy-manage/upgrade/prepare-to-upgrade) before attaching it to 9.x. An upgraded data directory cannot be downgraded to 8.x. +4. Aspire runs Elasticsearch and Kibana 9.5.4. Elasticsearch uses a fresh `exceptionless.data.v9` Docker volume; existing 8.x data in `exceptionless.data.v1` is preserved but is not migrated automatically. + +Before migrating existing Elasticsearch data, follow [Elastic's upgrade preparation](https://www.elastic.co/docs/deploy-manage/upgrade/prepare-to-upgrade) and check [release-date ordering](https://www.elastic.co/docs/deploy-manage/upgrade/deployment-or-cluster#out-of-order-releases). In particular, 8.19.22 was released after 9.5.4 and cannot be upgraded to it. An upgraded data directory cannot be downgraded to 8.x. ## UI Development From bb016d188ff824d7e1d935f5e550ae65bd299d56 Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Sat, 3 Oct 2026 00:51:28 -0500 Subject: [PATCH 3/5] Use the next local data volume version --- README.md | 2 +- src/Exceptionless.AppHost/Program.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 995e0d67bc..28900252b2 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Notes: 1. Running `Exceptionless.AppHost` starts the app and required infrastructure together. 2. Backend tests bootstrap required infrastructure automatically. 3. Use Aspire CLI 13.6.0 or newer (`aspire update --self` to update). The AppHost uses the CLI bundle for the dashboard and resource orchestrator; when no CLI is installed, the SDK downloads the matching version through DNX. -4. Aspire runs Elasticsearch and Kibana 9.5.4. Elasticsearch uses a fresh `exceptionless.data.v9` Docker volume; existing 8.x data in `exceptionless.data.v1` is preserved but is not migrated automatically. +4. Aspire runs Elasticsearch and Kibana 9.5.4. Elasticsearch uses a fresh `exceptionless.data.v2` Docker volume; existing 8.x data in `exceptionless.data.v1` is preserved but is not migrated automatically. The volume version increments for breaking data changes. Before migrating existing Elasticsearch data, follow [Elastic's upgrade preparation](https://www.elastic.co/docs/deploy-manage/upgrade/prepare-to-upgrade) and check [release-date ordering](https://www.elastic.co/docs/deploy-manage/upgrade/deployment-or-cluster#out-of-order-releases). In particular, 8.19.22 was released after 9.5.4 and cannot be upgraded to it. An upgraded data directory cannot be downgraded to 8.x. diff --git a/src/Exceptionless.AppHost/Program.cs b/src/Exceptionless.AppHost/Program.cs index 0ef7078d06..ecbf4c2a16 100644 --- a/src/Exceptionless.AppHost/Program.cs +++ b/src/Exceptionless.AppHost/Program.cs @@ -21,8 +21,8 @@ const string SharedEmailConnectionString = "smtp://localhost:1026"; var elastic = builder.AddElasticsearch("Elasticsearch", port: 9200) - // Keep the previous 8.x data volume intact; major upgrades cannot be rolled back in place. - .WithDataVolume("exceptionless.data.v9") + // Increment the volume version for breaking data changes and preserve the previous volume. + .WithDataVolume("exceptionless.data.v2") .WithEndpointProxySupport(false); // Backend tests use in-memory queues/cache and scoped file storage. Starting the From ff3ba6d094dda2ae990d25af47cfab6e04955de9 Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Sat, 3 Oct 2026 00:56:13 -0500 Subject: [PATCH 4/5] Remove one-time migration notes from README --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 28900252b2..46dd2eedd8 100644 --- a/README.md +++ b/README.md @@ -47,9 +47,6 @@ Notes: 1. Running `Exceptionless.AppHost` starts the app and required infrastructure together. 2. Backend tests bootstrap required infrastructure automatically. 3. Use Aspire CLI 13.6.0 or newer (`aspire update --self` to update). The AppHost uses the CLI bundle for the dashboard and resource orchestrator; when no CLI is installed, the SDK downloads the matching version through DNX. -4. Aspire runs Elasticsearch and Kibana 9.5.4. Elasticsearch uses a fresh `exceptionless.data.v2` Docker volume; existing 8.x data in `exceptionless.data.v1` is preserved but is not migrated automatically. The volume version increments for breaking data changes. - -Before migrating existing Elasticsearch data, follow [Elastic's upgrade preparation](https://www.elastic.co/docs/deploy-manage/upgrade/prepare-to-upgrade) and check [release-date ordering](https://www.elastic.co/docs/deploy-manage/upgrade/deployment-or-cluster#out-of-order-releases). In particular, 8.19.22 was released after 9.5.4 and cannot be upgraded to it. An upgraded data directory cannot be downgraded to 8.x. ## UI Development From b9dc2e956bf396008fbba8e0085d146d6b860c86 Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Sun, 4 Oct 2026 17:29:07 -0500 Subject: [PATCH 5/5] Reset the active Aspire Elasticsearch data volume --- .codex/environments/environment.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codex/environments/environment.toml b/.codex/environments/environment.toml index 2fa6e2ed3c..8b525d054a 100644 --- a/.codex/environments/environment.toml +++ b/.codex/environments/environment.toml @@ -155,6 +155,6 @@ if command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then Exceptionless-Mail \ 2>/dev/null || true - docker volume rm exceptionless.data.v1 2>/dev/null || true + docker volume rm exceptionless.data.v2 2>/dev/null || true fi '''