For details about versioning, see our Versioning Policy.
The 6.2 branch forked the 6.1 branch from version 6.1.20.
See the 6.1 changelog for changes before the fork. Format based on Keep a Changelog
6.2.0
2026-07-27Added
- PIVOT-9550 Pivot REST API: The cube discovery endpoint now exposes the type of the data stored by each level, through a new
dataTypeobject carrying the content type (for exampleINTEGER,DOUBLEorSTRING), the Java class of the members, and their nullability. Clients can use it to know whether a level is numeric without inspecting its members. The revision of the pivot REST API is now 5. - PIVOT-10020 JDBC Source: Added
JdbcRowFailureEventand theonJdbcRecordFailedmethod onIJdbcSourceHealthEventHandler, so that health event handlers are now notified when an error occurs while processing a JDBC row. - PIVOT-12580 Continuous GAQ: The subscribe request now accepts a
sortfield to order streamed rows by one or more measures or levels (ASC/DESC, nulls last). Ordering applies to initial, full-refresh, and delta-added rows. Delta-removed rows are ordered by level keys. - PIVOT-12617 Content service: Added the
atoti.server.content-service.prefixproperty to store all the entries of the auto-configured content service under a prefix. See How to configure a content service. - PIVOT-12675 Cube Metadata: Added
isSlicing()toIHierarchyInfo, indicating whether the hierarchy is slicing (i.e., does not have an “All” member). AddedgetDefaultHierarchyInfo()toIDimensionInfo, returning the default hierarchy of the dimension. - PIVOT-13152 Content service: Added the
atoti.server.content-service.persistence.audit.enabled,atoti.server.content-service.persistence.high-availability.enabled, andatoti.server.content-service.persistence.high-availability.polling-intervalproperties to create an auditable or a high availability content service from the configuration properties. See How to configure a content service. - PIVOT-13649 Monitoring: The
ActivePivotQueryStartedandActivePivotQueryDonehealth events now expose the query task identifier and a flag telling whether the query is a top-level query. A health event handler can use the task identifier to correlate an event with the Query REST API V10killQueryByIdendpoint. - PIVOT-13886 REST API: In the query plan retrieval response, a new
measuresDatafield on retrievals exposes the post-processor plugin key for post-processed measures. - PIVOT-13912 Continuous Query Engine: Added the
disableResultLimitOnUpdatesengine property as an opt-in to disable theIQueriesResultLimitcheck on the CQE shared update path, so continuous-query updates are no longer capped by the result-size limit; initial-view queries still honor the limit. See continuous query engine. - PIVOT-14009 Memory Analysis:
MemoryAnalysisServiceFactoryis now part of the public API. It can be used to instantiate anIMemoryAnalysisServicewithout the Spring Boot Atoti starter. - PIVOT-14073 Cube: Added
IMember#getLevelIdentifier(), which returns theLevelIdentifierof the level this member belongs to, andIAxisMember#getLevelOrdinal(), which returns the ordinal of that level. - PIVOT-14160 Parquet source:
IParquetParsernow extendsAutoCloseable. It can also be built with aMessageHandlerto handle parsing lifecycle events: start of parsing, publication of parsed records, and parsing errors. - PIVOT-14239 Concurrency:
IInterruptor#registerCallbackOnInterruptionnow returns aRegistration, anAutoCloseablewhoseclose()unregisters the callback. A callback registered on a long-lived interruptor can now be removed once its guarded operation completes, instead of lingering until the whole computation ends.
Changed
-
PIVOT-0000 Atoti UI: All Atoti UI artifacts (
atoti-ui,atoti-ui-initial-content,atoti-admin-ui) are now versioned by the singleatoti-ui.versionMaven property, as they are released in lockstep. Theadmin-ui.versionproperty is removed. Versions are aligned on 5.2.24 (previouslyatoti-ui.version5.2.20 andadmin-ui.version5.2.22). - PIVOT-10812 Distributed configuration now rejects declaring several distributing levels that belong to the same hierarchy. Such a configuration was previously accepted but redundant, since the nested levels added no extra partitioning.
-
PIVOT-11167 DirectQuery: Condition operands on
booleanfields are now type-checked during condition normalization. -
PIVOT-11413 Datastore: Moved
NoTransactionExceptionin public API, from packagecom.activeviam.database.datastore.internaltocom.activeviam.database.datastore.api.transaction. -
PIVOT-11541 Datastore: Removed the unnecessary
throws DatastoreTransactionExceptiondeclarations fromITransactionalWriter.remove/removeAll,IOpenedTransaction.updateWhere/rollback, andITransactionManager.rollbackTransaction/stop, which never threw it. AsDatastoreTransactionExceptionis a checked exception, remove anycatchclause that wrapped only these calls. -
PIVOT-11619
IAgentdoes not extendIExtendedPluginValueanymore. If a given agent implementation needs to be an extended plugin value, that agent needs to explicitly declare its dependency toIExtendedPluginValue. -
PIVOT-12001 Cube: A virtual hierarchy with an
OBJECT-typed level and no member name parser now throws aConfigurationExceptionat cube build time. Previously such a misconfiguration only logged aSEVEREmessage and let the cube build in a degraded state. Define a member name parser on the level (for example through the level builder’swithMemberNameParserPluginKey) or avoid theOBJECTdiscriminator to fix it. - PIVOT-12850 IIterableAggregatesRetrievalResult now implements IColumnarTable and getColumn(int) returns an IArray.
-
PIVOT-13108 Monitoring: The Streaming Service monitoring previously provided by the
apmmodule is now built into Atoti Server. The per-query report logs are now disabled by default (the APM module previously enabled them by default) and controlled by theatoti.server.query.service.streaming.logging,atoti.server.query.service.streaming.detailed-loggingandatoti.server.query.service.streaming.log-memory-statsproperties, or at runtime over JMX throughStreamingQueriesServiceLoggingandStreamingQueriesServiceStatisticsMBeans. See the migration notes. -
PIVOT-13108 Monitoring: The Queries Service monitoring previously provided by the
apmmodule 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 theatoti.server.query.service.logging,atoti.server.query.service.detailed-loggingandatoti.server.query.service.log-memory-statsproperties, or at runtime over JMX. Thename=QueriesService,type=MonitoringMBean is replaced byQueriesServiceStatistics(counters) andQueriesServiceLogging(logging toggles). See the migration notes. -
PIVOT-13108 Monitoring: The JSON Queries Service monitoring previously provided by the
apmmodule is now built into Atoti Server, following the same pattern as the Queries Service. The per-query report logs are disabled by default and controlled by theatoti.server.query.service.json.logging,atoti.server.query.service.json.detailed-loggingandatoti.server.query.service.json.log-memory-statsproperties, or at runtime over JMX. Thename=JsonQueriesService,type=MonitoringMBean is replaced byJsonQueriesServiceStatistics(counters) andJsonQueriesServiceLogging(logging toggles), and the total query counters now correctly include drillthrough queries. See the migration notes. -
PIVOT-13111 Monitoring: The query performance evaluator (adaptive slow-query detection) previously provided by the
apmmodule has been removed; its role is now covered by OpenTelemetry traces and metrics together with the query history module. The default query executor enriches the current trace span with each query’s identity. Theactiveviam.apm.query.performance.evaluation.*properties and thecom.activeviam.apm.query.slowslow-query log category no longer exist. See the migration notes. -
PIVOT-13111 Monitoring: The
apmmodule has been removed. Its remaining function is now built into Atoti Server (wired by theatoti-server-starterand the observability plugin). The thread-status monitoring is replaced by a passive blocked-thread watchdog that logs a full thread dump — toatoti.server.monitoring.health.blocked-thread(legacy aliascom.activeviam.apm.health.blocked-thread) — when blocked threads are detected. The watchdog is now disabled by default; enable it withatoti.server.monitoring.blockedThreadWatchdog.enabled=trueand tune itsatoti.server.monitoring.blockedThreadWatchdog.scanIntervalMs. The per-state thread-countThreadStatusMBean and theDirectChunkAllocatorMBean (a duplicate of theMemoryAllocatorMBean already exposed by the Atoti starter) have been removed, along with theactiveviam.apm.enable.all.apmanager.statisticsandactiveviam.apm.node.starter.jmx.enabledproperties. See the migration notes. -
PIVOT-13111 Spring Boot starter: The
atoti-server-apm-starterhas been removed. Its auto-configuration is now provided by the mainatoti-server-starter. See the migration notes. -
PIVOT-13111 Logging: The Logback conversion-rule converters have been moved out of the
apmmodule.LogInstanceConverterandLogThreadConverterare now incom.activeviam.tech.logging.logback.api(artifactcom.activeviam.tech:logging-logback-utils), andLogUserConverteris now incom.activeviam.tech.logging.logback.spring.api(artifactcom.activeviam.tech:logging-logback-spring). Update the fully-qualified class names referenced in yourlogback.xml/logback-spring.xml<conversionRule>declarations. -
PIVOT-13113 Monitoring: Renamed the node-instance-name logging property from
activeviam.apm.node.instance.nametoatoti.server.node.instance.name; its default value also changed fromactivepivottoatoti. This property sets the node name shown in log lines. See the migration notes. -
PIVOT-13324 Observability: Atoti JFR events have been renamed to follow Oracle’s JFR naming and labeling guidelines. Event names now share a flat
atoti.*namespace (e.g.atoti.CubeCommitinstead ofatoti.server.cube.CubeCommitEvent), theEventsuffix has been dropped, and labels use headline-style capitalization. JFR configuration files referencing the previous names must be updated; see JFR events for the new identifiers. -
PIVOT-13613 Filtering API: Conditions are no longer extended-plugin values.
ILogicalConditionandIMatchingConditionno longer extendIExtendedPluginValue, thegetType()method and the plugin-key constants have been removed, theLogicalConditionExtendedPlugin/MatchingConditionExtendedPluginextended plugins are no longer registered, and theAConditionbase class has been removed. See the migration notes. - PIVOT-13635 Build: Atoti Server requires Java 25
-
PIVOT-13720 Default cursor batch size raised from
16to128, which benchmarking identified as a more performant default. The previous value can be restored at startup via theatoti.server.records.cursor.batchSizesystem property. -
PIVOT-13785 Observability: The type of some metric tags has changed from String to a more appropriate type such as
boolean,longorList<String>. -
PIVOT-13804 Continuous GAQ: Continuous GAQ queries no longer require forcing full refreshes through
IAggregatesContinuousHandler#FORCE_FULL_REFRESH_ENGINE_PROPERTY. The service now emits incremental delta batches where possible and full-refresh batches otherwise. -
PIVOT-13836 Cube transaction: Faster updates on bucketing hierarchies when using the new
CopperMultipleElements#mapToObject(SerializableFunction, SerializableBiFunction)overload that accepts a database context factory. When a transaction occurs, only the delta is used to update the members of the bucketing hierarchy, instead of recomputing the whole hierarchy. Any database queries performed inside the mapper must use theIDatabaseContextprovided by the context factory. Note: This only works on the Datastore thanks to its ability to stream its updates. Otherwise, it will fall back to the previous implementation. -
PIVOT-13856 Spring Boot starter: The legacy ActivePivot services
IAdministrationServiceandILicensingService, which mirror the payloads of the removed SOAP web services, are no longer registered as Spring beans by default. Set theatoti.server.service.legacy.enabledproperty totrueto restore them. -
PIVOT-13948 Datastore:
StoreDescription,OptimizationDescriptionandSimpleStoreDescriptionBuilder.keyFieldNames(...)now accept aCollection<String>instead of aList<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-13994 Distribution: Moved
IMultiVersionDataActivePivotfrom packagecom.activeviam.activepivot.dist.impl.api.cubetocom.activeviam.activepivot.dist.datanode.impl.api.cube. - PIVOT-14045 The Netty max message size property no longer accepts fully-qualified class names. Only the public message-type keywords are accepted and an unknown key raises a configuration error.
-
PIVOT-14076 Logging:
AAdvancedPostProcessor.loggeris nowprivateinstead ofprotected; subclasses should use their own logger (e.g.LoggerFactory.getLogger(PivotLoggingConstants.POST_PROCESSOR)). Pivot logger names are now public API inPivotLoggingConstantsand moved to theatoti.server.pivot.*namespace; the oldatoti.server.active_pivot.*names still work viaLoggerSwitcher. -
PIVOT-14086 DirectQuery: Upgraded Apache Arrow to 19.0.0. The Dremio connector now requires the
--sun-misc-unsafe-memory-access=allowJVM flag on JDK 25+. See the migration notes. -
PIVOT-14102 Experimental OR conditions: Return an empty
GetAggregatesQueryresult without executing any query when passing a FALSE condition. -
PIVOT-14102 Experimental OR conditions: Attaching a
FALSEcondition no longer throws and properly returns an empty result. - PIVOT-14102 Query Engine: Return an empty drillthrough result without executing any query when multiple constraints (location, filters, security) fold into a FALSE condition.
-
PIVOT-14109: Spring AI: Bumped
org.springframework.aifrom 2.0.0-M6 to 2.0.0. - PIVOT-14110 DLC: Errors raised while creating a local CSV topic include more information.
- PIVOT-14159 DirectQuery: All SQL-based connectors (Databricks, MS SQL, Redshift, Snowflake, Synapse, generic JDBC) now consistently route connections through their HikariCP connection pool. Previously some connectors opened a new JDBC connection on every query. The Snowflake, generic JDBC, and Databricks connectors gain two new configuration properties: see Snowflake, Generic JDBC, and Databricks connector documentation.
-
PIVOT-14260 Spring Boot starter: Atoti Server now enables virtual threads for HTTP request handling by default (
spring.threads.virtual.enabled=true). Each incoming request gets its own virtual thread instead of borrowing from a fixed-size platform thread pool, preventing health check probes from being starved when the server is under heavy load. The setting can be overridden withspring.threads.virtual.enabled=falsevia environment variable or system property. - PIVOT-14293 Setting a system property for a feature flag that has been removed now logs a WARN message at startup, instead of silently having no effect.
-
PIVOT-14293 DirectQuery: Time-travel emulation is now enabled by default and the
Features.EMULATED_TIME_TRAVELflag has been removed. See Time-Travel Emulation. -
PIVOT-14293 Cube: The AI-based aggregate provider optimizer is now enabled by default and the
Features.AGGREGATE_PROVIDER_OPTIMIZERflag has been removed. See AI-based Optimizer. -
PIVOT-14293 Distributed:
QueryBlockerUtilis now enabled by default and theFeatures.QUERY_BLOCKERflag has been removed. See Distributed Data Roll Over. -
PIVOT-14293 DirectQuery: The DirectQuery local cache is now enabled by default and the
Features.DIRECTQUERY_LOCAL_CACHEflag has been removed. See Create and use a DirectQuery local cache. -
PIVOT-14293 Cube: The dynamic aggregate provider is now enabled by default and the
Features.DYNAMIC_AGGREGATE_PROVIDERflag has been removed. See Dynamic Aggregate Provider. -
PIVOT-14302 Security: The
JwtAuthenticationProviderbean is no longer@Primary. Injections of the bareAuthenticationProvidertype no longer silently resolve to the JWT provider when severalAuthenticationProviderbeans exist: they resolve by parameter name, or fail at startup withNoUniqueBeanDefinitionException. See the migration notes. -
PIVOT-14320 UI starter: Setting the legacy
atoti.atoti-uiproperty prefix now logs a warning pointing to its replacementatoti.server.ui. The legacy prefix still works but is deprecated and scheduled for removal in 6.3.0. -
PIVOT-14375 Cube:
SubCubeProperties#clone()now returnsSubCubePropertiesinstead ofISubCubeProperties. -
PYTHON-908 Cube: The
"NaturalOrder"comparator now truly sorts using natural order, comparing embedded digit sequences numerically instead of character by character, so"file1" < "file2" < "file10". Use"LexicographicalOrder"to keep the previous character-by-character behavior ("file1" < "file10" < "file2"). Levels with no explicit comparator default to"LexicographicalOrder", so this default behavior is unaffected. See the migration notes.
Deprecated
- PIVOT-13676
IActivePivotContentServiceConfigis deprecated and scheduled for removal in 6.3.0. InjectIActivePivotContentServicedirectly as a Spring bean instead of implementing this configuration interface. - PIVOT-13676
IActivePivotManagerDescriptionConfigis deprecated and scheduled for removal in 6.3.0. DeclareIActivePivotManagerDescription(and optionallyIEpochManagementPolicy) as@Beanmethods in your own@Configurationclass directly, without implementing this interface. - PIVOT-13676
IDatastoreConfigis deprecated and scheduled for removal in 6.3.0. DeclareIDatastoreas a@Beanmethod in your own@Configurationclass directly, without implementing this interface. - PIVOT-13676
IRoleContextConfigis deprecated and scheduled for removal in 6.3.0. DeclareIEntitlementsProvideras a@Beanmethod in your own@Configurationclass directly, without implementing this interface. - PIVOT-13676
IDatastoreSchemaDescriptionConfigis deprecated and scheduled for removal in 6.3.0. DeclareIDatastoreSchemaDescriptionas a@Beanmethod in your own@Configurationclass directly, without implementing this interface. - PIVOT-13676
IParameterAwareDatastoreSchemaDescriptionConfigis deprecated and scheduled for removal in 6.3.0. DeclareIDatastoreSchemaDescriptionandIParameterStoreConfigurationas@Beanmethods in your own@Configurationclass directly, without implementing this interface. - PIVOT-13856 Spring Boot starter: The legacy ActivePivot services
IAdministrationServiceandILicensingServiceare deprecated and planned for removal. - PIVOT-13886 REST API: In the query plan retrieval response, the
measuresfield on retrievals is deprecated. UsemeasuresDatainstead. - PIVOT-14073 Cube:
IMember#getHierarchyInfo()andIMember#getLevelInfo()are deprecated since 6.2.0 and planned for removal in 6.3.0. UseIMember#getLevelIdentifier()as a lighter replacement; for a single attribute, preferIAxisMember#getLevelOrdinal()overgetLevelInfo().getOrdinal(). See the migration notes.
Removed
- PIVOT-7426 Datastore: Removed the deprecated
IDatastoreSchemaDescription#getStoreDescriptions()andIDatastoreSchemaDescription#getReferenceDescriptions(). UsegetTables()andgetJoins()respectively. - PIVOT-7426 Datastore: Removed the deprecated
IReferenceDescription#getOwnerStore()andIReferenceDescription#getTargetStore(). UsegetSourceTableName()andgetTargetTableName()respectively. - PIVOT-7426 Datastore: Removed the deprecated
IStoreDescription#getKeyFields(). UsegetKeyFieldNames()instead. - PIVOT-7426 Datastore: Removed the deprecated
ReferenceDescriptionconstructors taking field mappings as aList<? extends IPair<String, String>>. Use the constructor taking aSet<ITableJoin.FieldMapping>instead. - PIVOT-7426 Datastore: Removed the deprecated
StoreDescription(String, Collection<String>, List<? extends IFieldDescription>)constructor. UseStoreDescription.builder()orStoreDescription.simpleBuilder()instead. - PIVOT-7426 Query: Removed the deprecated
QueryExecution(Boolean)constructor. UseQueryExecution.builder()instead. - PIVOT-7426 Post-processors: Removed the deprecated
AAdvancedPostProcessor.OUTPUT_TYPEconstant. UseIPostProcessor.OUTPUT_TYPE_PROPERTYinstead. - PIVOT-7426 Post-processors: Removed the deprecated protected
AAdvancedPostProcessor.getLevel(String)method. UseHierarchiesUtil.getLevel(getActivePivot(), levelDescription)instead. - PIVOT-7426 Post-processors: Removed the deprecated protected
AAdvancedPostProcessor.getHierarchy(String)method. UseHierarchiesUtil.getHierarchy(getActivePivot(), hierarchyDescription)instead. - PIVOT-10061 Parsers: Removed the deprecated
integerandinteger[]parser type keys (including sized and delimited variants). Use the equivalentintandint[]keys instead; the parsing behavior is unchanged. - PIVOT-10152 CSV Source: Removed the deprecated
ICsvParserConfigPolicyinterface (along withLineAndFileLimitCsvParserPolicyandNoRestrictionCsvParserConfigPolicy) and thegetParserPolicy()/setParserPolicy()methods onCsvParserConfiguration. The line-limit, file-limit, and step-sampling functionality they provided has been removed with no replacement. - PIVOT-10152 Parquet Source: Removed the deprecated
IParquetReaderPolicyinterface and theIParquetParserBuilder.withPolicy(IParquetReaderPolicy)builder method. The line-limit, file-limit, and step-sampling functionality they provided has been removed with no replacement. - PIVOT-10152 Parquet Source: Removed
getPublishedRecordCount()andgetSkippedRecordCount()fromIParquetParsingInfo. UsegetRecordCount()instead ofgetPublishedRecordCount();getSkippedRecordCount()always returned0and has no replacement. - PIVOT-10231 Direct Query Snowflake: Removed the deprecated
SnowflakeDialectSettings#arrayAggWrapperFunctionNamesetting and theARRAY_AGG_WRAPPER_FUNCTION_NAMEconnection option used to wrapARRAY_AGGoperations with a custom UDF. The built-in Snowflake SQL function is now faster, so the wrapper is no longer needed. - PIVOT-10724 Removed the deprecated
ADirectQueryApplicationConfig#directQueryDatabase(), useADirectQueryApplicationConfig#database()instead. - PIVOT-10885 Distribution: Removed the deprecated
String-based distributing level APIs.IApplicationDescriptionBuilderWithId#withDistributingFields(String...),IDistributedApplicationDefinition#getDistributingFields(), and theQueryClusterDefinition.DistributedApplicationDefinition(String, List<String>)constructor have been removed; usewithDistributingLevels(LevelIdentifier...),getDistributingLevels(), andQueryClusterDefinition.DistributedApplicationDefinition(String, List<LevelIdentifier>)instead.IApplicationDescriptionBuilderWithId#withoutDistributingFields()has been renamed towithoutDistributingLevels(), andQueryClusterDefinition.DistributedApplicationDefinitionV2has been renamed toQueryClusterDefinition.DistributedApplicationDefinition. - PIVOT-12150 Removed the
rangeSharingaggregate provider property (IAggregateProviderDefinition.RANGE_SHARING). Range sharing is still available through theIQueryExecutioncontext value. - PIVOT-12455 Versioning: Removed
IVersionLifecycleHandlerfrom the public API. - PIVOT-13035 Removed the deprecated
SnowflakeProperties.SnowflakePropertiesBuilder#additionalOption(SFSessionProperty, String), useSnowflakeProperties.SnowflakePropertiesBuilder#additionalOption(String, String)instead. - PIVOT-13113 Monitoring: Removed the APM startup configuration dump (
ExtraLoggingConfig), which logged all resolved Spring environment properties and the classpath on thecom.activeviam.apm.springlogger, along with itsactiveviam.apm.config.hide.properties.patternproperty. Use Spring Boot’s Actuatorenv/configpropsendpoints or the--debugstartup flag instead. - 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
ICsvSourceConfigurationinterface. UseCsvSourceConfigurationdirectly. - PIVOT-13525 Removed
ICsvParserConfiguration,IFileParserConfigurationandFileParserConfiguration. UseCsvParserConfigurationdirectly. - PIVOT-13526
DataTablehas been removed. UseStoreDescriptionfor a datastore table or aTableDescriptionfor a DirectQuery table. - PIVOT-13529 Removed the deprecated
IParquetReaderFactory#create(InputFile, ReadSupport, org.apache.hadoop.conf.Configuration)overload. Use the overload taking aParquetConfigurationinstead; wrap an existing HadoopConfigurationwithnew HadoopParquetConfiguration(...). - PIVOT-13532 Distribution: Removed the deprecated concealed measures feature. The
withConcealedMeasuresbuilder methods,IDataClusterDefinition#getConcealedMeasures/setConcealedMeasures, and the now-redundantwithAllMeasuresbuilder step have been removed. Concealing hierarchies and branches is still supported. - PIVOT-13785 Removed
IQuery#collectAdditionalSpanAttributes(BiConsumer<String, String>)and its implementations. - PIVOT-13811 Records: Removed the deprecated
IRecordFormat#dictionarizeandIRecordFormat#undictionarizestatic methods from the public API. They were intended only for internal use and have no public replacement. - PIVOT-13913 Direct Query Databricks: Removed the deprecated feature of UDAF for vector aggregation.
- PIVOT-14016 Snowflake: Avoid a lag bug from the Snowflake platform triggered by interaction between incremental refresh and time travel. Remove the old workaround
SnowflakeDatabaseSettings.lastAlteredMargin. - PIVOT-14017 Removed the deprecated
StartBuilding.Builder#withEpochManager(IEpochManager)method. UseStartBuilding.Builder#withEpochPolicy(IEpochManagementPolicy)instead. - PIVOT-14019 Removed the deprecated
PersistedBuilder#lockOptions(boolean)method, which was public by mistake. UsePersistedBuilder#databaseLocks(LockOptions)instead. - PIVOT-14020 Removed the unusable
IMessengerDefinition.AGENTSandIMessengerDefinition.SEPARATORconstants. AllIDistributedAgentimplementations are internal API, so the constants had no supported use. - PIVOT-14025 Removed the deprecated duplicate APIs in the
io.atoti.runtime.api.measuresandio.atoti.server.common.api.pluginspackages. Use theircom.activeviam.atoti.application.api.measuresandcom.activeviam.atoti.server.common.api.pluginscounterparts. - PIVOT-14026 Removed the public method
ICanBuildCommonCubeDescription#withQueryExecutor(), which let configurations declare a custom query executor. The query executor is no longer user-replaceable. Use theActivePivotQueryStartedandActivePivotQueryDonehealth events to monitor queries. - PIVOT-14028 Distribution: Removed the deprecated
IMultiVersionDistributedActivePivot#unloadMembersFromDataNodemethod, along with its internalUnloadMemberMessage, theIMessengerDefinition#UNLOAD_MEMBERS_MESSAGE_TIMEOUTproperty and the relateddistribution.unload_members_from_data_node.*metrics. UseIMultiVersionDataActivePivot#maskMembersandIMultiVersionDataActivePivot#unmaskMembersinstead. - PIVOT-14035 Removed the deprecated 4-argument constructor of
ActivePivotTransactionCommittedEvent. Use the 6-argument constructor instead, passing-1, -1for the start and commit timings when they are unknown. - PIVOT-14038 Removed the deprecated
IFieldDescriptionaccessorsisNullable(),supportEmptyString(),getDefault()andgetContentClass(). UsegetType()with the correspondingIFieldTypemethods (isNullable(),supportEmptyString(),getDefaultValue(),getDataClass()) instead. - PIVOT-14039 Removed the deprecated
BITMAP_PLUGIN_TYPE,JIT_PLUGIN_TYPEandLEAF_PLUGIN_TYPEconstants fromIBuildableAggregateProviderDescriptionBuilder. Use the equivalents onIAggregateProviderDefinition. - PIVOT-14040 Removed
IMultiVersionDistributedActivePivot#getDistributedApplicationInformation(). UsegetApplicationNames()to list the distributed application names. - PIVOT-14041 Cube Filter: Removed
CubeFilter.getSubCubeFromContext(IContext)(deprecated since 6.1; useCubeFilter.getSecurityAndFilter(IContext)instead) andCubeFilter.intersectWithSecurity(ICubeFilter, IContext)(deprecated since 6.1; no public replacement). - PIVOT-14044 Removed the deprecated
IGenericAggregationFunction.SUM_PRODUCT_FUNCTION_PLUGIN_KEYconstant. UseIMultiSourceAggregationFunction.SUM_PRODUCT_FUNCTION_PLUGIN_KEYinstead. - PIVOT-14054 Query API: Removed the deprecated constructors of
GetAggregatesQueryandDrillthroughQuery. Use their respective builders instead. - PIVOT-14054 CSV Source: Removed the deprecated constructors of
CsvParserConfigurationandCsvSourceConfiguration. UseCsvParserConfiguration.builder()andCsvSourceConfiguration.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. Usecom.activeviam.springboot:atoti-server-application-starterinstead. - PIVOT-14097 Removed the empty Maven module
com.activeviam.activepivot:activepivot-ext. Importcom.activeviam.activepivot:activepivot-coreand optionallycom.activeviam.activepivot:activepivot-dist-implinstead. - PIVOT-14102 Experimental OR conditions: Removed interfaces
ISecurityCubeRestrictionandIQueryBasedCubeRestriction: directly use their respective implementations. - PIVOT-14306 Database: Removed the deprecated
IDatabaseSchema#getDatabaseId()method. - PIVOT-14307 Datastore: Removed the deprecated
SimpleStoreDescriptionBuilder#keyFields(List<String>)andkeyFields(String...)methods. UsekeyFieldNames(...)instead. - PIVOT-14315 Aggregation: Removed the deprecated
IHistory#getContent()method. Useread()or thereadXxx()accessors instead. - PIVOT-14324 MVCC: Removed the deprecated
IEpochManager#IDENTIFIERconstant, which was only used internally. - PIVOT-14325 Vectors:
EmptyVectoris nowfinaland no longer implementsCloneable(its deprecatedclone()method is removed); itsEMPTY_VECTORSmap andcomponentTypefield are no longer public. UseEmptyVector#emptyVector(int)to obtain an instance andgetComponentType()to read the component type. - PIVOT-14345 Types: Removed the deprecated
Types.TYPE_OBJECT_NOT_NULLABLE,Types.TYPE_DICandTypes.TYPE_DIC_NULLABLEconstants. UseTypes.TYPE_OBJECT_NON_NULLABLE,Types.TYPE_OBJECT_DICandTypes.TYPE_OBJECT_DIC_NULLABLEinstead. - PIVOT-14347 REST: Removed the deprecated
version()element of the@AtotiRestControllerannotation. Useversions()instead. - PIVOT-14373 Partitioning: Removed the deprecated legacy
hashpartitioning function name. Usemoduloinstead: a partitioning expression such ashash2(id)must now be writtenmodulo2(id). - PIVOT-14374 Properties: Removed deprecated
ActiveViamPropertyconstants:THROW_ON_MISSING_DATA_NODE_REPONSE(misspelled) — useTHROW_ON_MISSING_DATA_NODE_RESPONSEinstead. Both mapped to the sameactiveviam.distribution.query.throwOnMissingResponsekey, so JVM configuration is unaffected.CSV_PARSING_REPORT_MAX_ANOMALIES— set the maximum number of reported parsing anomalies throughCsvSourceConfiguration.builder().maxParsingAnomalies(int)instead.LARGE_MDX_SET_OPTIMIZATION— control the large-MDX-set optimization through theIQueryExecutioncontext value (QueryExecution.builder().largeMdxSetOptimizationEnabled(true)) instead. When unset, the optimization is disabled.ENABLE_MMAP_TRACKING_PROPERTY— native-memory allocation and release JFR events are now always emitted, so theactiveviam.mmap.trackingopt-in is no longer needed. Capture them with a JFR recording.
- PIVOT-14374 Distribution: Removed the
activeviam.distribution.cube.throwOnDifferentMeasureNamesproperty. All data cubes within the same application must now expose the same measure names. - PIVOT-14375 Cube: Removed the deprecated
SubCubeProperties#getSubCubeTree(String dimension, String hierarchy)method. - PIVOT-14377 Content service: Removed the deprecated 2-argument
ActivePivotContentServiceBuilder…needInitialization(String calculatedMemberRole, String kpiRole). Use the 3-argument overloadneedInitialization(String calculatedMemberRole, String kpiRole, String namedSetRole), passing the role allowed to create named sets as the third argument. - PIVOT-14379 Cube: Removed the deprecated
IAxisHierarchyVersionfrom the public API. UseIAxisHierarchyinstead. - PIVOT-14380 Vectors: Removed the deprecated
ZeroVectorfrom the public API. UseSameValueVectorUtilsinstead, e.g.SameValueVectorUtils#doubleVector(10, 0.0).
Fixed
- PIVOT-9136 Content Server: Fixed a race condition on websocket unregistration that lead to the error
java.lang.IllegalStateException: The WebSocket session [id] has been closed and no method (apart from close()) may be called on a closed session - PIVOT-9136 Content Server: Closing a remote content listener no longer logs a spurious
BadArgumentExceptioncaused by trying to unregister it again after its WebSocket session has already been closed. - 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
HierarchyIdentifierobjects. - 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.
- PIVOT-14112 Cube: Fixed the leaf and bitmap aggregate providers returning incorrect results when
SubCubeProperties.grantMembersuses customIConditionas path elements on a multi-level hierarchy. - PIVOT-14123 Continuous GAQ: Full-refresh Arrow streams no longer expose measures the query did not request.
- PIVOT-14140 Database:
ICursor#toTuples()andICursor#toRecords()no longer append all-null padding rows when materializing a cursor that returns fewer rows than the batch size for a batch (for instance, when a filter has to be evaluated on records joined across several stores). The materialized result now honors the row count returned bytransfer. - PIVOT-14154 Database cache: Feeding the cache no longer holds the cached table’s transaction lock during the external-database read, so a slow or stalled feed no longer blocks other queries on the same table or leaves it locked indefinitely. Canceling a query that triggered a feed now aborts the in-flight external read, and a query waiting on another query’s feed stops waiting when canceled. A canceled or failed feed no longer prevents a later query from feeding the same partition. If the cancellation arrives while the rows are being written to the cache, that feed still completes, so the partition may stay cached even though the query was canceled; this is intended, as the cached data is valid and benefits later queries.
- PIVOT-14183 Datastore: A continuous selection whose condition filters on a field reached through a reference now receives the same initial view regardless of when the listener subscribes. Previously, subscribing to an already-populated datastore could drop rows whose reference did not resolve, instead of keeping them with the referenced field’s default value.
- PIVOT-14185 Datastore: A transaction whose
commitTransaction()orrollbackTransaction()throws (for example on a duplicate key) no longer leaves a lock held. Previously this leaked lock caused subsequent schema updates to hang indefinitely. - PIVOT-14226 Distribution: Releasing a concealed branch on a data node no longer throws
IllegalStateException. - PIVOT-14264 Database:
ICursor#toTuples()andICursor#toRecords()no longer throwUnsupportedOperationExceptionon DirectQuery result cursors or on aggregate and distinct query result cursors. - PIVOT-14277 REST API: Endpoints reading a raw
@RequestBody Stringfrom anapplication/jsonrequest (such as the Content ServerPOST/PUT /files) no longer fail with HTTP 400, this issue was introduced by the Spring Boot 4 upgrade. - PIVOT-14282 MDX: Continuous queries that use the
Exceptfunction in a subselect no longer trigger a full recomputation of the query on every update. - PIVOT-14299 Datastore: Fixed a transaction performance regression introduced in 6.1.14. The partitions of a transaction were published sequentially on a single thread, which could significantly slow down data loads with many store partitions.
- PIVOT-14301 DirectQuery Databricks: Connection string OAuth parameters are now correctly forwarded to the Databricks driver.
- PIVOT-14313 Cube: Fixed a JIT deoptimization storm that could significantly slow down queries when a subcube filter combines several accepted values with
ORon the same hierarchy level. The condition is now collapsed into an equivalentINcondition instead of falling back to a full member enumeration. - PIVOT-14334 DirectQuery: JDBC connection pools no longer eagerly open connections up to
maximumPoolSize. Connections are now opened on demand:minimumIdledefaults to0, and the value is still overridable through the HikariCP configuration file. - PIVOT-14371 Experimental OR conditions: A query slicing the Epoch hierarchy on a single branch inside a crossjoin no longer fails with “OR filter on Epoch”.
- PIVOT-14382 Packaging: The
activepivot-ext-<version>-sources.zipfile published to Artifactory now contains the example post-processor sources it is meant to hold. It had previously been published empty. - PYTHON-913 CSV Source:
LoggingCsvHealthEventHandlernow accepts a customITagAcceptorvia a new constructor, consistent with the Parquet and JDBC equivalents. - PYTHON-923 Monitoring: Setting a health log tag to
OFFin theactiveviam.health.logspecification no longer throws aNullPointerException. TheOFFrule now correctly silences its tags, and an exactOFFtag takes precedence over a less restrictive matching wildcard. - PYTHON-942 Parquet source: Fixed an
UnsupportedOperationExceptionwhen loading a Parquet source containing more than 1024 records per file. The internal block list was immutable and could not be recycled once a full block had been flushed.
Security
- PIVOT-13914: Upgraded to Spring Boot 4.1.0.
- PIVOT-13980 Security: Removed the
activeviam.jwt.*application properties, deprecated since 6.1. Use theatoti.jwt.*equivalents instead. Theexpirationproperty is aDuration. The available formats are described in Spring’s documentation. For this property, a unitless integer will represent Seconds. - PIVOT-14285 Security: Excluded
org.apache.hadoop:hadoop-yarn-client(transitive oforg.apache.hadoop:hadoop-mapreduce-client-core) to fix the JLine Telnet server advisories GHSA-2r2c-cx56-8933 and GHSA-47qp-hqvx-6r3f. The YARN client is only needed to submit MapReduce jobs to a YARN cluster, which Atoti never does. - PIVOT-14395 Security: Pinned
org.apache.tomcat.embedto 11.0.24 (ahead of Spring Boot 4.1.0) to fix CVE-2026-55276, CVE-2026-53434 and CVE-2026-53404. - PIVOT-14395 Security: Pinned
io.nettyto 4.2.16.Final (ahead of Spring Boot 4.1.0) to fix CVE-2026-44891. - PIVOT-14395 Security: Pinned
org.apache.httpcomponents.core5:httpcore5andorg.apache.httpcomponents.core5:httpcore5-h2to 5.4.3 (ahead of Spring Boot 4.1.0) to fix CVE-2026-54399 and CVE-2026-54428. - PIVOT-14395 Security: Pinned
io.airlift:aircompressor(transitive oforg.apache.parquet:parquet-hadoop) to 2.0.3 to fix CVE-2025-67721. - PIVOT-14395 Security: Pinned
org.mozilla:rhino(transitive of Activiti) to 1.9.1 to fix CVE-2025-66453. - PIVOT-14395 Security: Pinned
org.mybatis:mybatis(transitive of Activiti) to 3.5.19 to fix CVE-2020-26945. - PIVOT-14395 Security: Excluded
com.sun.mail:javax.mail(transitive of Activiti throughorg.apache.commons:commons-email) to fix CVE-2025-7962, which has no fixed version. ActiveMonitor does not use Activiti’s email service task.