> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

For user-facing changes, refer to the [Release Notes](whats_new) page.<br />
For details about versioning, see our [Versioning Policy](https://docs.activeviam.com/atoti-eos.html).<br />

The 6.2 branch forked the 6.1 branch from version 6.1.20.<br />
See the [6.1 changelog](./previous/6_1/changelog) for changes before the fork.

Format based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0)

## 6.2.0-M1

<Warning>
  This is a preproduction release, see [https://docs.activeviam.com/preproduction-releases](https://docs.activeviam.com/preproduction-releases)
</Warning>

2026-06-15

### Added

* PIVOT-10020 JDBC Source: Added `JdbcRowFailureEvent` and the `onJdbcRecordFailed` method on `IJdbcSourceHealthEventHandler`, so that health event handlers are now notified when an error occurs while processing a JDBC row.
* PIVOT-12675 Cube Metadata: Added `isSlicing()` to `IHierarchyInfo`, indicating whether the hierarchy is slicing (i.e., does not have an "All" member). Added `getDefaultHierarchyInfo()` to `IDimensionInfo`, returning the default hierarchy of the dimension.

### Changed

* PIVOT-0000 Atoti UI: All Atoti UI artifacts (`atoti-ui`, `atoti-ui-initial-content`, `atoti-admin-ui`) are now versioned by the single `atoti-ui.version` Maven property, as they are released in lockstep. The `admin-ui.version` property is removed. Versions are aligned on 5.2.24 (previously `atoti-ui.version` 5.2.20 and `admin-ui.version` 5.2.22).
* PIVOT-11413 Datastore: Moved `NoTransactionException` in public API, from package `com.activeviam.database.datastore.internal` to `com.activeviam.database.datastore.api.transaction`.
* PIVOT-11541 Datastore: Removed the unnecessary `throws DatastoreTransactionException` declarations from `ITransactionalWriter.remove`/`removeAll`, `IOpenedTransaction.updateWhere`/`rollback`, and `ITransactionManager.rollbackTransaction`/`stop`, which never threw it.
  As `DatastoreTransactionException` is a checked exception, remove any `catch` clause that wrapped only these calls.
* PIVOT-11619 `IAgent` does not extend `IExtendedPluginValue` anymore. If a given agent implementation needs to be an extended plugin value, that agent needs to explicitly declare its dependency to `IExtendedPluginValue`.
* PIVOT-13108 Monitoring: The Queries Service monitoring previously provided by the `apm` module is now built into Atoti Server: query counters and exception logging no longer require the APM module. The per-query report logs are now disabled by default and controlled by the `activeviam.queries.service.logging`, `activeviam.queries.service.detailed-logging` and `activeviam.queries.service.log-memory-stats` properties, or at runtime over JMX. The `name=QueriesService,type=Monitoring` MBean is replaced by `QueriesServiceStatistics` (counters) and `QueriesServiceLogging` (logging toggles). See the [migration notes](migration_notes#change-of-behavior).
* PIVOT-13111 Logging: The Logback conversion-rule converters have been moved out of the `apm` module. `LogInstanceConverter` and `LogThreadConverter` are now in `com.activeviam.tech.logging.logback.api` (artifact `com.activeviam.tech:logging-logback`), and `LogUserConverter` is now in `com.activeviam.tech.logging.logback.spring.api` (artifact `com.activeviam.tech:logging-logback-spring`). Update the fully-qualified class names referenced in your `logback.xml`/`logback-spring.xml` `<conversionRule>` declarations.
* PIVOT-13324 Observability: Atoti JFR events have been renamed to follow Oracle's [JFR naming and labeling guidelines](https://docs.oracle.com/en/java/javase/22/jfapi/guidelines-naming-and-labeling-events.html). Event names now share a flat `atoti.*` namespace (e.g. `atoti.CubeCommit` instead of `atoti.server.cube.CubeCommitEvent`), the `Event` suffix has been dropped, and labels use headline-style capitalization. JFR configuration files referencing the previous names must be updated; see [JFR events](../monitoring/jfr_events) for the new identifiers.
* PIVOT-13635 Build: Atoti Server requires Java 25
* PIVOT-13720 Default cursor batch size raised from `16` to `128`, which benchmarking identified as a more performant default.
  The previous value can be restored at startup via the `atoti.server.records.cursor.batchSize` system property.
* PIVOT-13785 Observability: The type of some metric tags has changed from String to a more appropriate type such as `boolean`, `long` or `List<String>`.

| Tag                          | New Type       |
| ---------------------------- | -------------- |
| agg\_provider.partition.id   | `long`         |
| atoti.root.mode              | `boolean`      |
| cache                        | `boolean`      |
| cube-names                   | `List<String>` |
| cube.epoch.current           | `long`         |
| epoch-id                     | `long`         |
| is-transaction-shadow        | `boolean`      |
| measures                     | `List<String>` |
| node.id                      | `long`         |
| partition.id                 | `long`         |
| number-events                | `long`         |
| query.fields                 | `List<String>` |
| snowflake-resultset-count    | `long`         |
| source-list-topics           | `List<String>` |
| stores-locked-by-transaction | `List<String>` |
| success                      | `boolean`      |
| writable-stores              | `List<String>` |

* PIVOT-13948 Datastore: `StoreDescription`, `OptimizationDescription` and `SimpleStoreDescriptionBuilder.keyFieldNames(...)`
  now accept a `Collection<String>` instead of a `List<String>` for key/index field names to enhance the fact that the order is ignored.
* PIVOT-13949 Upgraded Jackson's version to `3.1.2`.
* PIVOT-13963 Atoti UI: Bumped `atoti-ui.version` from 5.2.20 to 5.2.24 and `admin-ui.version` from 5.2.22 to 5.2.24.
* PIVOT-13994 Distribution: Moved `IMultiVersionDataActivePivot` from package `com.activeviam.activepivot.dist.impl.api.cube` to `com.activeviam.activepivot.dist.datanode.impl.api.cube`.
* PIVOT-14110 DLC: Errors raised while creating a local CSV topic include more information.

### Deprecated

* PIVOT-13676 `IActivePivotContentServiceConfig` is deprecated and scheduled for removal in 6.3.0. Inject `IActivePivotContentService` directly as a Spring bean instead of implementing this configuration interface.

### Removed

* PIVOT-10061 Parsers: Removed the deprecated `integer` and `integer[]` parser type keys (including sized and delimited variants).
  Use the equivalent `int` and `int[]` keys instead; the parsing behavior is unchanged.
* PIVOT-10231 Direct Query Snowflake: Removed the deprecated `SnowflakeDialectSettings#arrayAggWrapperFunctionName` setting and the `ARRAY_AGG_WRAPPER_FUNCTION_NAME` connection option used to wrap `ARRAY_AGG` operations with a custom UDF. The built-in Snowflake SQL function is now faster, so the wrapper is no longer needed.
* PIVOT-10885 Distribution: Removed the deprecated `String`-based distributing level APIs. `IApplicationDescriptionBuilderWithId#withDistributingFields(String...)`, `IDistributedApplicationDefinition#getDistributingFields()`, and the `QueryClusterDefinition.DistributedApplicationDefinition(String, List<String>)` constructor have been removed; use `withDistributingLevels(LevelIdentifier...)`, `getDistributingLevels()`, and `QueryClusterDefinition.DistributedApplicationDefinition(String, List<LevelIdentifier>)` instead. `IApplicationDescriptionBuilderWithId#withoutDistributingFields()` has been renamed to `withoutDistributingLevels()`, and `QueryClusterDefinition.DistributedApplicationDefinitionV2` has been renamed to `QueryClusterDefinition.DistributedApplicationDefinition`.
* PIVOT-12455 Versioning: Removed `IVersionLifecycleHandler` from the public API.
* PIVOT-13523 The JMX attributes and operations of the datastore `TransactionManager` (`getLatestTransactionTime`, `getAvgTransactionTime`, `getNumberTransactions`, `getAddedOrUpdatedRecords`, `getRemovedRecords`, `addSpeed`, `removalSpeed`) are no longer exposed. Use the metrics sent to the observability backend via OpenTelemetry instead.
* PIVOT-13524 Removed the deprecated `ICsvSourceConfiguration` interface. Use `CsvSourceConfiguration` directly.
* PIVOT-13525 Removed `ICsvParserConfiguration`, `IFileParserConfiguration` and `FileParserConfiguration`. Use `CsvParserConfiguration` directly.
* PIVOT-13526 `DataTable` has been removed. Use `StoreDescription` for a datastore table or a `TableDescription` for a DirectQuery table.
* PIVOT-13529 Removed the deprecated `IParquetReaderFactory#create(InputFile, ReadSupport, org.apache.hadoop.conf.Configuration)` overload. Use the overload taking a `ParquetConfiguration` instead; wrap an existing Hadoop `Configuration` with `new HadoopParquetConfiguration(...)`.
* PIVOT-13532 Distribution: Removed the deprecated concealed measures feature. The `withConcealedMeasures` builder methods, `IDataClusterDefinition#getConcealedMeasures`/`setConcealedMeasures`, and the now-redundant `withAllMeasures` builder step have been removed. Concealing hierarchies and branches is still supported.
* PIVOT-13785 Removed `IQuery#collectAdditionalSpanAttributes(BiConsumer<String, String>)` and its implementations.
* PIVOT-13913 Direct Query Databricks: Removed the deprecated feature of UDAF for vector aggregation.
* PIVOT-14017 Removed the deprecated `StartBuilding.Builder#withEpochManager(IEpochManager)` method. Use `StartBuilding.Builder#withEpochPolicy(IEpochManagementPolicy)` instead.
* PIVOT-14019 Removed the deprecated `PersistedBuilder#lockOptions(boolean)` method, which was public by mistake. Use `PersistedBuilder#databaseLocks(LockOptions)` instead.
* PIVOT-14020 Removed the unusable `IMessengerDefinition.AGENTS` and `IMessengerDefinition.SEPARATOR` constants. All `IDistributedAgent` implementations are internal API, so the constants had no supported use.
* PIVOT-14025 Removed the deprecated duplicate APIs in the `io.atoti.runtime.api.measures` and `io.atoti.server.common.api.plugins` packages. Use their `com.activeviam.atoti.application.api.measures` and `com.activeviam.atoti.server.common.api.plugins` counterparts.
* PIVOT-14028 Distribution: Removed the deprecated `IMultiVersionDistributedActivePivot#unloadMembersFromDataNode` method, along with its internal `UnloadMemberMessage`, the `IMessengerDefinition#UNLOAD_MEMBERS_MESSAGE_TIMEOUT` property and the related `distribution.unload_members_from_data_node.*` metrics. Use `IMultiVersionDataActivePivot#maskMembers` and `IMultiVersionDataActivePivot#unmaskMembers` instead.
* PIVOT-14035 Removed the deprecated 4-argument constructor of `ActivePivotTransactionCommittedEvent`. Use the 6-argument constructor instead, passing `-1, -1` for the start and commit timings when they are unknown.
* PIVOT-14044 Removed the deprecated `IGenericAggregationFunction.SUM_PRODUCT_FUNCTION_PLUGIN_KEY` constant. Use `IMultiSourceAggregationFunction.SUM_PRODUCT_FUNCTION_PLUGIN_KEY` instead.
* PIVOT-14054 Query API: Removed the deprecated constructors of `GetAggregatesQuery` and `DrillthroughQuery`. Use their respective builders instead.
* PIVOT-14054 CSV Source: Removed the deprecated constructors of `CsvParserConfiguration` and `CsvSourceConfiguration`. Use `CsvParserConfiguration.builder()` and `CsvSourceConfiguration.builder()` instead.
* PIVOT-14096 Removed the empty Maven module `com.activeviam.springboot:atoti-runtime-starter`, kept as an alias since it was renamed in 6.1. Use `com.activeviam.springboot:atoti-server-application-starter` instead.
* PIVOT-14097 Removed the empty Maven module `com.activeviam.activepivot:activepivot-ext`. Import `com.activeviam.activepivot:core` and optionally `com.activeviam.activepivot:activepivot-dist-impl` instead.

### Fixed

* PIVOT-11585 Content Server: Fixed a startup race in high-availability deployments where two instances initializing concurrently against a fresh shared database could both attempt to create the root directory, causing one of them to fail to start with `IllegalStateException: Entry at path / already exists`.
* PIVOT-13743 Cube: Reduce the creation of transient `HierarchyIdentifier` objects.
* PIVOT-13947 Continuous GAQ REST API: Stopping a publisher now cancels all the continuous queries it owns.
* PIVOT-13986 MDX: Non-empty cross-join evaluation now periodically checks for interruption, attempting to exit early from a big cross-join when the query has been stopped (cancellation or timeout).
* PIVOT-14012 DirectQuery: Primary-key discovery is now skipped for views, which have no primary key. This avoids discovery failures with JDBC drivers that reject the primary-key metadata query on a view instead of returning no rows.

### Security

* PIVOT-13980 Security: Removed the `activeviam.jwt.*` application properties, deprecated since 6.1. Use the `atoti.jwt.*` equivalents instead. The `expiration` property is a `Duration`. The available formats are described in [Spring's documentation](https://docs.spring.io/spring-boot/reference/features/external-config.html#features.external-config.typesafe-configuration-properties.conversion.durations). For this property, a unitless integer will represent Seconds.
