This is an automated email from the ASF dual-hosted git repository.

kgyrtkirk pushed a commit to branch 36.0.0
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/36.0.0 by this push:
     new 6a88a829460 docs 36.0.0 release notes (#18919)
6a88a829460 is described below

commit 6a88a829460664ec85cbc1425f148c1eb0849935
Author: 317brian <[email protected]>
AuthorDate: Mon Feb 9 06:20:49 2026 -0800

    docs 36.0.0 release notes (#18919)
    
    
    ---------
    Co-authored-by: Frank Chen <[email protected]>
    Co-authored-by: Lucas Capistrant <[email protected]>
    Co-authored-by: Zoltan Haindrich <[email protected]>
---
 docs/release-info/release-notes.md | 247 +++++++++++++++++++++++++++++++++++--
 docs/release-info/upgrade-notes.md |  64 ++++++++++
 website/.spelling                  |   2 +
 3 files changed, 301 insertions(+), 12 deletions(-)

diff --git a/docs/release-info/release-notes.md 
b/docs/release-info/release-notes.md
index d0573c5cbcc..7e3624df20e 100644
--- a/docs/release-info/release-notes.md
+++ b/docs/release-info/release-notes.md
@@ -24,15 +24,15 @@ title: "Release notes"
 
 <!--Replace {{DRUIDVERSION}} with the correct Druid version.-->
 
-Apache Druid \{\{DRUIDVERSION}} contains over $NUMBER_FEATURES new features, 
bug fixes, performance enhancements, documentation improvements, and additional 
test coverage from $NUMBER_OF_CONTRIBUTORS contributors.
+Apache Druid 36.0.0 contains over 189 new features, bug fixes, performance 
enhancements, documentation improvements, and additional test coverage from 34 
contributors.
 
 <!--
 Replace {{MILESTONE}} with the correct milestone number. For example: 
https://github.com/apache/druid/issues?q=is%3Aclosed+milestone%3A28.0+sort%3Aupdated-desc+
 -->
 
-See the [complete set of 
changes](https://github.com/apache/druid/issues?q=is%3Aclosed+milestone%3A{{MILESTONE}}+sort%3Aupdated-desc+)
 for additional details, including bug fixes.
+See the [complete set of 
changes](https://github.com/apache/druid/issues?q=is%3Aclosed+milestone%3A36.0.0+sort%3Aupdated-desc+)
 for additional details, including bug fixes.
 
-Review the [upgrade notes](#upgrade-notes) and [incompatible 
changes](#incompatible-changes) before you upgrade to Druid \{\{DRUIDVERSION}}.
+Review the [upgrade notes](#upgrade-notes) before you upgrade to Druid 36.0.0.
 If you are upgrading across multiple versions, see the [Upgrade 
notes](upgrade-notes.md) page, which lists upgrade notes for the most recent 
Druid versions.
 
 <!-- 
@@ -61,59 +61,282 @@ This section contains important information about new and 
existing features.
 
 This section contains detailed release notes separated by areas.
 
+#### Druid operator
+
+Druid Operator is a Kubernetes controller that manages the lifecycle of your 
Druid clusters. The operator simplifies the management of Druid clusters with 
its custom logic that is configurable through
+Kubernetes CRDs.
+
+[#18435](https://github.com/apache/druid/pull/18435)
+
+#### Cost-based autoscaling for streaming ingestion
+
+Druid now supports cost-based autoscaling for streaming ingestion that 
optimizes task count by balancing lag reduction against resource efficiency.. 
This autoscaling strategy uses the following formula:
+
+```
+totalCost = lagWeight × lagRecoveryTime + idleWeight × idlenessCost
+```
+
+which accounts for the time to clear the backlog and compute time:
+
+```
+lagRecoveryTime = aggregateLag / (taskCount × avgProcessingRate) — time to 
clear backlog
+idlenessCost = taskCount × taskDuration × predictedIdleRatio — wasted compute 
time
+```
+
+[#18819](https://github.com/apache/druid/pull/18819)
+
+#### Kubernetes client mode (experimental)
+
+In `kubernetes-overlord-extensions` an experimental Kubernetes client mode was 
added. The new mode uses the `fabric8` `SharedInformers` to cache k8s metadata. 
This greatly reduces API traffic between the Overlord and k8s control plane. 
You can try out this feature using the following config:
+
+```
+druid.indexer.runner.useK8sSharedInformers=true
+```
+
+[#18599](https://github.com/apache/druid/pull/18599)
+
+#### cgroup v2 support
+
+cgroup v2 is now supported, and all cgroup metrics now emit `cgroupversion` to 
identify which version is being used.
+
+The following metrics automatically switch to v2 if v2 is detected: 
`CgroupCpuMonitor` , `CgroupCpuSetMonitor`, 
`CgroupDiskMonitor`,`MemoryMonitor`. `CpuAcctDeltaMonitor` fails gracefully if 
v2 is detected.
+
+Additionally, `CgroupV2CpuMonitor` now also emits  `cgroup/cpu/shares` and 
`cgroup/cpu/cores_quota`.
+
+[#18705](https://github.com/apache/druid/pull/18705)
+
+#### Query reports for Dart
+
+Dart now supports query reports for running and recently completed queries. 
The reports can be fetched from the 
`/druid/v2/sql/queries/<sqlQueryId>/reports` endpoint.
+
+The format of the response is a JSON object with two keys, "query" and 
"report". The "query" key is the same info that is available from the existing 
`/druid/v2/sql/queries` endpoint. The "report" key is a report map including an 
MSQ report.
+
+You can control the retention behavior for reports using the following configs:
+
+* `druid.msq.dart.controller.maxRetainedReportCount`: Max number of reports 
that are retained. The default is 0, meaning no reports are retained
+* `druid.msq.dart.controller.maxRetainedReportDuration`: How long reports are 
retained in ISO 8601 duration format. The default is `PT0S`, meaning time-based 
expiration is turned off
+
+[#18886](https://github.com/apache/druid/pull/18886)
+
+#### New segment format
+
+The new version 10 segment format improves upon version 9. It is off by 
default and not compatible with older segment format versions.
+
+Set `druid.indexer.task.buildV10=true` to make segments in the new format.
+
+If you downgrade, you must reindex your data with a supported segment format 
version.
+
+You can use the `bin/dump-segment` tool to view segment metadata. The tool 
outputs serialized JSON.
+
+[#18880](https://github.com/apache/druid/pull/18880) 
[#18901](https://github.com/apache/druid/pull/18901) 
+
 ### Web console
 
+#### New info available in the web console
+
+The web console now includes information about the number of available 
processors and the total memory (in binary bytes).
+
+This information is also available through the `sys.servers` table.
+
+[#18613](https://github.com/apache/druid/pull/18613)
+
 #### Other web console improvements
 
+* Added tracking for inactive workers for MSQ execution stages 
[#18768](https://github.com/apache/druid/pull/18768)
+* Added a refresh button for JSON views and stage viewers 
[#18768](https://github.com/apache/druid/pull/18768)
+* You can now define `ARRAY` type parameters in the query view 
[#18586](https://github.com/apache/druid/pull/18586)
+* Changed system table queries to now automatically use the native engine 
[#18857](https://github.com/apache/druid/pull/18857)
+* Improved time charts to support multiple measures 
[#18701](https://github.com/apache/druid/pull/18701)
+
 ### Ingestion
 
+* Added support for AWS `InternalError` code retries 
[#18720](https://github.com/apache/druid/pull/18720)
+* Improved ingestion to be more resilient. Ingestion tasks no longer fail if 
the task log upload fails with an exception 
[#18748](https://github.com/apache/druid/pull/18748)
+* Improved how Druid handles situations where data doesn't match the expected 
type [#18878](https://github.com/apache/druid/pull/18878)
+* Improved JSON ingestion so that Druid can compute JSON values directly from 
dictionary or index structures, allowing ingestion to skip persisting raw JSON 
data entirely. This reduces on-disk storage size 
[#18589](https://github.com/apache/druid/pull/18589)
+* You can now choose between full dictionary-based indexing and nulls-only 
indexing for long/double fields in a nested column 
[#18722](https://github.com/apache/druid/pull/18722)
+
 #### SQL-based ingestion
 
+##### Additional ingestion configurations
+
+You can now use the following configs to control how your data gets ingested 
and stored:
+
+* `maxInputFilesPerWorker`: Controls the maximum number of input files or 
segments per worker.
+* `maxPartitions`: Controls the maximum number of output partitions for any 
single stage, which affects how many segments are generated during ingestion.
+
+[#18826](https://github.com/apache/druid/pull/18826)
+
 ##### Other SQL-based ingestion improvements
 
+* Added `maxRowsInMemory` to replace `rowsInMemory`. `rowsInMemory` now 
functions as an alternate way to provide that config and is ignored if 
`maxRowsInMemory` is specified. Previously, only `rowsInMemory` existed 
[#18832](https://github.com/apache/druid/pull/18832)
+
 #### Streaming ingestion
 
+##### Record offset and partition
+
+You can now ingest the record offset (`offsetColumnName`) and partition 
(`partitionColumnName`) using the `KafkaInputFormat`. Their default names are 
`kafka.offset` and `kafka.partition` respectively .
+
+[#18757](https://github.com/apache/druid/pull/18757)
+
 ##### Other streaming ingestion improvements
 
+* Improved supervisors so that they can't kill tasks while the supervisor is 
stopping [#18767](https://github.com/apache/druid/pull/18767)
+* Improved the lag-based autoscaler for streaming ingestion 
[#18745](https://github.com/apache/druid/pull/18745)
+* Improved the `SeekableStream` supervisor autoscaler to wait for tasks to 
complete before attempting subsequent scale operations. This helps prevent 
duplicate supervisor history entries 
[#18715](https://github.com/apache/druid/pull/18715)
+
 ### Querying
 
 #### Other querying improvements
 
+* Improved the user experience for invalid `regex_exp` queries. An error gets 
returned now [#18762](https://github.com/apache/druid/pull/18762)
+
 ### Cluster management
 
+#### Dynamic capacity for Kubernetes-based deployments
+
+Druid can now dynamically tune the task runner capacity.
+
+Include the `capacity` field in a POST API call to 
`/druid/indexer/v1/k8s/taskrunner/executionconfig`. Setting a value this way 
overrides `druid.indexer.runner.capacity`.
+
+[#18591](https://github.com/apache/druid/pull/18591)
+
+#### Server properties table
+
+The `sys.server_properties` table exposes the runtime properties configured 
for each Druid server. Each row represents a single property key-value pair 
associated with a specific server.
+
+[#18692](https://github.com/apache/druid/pull/18692)
+
 #### Other cluster management improvements
 
+* Added quality of service filtering for the Overlord so that health check 
threads don't get blocked [#18033](https://github.com/apache/druid/pull/18033)
+
 ### Data management
 
 #### Other data management improvements
 
+* Added the `mostFragmentedFirst` compaction policy that prioritizes intervals 
with the most small uncompacted segments 
[#18802](https://github.com/apache/druid/pull/18802)
+* Improved how segment files get deleted to prevent partial segment files from 
remaining in the event of a failure during a delete operation 
[#18696](https://github.com/apache/druid/pull/18696)
+* Improved compaction so that it identifies multi-value dimensions for 
dimension schemas that can  produce them 
[#18760](https://github.com/apache/druid/pull/18760)
+* Improved the reliability when pulling segments 
[#18821](https://github.com/apache/druid/pull/18821)
+
 ### Metrics and monitoring
 
+#### Task metrics
+
+All task metrics now emit the following dimensions: `taskId`, `dataSource`, 
`taskType`, `groupId`, and `id`. Note that `id` is emitted for backwards 
compatibility. It will be removed in favor of the `taskId` dimension in a 
future release.
+
+[#18876](https://github.com/apache/druid/pull/18876)
+
+#### Ingestion metrics
+
+The following metrics for streaming and batch tasks now emit the actual values 
instead of 0: `ingest/merge/time`, `ingest/merge/cpu`, and 
`ingest/persists/cpu`.
+
+[#18866](https://github.com/apache/druid/pull/18866)
+
+##### `statsd` metrics
+
+The following metrics have been added to the default list for `statsd`:
+
+* `task/action/run/time`
+* `task/status/queue/count`
+* `task/status/updated/count`
+* `ingest/handoff/time`
+
+[#18846](https://github.com/apache/druid/pull/18846)
+
+#### Other metrics and monitoring improvements
+
+* Added `reason` dimension to `ingest/events/thrownAway` metric. This allows 
for increased observability on why certain events are being logically excluded 
from ingest [#188855](https://github.com/apache/druid/pull/18855)
+* Added logging for all handlers for a stage before they start or stop, which 
can help you understand execution order 
[#18662](https://github.com/apache/druid/pull/18662)
+* Added new Jetty thread pool metrics to capture request-serving thread 
statistics: `jetty/threadPool/utilized`, `jetty/threadPool/ready` and 
`jetty/threadPool/utilizationRate` 
[#18883](https://github.com/apache/druid/pull/18883)
+* Added `tier` and `priority` dimensions to the `segments/max` metric 
[#18890](https://github.com/apache/druid/pull/18890)
+* Added `GroupByStatsMonitor`, which includes `dataSource` and `taskId` 
dimensions for metrics emitted on peons 
[#18711](https://github.com/apache/druid/pull/18711)
+* Added `task/waiting/time` metric, which measures the time it takes for a 
task to be placed onto the task runner for scheduling and running 
[#18735](https://github.com/apache/druid/pull/18735)
+* Added the `supervisorId` to streaming task metrics to help clarify 
situations where multiple supervisors ingest data into a single datasource 
[#18803](https://github.com/apache/druid/pull/18803)
+* Added `StorageMonitor` to `druid.monitoring.monitors` to measure storage and 
virtual storage usage by segment cache 
[#18742](https://github.com/apache/druid/pull/18742)
+* Druid now logs the following: 
+  * total bytes gathered when the max scatter-gather bytes limit is reached 
[#18841](https://github.com/apache/druid/pull/18841)
+  * `query/bytes` metric for even for failed requests 
[#18842](https://github.com/apache/druid/pull/18842)
+* Changed Prometheus emitter TTL tracking to consider all label value 
combinations instead of just the metric name. Labels aren't tracked when the 
TTL isn't set [#18718](https://github.com/apache/druid/pull/18718) 
[#18689](https://github.com/apache/druid/pull/18689)
+* Changed lifecycle `stop()` to be logged at the `info` level to match 
`start()` [#18640](https://github.com/apache/druid/pull/18640)
+* Changed the trigger for metrics emission so that metrics get emitted any 
time a task completes [#18766](https://github.com/apache/druid/pull/18766) 
+
+
+* Improved the metrics emitter so that it emits metrics for all task 
completions [#18766](https://github.com/apache/druid/pull/18766)
+
 ### Extensions
 
-### Documentation improvements
+#### SpectatorHistogram extension
+
+* Added `SPECTATOR_COUNT` and `SPECTATOR_PERCENTILE` SQL functions 
[#18885](https://github.com/apache/druid/pull/18885)
+* Improved the performance of the SpectatorHistogram extension through 
vectorization [#18813](https://github.com/apache/druid/pull/18813)
 
 ## Upgrade notes and incompatible changes
 
 ### Upgrade notes
 
-#### Front-coded dictionaries
+#### MSQ controller tasks
+
+When upgrading from Druid 30 or earlier, MSQ `query_controller` tasks can fail 
during a rolling update due to the addition of new counters that are not 
backwards compatible with these older versions. You can either retry any failed 
queries after the update completes; or you can set `includeAllCounters` to 
`false` in the query context for any MSQ jobs that need to run during the 
rolling update; or you can upgrade to Druid 31–35 first before upgrading to 
Druid 36.
+
+[#18761](https://github.com/apache/druid/pull/18761)
 
-<!--Carry this forward until 32. Then move it to incompatible changes -->
+#### Segment format 
 
-In Druid 32.0.0, the front coded dictionaries feature will be turned on by 
default. Front-coded dictionaries reduce storage and improve performance by 
optimizing for strings where the front part looks similar.
+Druid 36.0.0 supports segment format version 10. Previous versions of Druid 
don't support version 10. If you downgrade, you must reindex your data with a 
supported segment format version.
 
-Once this feature is on, you cannot easily downgrade to an earlier version 
that does not support the feature. 
+[#18880](https://github.com/apache/druid/pull/18880)
 
-For more information, see [Migration guide: front-coded 
dictionaries](./migr-front-coded-dict.md).
+#### Deprecated metrics
 
-If you're already using this feature, you don't need to take any action. 
+Monitors on peons that previously emitted the `id` dimension from 
`JettyMonitor`, `OshiSysMonitor`, `JvmMonitor`, `JvmCpuMonitor`, 
`JvmThreadsMonitor` and `SysMonitor` to represent the task ID are deprecated 
and will be removed in a future release. Use the `taskId` dimension instead.
 
+[#18709](https://github.com/apache/druid/pull/18709)
 
-### Incompatible changes
+#### Removed metrics
+
+The following obsolete metrics have been removed:
+
+* `segment/cost/raw` [#18846](https://github.com/apache/druid/pull/18846)
+* `segment/cost/normalized` 
[#18846](https://github.com/apache/druid/pull/18846)
+* `segment/cost/normalization` 
[#18846](https://github.com/apache/druid/pull/18846)
+* `task/action/log/time` [#18649](https://github.com/apache/druid/pull/18649)
 
 ### Developer notes
 
+#### Segment file interfaces
+
+New `SegmentFileBuilder` and `SegmentFileMapper` interfaces have been defined 
to replace direct usages of `FileSmoosher` and `SmooshedFileMapper` to abstract 
the segment building and reading process.
+
+The main developer visible changes for extension writers with custom column 
implementations is that the `Serializer` interface has changed the `writeTo` 
method:
+
+* It now accepts a `SegmentFileBuilder` instead of a `FileSmoosher`
+* The `ColumnBuilder` method `getFileMapper` now returns a `SegmentFileMapper` 
instead of `SmooshedFileMapper`. 
+
+Extensions which do not provide custom column implementations should not be 
impacted by these changes.
+
+[#18608](https://github.com/apache/druid/pull/18608)
+
+#### Other developer improvements
+
+* Added the ability to override the default Kafka image for testing 
[#18739](https://github.com/apache/druid/pull/18739)
+* Changed `fastDecompressor` to `safeDecompressor` 
[#18930](https://github.com/apache/druid/pull/18930)
+* Extensions can now provide query kit implementations 
[#18875](https://github.com/apache/druid/pull/18875)
+* Removed version overrides in individual `pom` files. For a full list, see 
the pull request [#18708](https://github.com/apache/druid/pull/18708)
+
 #### Dependency updates
 
-The following dependencies have had their versions bumped:
\ No newline at end of file
+The following dependencies have had their versions bumped:
+
+* `org.apache.logging.log4j:log4j-core` from `2.22.1` to `2.25.3` 
[#18874](https://github.com/apache/druid/pull/18874)
+* `org.mozilla:rhino` from `1.7.14` to `1.7.14.1` 
[#18868](https://github.com/apache/druid/pull/18868)
+* `net.java.dev.jna` and `net.java.dev.jna` versions from `5.13.0` to `5.18.1` 
for Oshi monitor [#18848](https://github.com/apache/druid/pull/18848)
+* `com.github.oshi:oshi-core from` from `6.4.4` to `6.9.1` 
[#18839](https://github.com/apache/druid/pull/18839)
+* `bcpkix-jdk18on` from `1.78.1` to `1.79` 
[#18834](https://github.com/apache/druid/pull/18834)
+* `org.eclipse.jetty` from `12.0.25`to `12.0.30` 
[#18773](https://github.com/apache/druid/pull/18773)
+* `hamcrest` from `1.3` to `2.2` 
[#18708](https://github.com/apache/druid/pull/18708)
+* `org.apache.commons:commons-lang3` from `3.18.0` to `3.19.0` 
[#18695](https://github.com/apache/druid/pull/18695)
+* `org.apache.maven.plugins:maven-shade-plugin` from `3.5.0` to `3.6.1`
+* `com.netflix.spectator` from `1.7.0` to `1.9.0` 
[#18887](https://github.com/apache/druid/pull/18887)
+* `org.bouncycastle:bcpkix-jdk18on` from `1.79` to `1.81` to resolve 
`SONATYPE-2025-001911`
diff --git a/docs/release-info/upgrade-notes.md 
b/docs/release-info/upgrade-notes.md
index 440eb7d77ef..d492da377e9 100644
--- a/docs/release-info/upgrade-notes.md
+++ b/docs/release-info/upgrade-notes.md
@@ -38,6 +38,70 @@ For more information, see [Migration guide: front-coded 
dictionaries](./migr-fro
 
 If you're already using this feature, you don't need to take any action. 
 
+## 36.0.0
+
+### Upgrade notes
+
+#### Deprecated metrics
+
+Monitors on peons that previously emitted the `id` dimension from 
`JettyMonitor`, `OshiSysMonitor`, `JvmMonitor`, `JvmCpuMonitor`, 
`JvmThreadsMonitor` and `SysMonitor` to represent the task ID are deprecated 
and will be removed in a future release. Use the `taskId` dimension instead.
+
+[#18709](https://github.com/apache/druid/pull/18709)
+
+#### Some `statsd` metrics removed
+
+The following obsolete metrics have been removed:
+
+* `segment/cost/raw`
+* `segment/cost/normalized`
+* `segment/cost/normalization`
+
+[#18846](https://github.com/apache/druid/pull/18846)
+
+## 35.0.0
+
+### Upgrade notes
+
+#### Fallback vectorization on by default
+
+The `druid.expressions.allowVectorizeFallback` now defaults to `true`. 
Additionally, `SAFE_DIVIDE` can now vectorize as a fallback.
+
+[#18549](https://github.com/apache/druid/pull/18549)
+
+#### Java 11 support removed
+
+Upgrade to Java 17 or 21. Note that some versions of Java 21 encountered 
issues during test, specifically Java 21.05-21.07. If possible, avoid these 
versions.
+
+[#18424](https://github.com/apache/druid/pull/18424)
+
+#### Jetty 12 
+
+A new server configuration option has been added: 
`druid.server.http.uriCompliance`. Jetty 12 by default has strict enforcement 
of `RFC3986` URI format. This is a change from Jetty 9. To retain compatibility 
with legacy Druid, this config defaults to `LEGACY`, which uses the more 
permissive URI format enforcement that Jetty 9 used. If the cluster you operate 
does not require legacy compatibility, we recommend you use the upstream Jetty 
default of `RFC3986` in your Druid deployment. See t [...]
+
+[#18424](https://github.com/apache/druid/pull/18424)
+
+#### Kerberos authentication
+
+The `druid.auth.authenticator.kerberos.cookieSignatureSecret` config is now 
mandatory. 
+
+[#18368](https://github.com/apache/druid/pull/18368)
+
+#### Multi-stage query task engine
+
+The MSQ task engine is now a core capability of Druid rather than an 
extension. It has been in the default extension load list for several releases. 
+
+Remove `druid-multi-stage-query` from `druid.extensions.loadList` in 
`common.runtimes.properties` before you upgrade.
+
+Druid 35.0.0 will ignore the extension if it's in the load list. Future 
versions of Druid will fail to start since it cannot locate the extension.
+
+[#18394](https://github.com/apache/druid/pull/18394)
+
+#### pac4j extension
+
+Due to the upgrade from `pac4j` 4 to 5, session serialization has changed from 
`pac4j`’s `JavaSerializer` to standard Java serialization. As a result, clients 
of clusters using the `pac4j` extension may be logged out during rolling 
upgrades and need to re‑authenticate.
+
+[#18259](https://github.com/apache/druid/pull/18259)
+
 ## 34.0.0
 
 ### Upgrade notes
diff --git a/website/.spelling b/website/.spelling
index 3486f8a8d88..1dfd71c68d7 100644
--- a/website/.spelling
+++ b/website/.spelling
@@ -314,6 +314,7 @@ config
 configs
 consumerProperties
 cron
+CRDs
 csv
 customizable
 dataset
@@ -596,6 +597,7 @@ unannouncements
 unary
 unassign
 uncomment
+uncompacted
 underutilization
 unintuitive
 unioned


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to