From e5c6d1b015aa4ab8525d64f1c1c758eb4c7db776 Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Wed, 27 Aug 2025 11:42:41 -0600 Subject: [PATCH] InfluxDB Core and Enterprise 3.4 (#6344) * update: add 3.4 notes * update: 3.4 notes * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * Update content/shared/v3-core-enterprise-release-notes/_index.md Co-authored-by: Scott Anderson * feat(influxdb-3.4): added cli updates for influxdb 3.4 * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: add whitespace to influxdb3 write doc * fix(data): update patch versions for core and enterprise * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Peter Barnett Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../shared/influxdb3-cli/config-options.md | 143 ++++++++++++++---- content/shared/influxdb3-cli/write.md | 48 ++++-- .../_index.md | 46 ++++++ data/products.yml | 4 +- 4 files changed, 196 insertions(+), 45 deletions(-) diff --git a/content/shared/influxdb3-cli/config-options.md b/content/shared/influxdb3-cli/config-options.md index 863538a2e..522bc7b5d 100644 --- a/content/shared/influxdb3-cli/config-options.md +++ b/content/shared/influxdb3-cli/config-options.md @@ -42,9 +42,7 @@ influxdb3 serve - [General](#general) {{% show-in "enterprise" %}} - [cluster-id](#cluster-id){{% /show-in %}} - [data-dir](#data-dir) -{{% show-in "enterprise" %}} - [license-email](#license-email) - - [license-file](#license-file) - - [mode](#mode){{% /show-in %}} +{{% show-in "enterprise" %}} - [mode](#mode){{% /show-in %}} - [node-id](#node-id) {{% show-in "enterprise" %}} - [node-id-from-env](#node-id-from-env){{% /show-in %}} - [object-store](#object-store) @@ -56,7 +54,11 @@ influxdb3 serve {{% show-in "enterprise" %}} - [num-database-limit](#num-database-limit) - [num-table-limit](#num-table-limit) - - [num-total-columns-per-table-limit](#num-total-columns-per-table-limit){{% /show-in %}} + - [num-total-columns-per-table-limit](#num-total-columns-per-table-limit) +- [Licensing](#licensing) + - [license-email](#license-email) + - [license-file](#license-file) + - [license-type](#license-type){{% /show-in %}} - [AWS](#aws) - [aws-access-key-id](#aws-access-key-id) - [aws-secret-access-key](#aws-secret-access-key) @@ -65,11 +67,14 @@ influxdb3 serve - [aws-session-token](#aws-session-token) - [aws-allow-http](#aws-allow-http) - [aws-skip-signature](#aws-skip-signature) + - [aws-credentials-file](#aws-credentials-file) - [Google Cloud Service](#google-cloud-service) - [google-service-account](#google-service-account) - [Microsoft Azure](#microsoft-azure) - [azure-storage-account](#azure-storage-account) - [azure-storage-access-key](#azure-storage-access-key) + - [azure-endpoint](#azure-endpoint) + - [azure-allow-http](#azure-allow-http) - [Object Storage](#object-storage) - [bucket](#bucket) - [object-store-connection-limit](#object-store-connection-limit) @@ -181,8 +186,6 @@ influxdb3 serve {{% /show-in %}} - [data-dir](#data-dir) {{% show-in "enterprise" %}} -- [license-email](#license-email) -- [license-file](#license-file) - [mode](#mode) {{% /show-in %}} - [node-id](#node-id) @@ -217,30 +220,6 @@ Required when using the `file` [object store](#object-store). --- {{% show-in "enterprise" %}} -#### license-email - -Specifies the email address to associate with your {{< product-name >}} license -and automatically responds to the interactive email prompt when the server starts. -This option is mutually exclusive with [license-file](#license-file). - -| influxdb3 serve option | Environment variable | -| :--------------------- | :----------------------------------- | -| `--license-email` | `INFLUXDB3_ENTERPRISE_LICENSE_EMAIL` | - ---- - -#### license-file - -Specifies the path to a license file for {{< product-name >}}. When provided, the license -file's contents are used instead of requesting a new license. -This option is mutually exclusive with [license-email](#license-email). - -| influxdb3 serve option | Environment variable | -| :--------------------- | :----------------------------------- | -| `--license-file` | `INFLUXDB3_ENTERPRISE_LICENSE_FILE` | - ---- - #### mode Sets the mode to start the server in. @@ -274,6 +253,8 @@ configuration--for example, the same bucket. | :--------------------- | :--------------------------------- | | `--node-id` | `INFLUXDB3_NODE_IDENTIFIER_PREFIX` | +--- + {{% show-in "enterprise" %}} #### node-id-from-env @@ -402,8 +383,52 @@ Default is {{% influxdb3/limit "column" %}}. | :------------------------------------ | :------------------------------------------------------- | | `--num-total-columns-per-table-limit` | `INFLUXDB3_ENTERPRISE_NUM_TOTAL_COLUMNS_PER_TABLE_LIMIT` | {{% /show-in %}} + --- +{{% show-in "enterprise" %}} +### Licensing + +#### license-email + +Specifies the email address to associate with your {{< product-name >}} license +and automatically responds to the interactive email prompt when the server starts. +This option is mutually exclusive with [license-file](#license-file). + +| influxdb3 serve option | Environment variable | +| :--------------------- | :----------------------------------- | +| `--license-email` | `INFLUXDB3_ENTERPRISE_LICENSE_EMAIL` | + +--- + +#### license-file + +Specifies the path to a license file for {{< product-name >}}. When provided, the license +file's contents are used instead of requesting a new license. +This option is mutually exclusive with [license-email](#license-email). + +| influxdb3 serve option | Environment variable | +| :--------------------- | :----------------------------------- | +| `--license-file` | `INFLUXDB3_ENTERPRISE_LICENSE_FILE` | + +--- + +#### license-type + +Specifies the type of {{% product-name %}} license to use and bypasses the +interactive license prompt. Provide one of the following license types: + +- `home` +- `trial` +- `commercial` + +| influxdb3 serve option | Environment variable | +| :--------------------- | :----------------------------------- | +| `--license-type` | `INFLUXDB3_ENTERPRISE_LICENSE_TYPE` | + +--- +{{% /show-in %}} + ### AWS - [aws-access-key-id](#aws-access-key-id) @@ -413,6 +438,7 @@ Default is {{% influxdb3/limit "column" %}}. - [aws-session-token](#aws-session-token) - [aws-allow-http](#aws-allow-http) - [aws-skip-signature](#aws-skip-signature) +- [aws-credentials-file](#aws-credentials-file) #### aws-access-key-id @@ -490,6 +516,37 @@ If enabled, S3 object stores do not fetch credentials and do not sign requests. --- +#### aws-credentials-file + +Specifies the path to your S3 credentials file. +When using a credentials file, settings in the file override the corresponding +CLI flags. + +S3 credential files are JSON-formatted and should contain the following: + +```json { placeholders="AWS_(ACCESS_KEY_ID|SECRET_ACCESS_KEY|SESSION_TOKEN)|UNIX_SECONDS_TIMESTAMP" } +{ + "aws_access_key_id": "AWS_ACCESS_KEY_ID", + "aws_secret_access_key": "AWS_SECRET_ACCESS_KEY", + "aws_session_token": "AWS_SESSION_TOKEN", + "expiry": "UNIX_SECONDS_TIMESTAMP" +} +``` + +The `aws_session_token` and `expiry` fields are optional. +The file is automatically checked for updates at the expiry time or at 1-hour +intervals. + +If the object store returns an "Unauthenticated" error, InfluxDB will attempt to +update its in-memory credentials from this file and then retry the object store +request. + +| influxdb3 serve option | Environment variable | +| :----------------------- | :--------------------- | +| `--aws-credentials-file` | `AWS_CREDENTIALS_FILE` | + +--- + ### Google Cloud Service - [google-service-account](#google-service-account) @@ -509,6 +566,8 @@ JSON file that contains the Google credentials. - [azure-storage-account](#azure-storage-account) - [azure-storage-access-key](#azure-storage-access-key) +- [azure-endpoint](#azure-endpoint) +- [azure-allow-http](#azure-allow-http) #### azure-storage-account @@ -532,6 +591,30 @@ values in the Storage account's **Settings > Access keys**. --- +#### azure-endpoint + +When using Microsoft Azure as the object store, set this to the Azure Blob +Storage endpoint. + +| influxdb3 serve option | Environment variable | +| :--------------------- | :------------------- | +| `--azure-endpoint` | `AZURE_ENDPOINT` | + +--- + +#### azure-allow-http + +When using Microsoft Azure as the object store, allow unencrypted HTTP requests +to Azure Blob Storage. + +**Default:** `false` + +| influxdb3 serve option | Environment variable | +| :--------------------- | :------------------- | +| `--azure-allow-http` | `AZURE_ALLOW_HTTP` | + +--- + ### Object Storage - [bucket](#bucket) diff --git a/content/shared/influxdb3-cli/write.md b/content/shared/influxdb3-cli/write.md index c19242f6f..d87e5b6e0 100644 --- a/content/shared/influxdb3-cli/write.md +++ b/content/shared/influxdb3-cli/write.md @@ -31,7 +31,8 @@ influxdb3 write [OPTIONS] --database [LINE_PROTOCOL]... | | `--token` | _({{< req >}})_ Authentication token | | `-f` | `--file` | A file that contains line protocol to write | | | `--accept-partial` | Accept partial writes | -| | `--precision` | Precision of data timestamps (`ns`, `us`, `ms`, or `s`) | | +| | `--no-sync` | Do not wait for WAL sync before acknowledging the write request | +| | `--precision` | Precision of data timestamps (`ns`, `us`, `ms`, or `s`) | | | `--tls-ca` | Path to a custom TLS certificate authority (for testing or self-signed certificates) | | `-h` | `--help` | Print help information | | | `--help-all` | Print detailed help information | @@ -50,6 +51,8 @@ You can use the following environment variables to set command options: - [Write line protocol to your InfluxDB 3 server](#write-line-protocol-to-your-influxdb-3-server) - [Write line protocol and accept partial writes](#write-line-protocol-and-accept-partial-writes) +- [Write line protocol with specific timestamp precision](#write-line-protocol-with-specific-timestamp-precision) +- [Write line protocol and immediately return a response](#write-line-protocol-and-immediately-return-a-response) In the examples below, replace the following: @@ -58,8 +61,6 @@ In the examples below, replace the following: - {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: Authentication token -{{% code-placeholders "DATABASE_NAME|AUTH_TOKEN" %}} - ### Write line protocol to your InfluxDB 3 server {{< code-tabs-wrapper >}} @@ -72,7 +73,7 @@ In the examples below, replace the following: {{% influxdb/custom-timestamps %}} -```bash +```bash { placeholders="DATABASE_NAME|AUTH_TOKEN" } influxdb3 write \ --database DATABASE_NAME \ --token AUTH_TOKEN \ @@ -83,7 +84,7 @@ influxdb3 write \ {{% code-tab-content %}} -```bash +```bash { placeholders="DATABASE_NAME|AUTH_TOKEN" } influxdb3 write \ --database DATABASE_NAME \ --token AUTH_TOKEN \ @@ -93,7 +94,7 @@ influxdb3 write \ {{% code-tab-content %}} -```bash +```bash { placeholders="DATABASE_NAME|AUTH_TOKEN" } cat ./data.lp | influxdb3 write \ --database DATABASE_NAME \ --token AUTH_TOKEN @@ -113,7 +114,7 @@ cat ./data.lp | influxdb3 write \ {{% influxdb/custom-timestamps %}} -```bash +```bash { placeholders="DATABASE_NAME|AUTH_TOKEN" } influxdb3 write \ --accept-partial \ --database DATABASE_NAME \ @@ -125,7 +126,7 @@ influxdb3 write \ {{% code-tab-content %}} -```bash +```bash { placeholders="DATABASE_NAME|AUTH_TOKEN" } influxdb3 write \ --accept-partial \ --database DATABASE_NAME \ @@ -136,7 +137,7 @@ influxdb3 write \ {{% code-tab-content %}} -```bash +```bash { placeholders="DATABASE_NAME|AUTH_TOKEN" } cat ./data.lp | influxdb3 write \ --accept-partial \ --database DATABASE_NAME \ @@ -145,14 +146,15 @@ cat ./data.lp | influxdb3 write \ {{% /code-tab-content %}} {{< /code-tabs-wrapper >}} -## Write line protocol with specific timestamp precision +### Write line protocol with specific timestamp precision -By default, in CLI and HTTP API write requests, {{% product-name %}} uses the timestamp magnitude to auto-detect the precision. +By default, in CLI and HTTP API write requests, {{% product-name %}} uses the +timestamp magnitude to auto-detect the precision. To avoid any ambiguity, specify the `--precision {ns|us|ms|s}` option: -```bash +```bash { placeholders="DATABASE_NAME|AUTH_TOKEN" } influxdb3 write \ --database DATABASE_NAME \ --token AUTH_TOKEN \ @@ -163,4 +165,24 @@ home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600 home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600 ' ``` -{{% /code-placeholders %}} + +### Write line protocol and immediately return a response + +By default, {{% product-name %}} waits to respond to write requests until the +written data is flushed from the Write-Ahead Log (WAL) to object storage +(every 1s by default). +Use the `--no-sync` option to immediately return a response without waiting for +the WAL to flush. This improves perceived write response times, but may hide certain +types of write errors--for example: malformed line protocol or type conflicts. + +> [!Tip] +> Only use `--no-sync` when low write latency is more important than guaranteed data durability. +> Avoid using this option for critical or irreplaceable data, as it increases the risk of silent data loss. + +```bash { placeholders="DATABASE_NAME|AUTH_TOKEN" } +influxdb3 write \ + --database DATABASE_NAME \ + --token AUTH_TOKEN \ + --no-sync \ + 'home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000' +``` diff --git a/content/shared/v3-core-enterprise-release-notes/_index.md b/content/shared/v3-core-enterprise-release-notes/_index.md index 896487a73..205d41e2f 100644 --- a/content/shared/v3-core-enterprise-release-notes/_index.md +++ b/content/shared/v3-core-enterprise-release-notes/_index.md @@ -5,6 +5,52 @@ > All updates to Core are automatically included in Enterprise. > The Enterprise sections below only list updates exclusive to Enterprise. +## v3.4.0 {date="2025-08-27"} + +### Core + +#### Features + +- **Token Provisioning**: + - Generate admin tokens offline and use them when starting the database if tokens do not already exist. + This is meant for automated deployments and containerized environments. + ([#26734](https://github.com/influxdata/influxdb/pull/26734)) +- **Azure Endpoint**: + - Use the `--azure-endpoint` option with `influxdb3 serve` to specify the Azure Blob Storage endpoint for object store connections. ([#26687](https://github.com/influxdata/influxdb/pull/26687)) +- **No_Sync via CLI**: + - Use the `--no-sync` option with `influxdb3 write` to skip waiting for WAL persistence on write and immediately return a response to the write request. ([#26703](https://github.com/influxdata/influxdb/pull/26703)) + +#### Bug Fixes +- Validate tag and field names when creating tables ([#26641](https://github.com/influxdata/influxdb/pull/26641)) +- Using GROUP BY twice on the same column no longer causes incorrect data ([#26732](https://github.com/influxdata/influxdb/pull/26732)) + +#### Security & Misc +- Reduce verbosity of the TableIndexCache log. ([#26709](https://github.com/influxdata/influxdb/pull/26709)) +- WAL replay concurrency limit defaults to number of CPU cores, preventing possible OOMs. ([#26715](https://github.com/influxdata/influxdb/pull/26715)) +- Remove unsafe signal_handler code. ([#26685](https://github.com/influxdata/influxdb/pull/26685)) +- Upgrade Python version to 3.13.7-20250818. ([#26686](https://github.com/influxdata/influxdb/pull/26686), [#26700](https://github.com/influxdata/influxdb/pull/26700)) +- Tags with `/` in the name no longer break the primary key. + + +### Enterprise + +All Core updates are included in Enterprise. Additional Enterprise-specific features and fixes: + +#### Features + +- **Token Provisioning**: + - Generate _resource_ and _admin_ tokens offline and use them when starting the database. + +- Select a home or trial license without using an interactive terminal. + Use `--license-type` [home | trial | commercial] option to the `influxdb3 serve` command to automate the selection of the license type. + +#### Bug Fixes + +- Don't initialize the Processing Engine when the specified `--mode` does not require it. +- Don't panic when `INFLUXDB3_PLUGIN_DIR` is set in containers without the Processing Engine enabled. + + + ## v3.3.0 {date="2025-07-29"} ### Core diff --git a/data/products.yml b/data/products.yml index 62b027b66..5b9d4fa61 100644 --- a/data/products.yml +++ b/data/products.yml @@ -6,7 +6,7 @@ influxdb3_core: versions: [core] list_order: 2 latest: core - latest_patch: 3.3.0 + latest_patch: 3.4.0 placeholder_host: localhost:8181 ai_sample_questions: - How do I install and run InfluxDB 3 Core? @@ -21,7 +21,7 @@ influxdb3_enterprise: versions: [enterprise] list_order: 2 latest: enterprise - latest_patch: 3.3.0 + latest_patch: 3.4.0 placeholder_host: localhost:8181 ai_sample_questions: - How do I install and run InfluxDB 3 Enterprise?