Skip to main content

Changelog

For user-facing changes, refer to the What's New? page.

The format is based on Keep a Changelog and this project adheres to Romantic Versioning.

The 6.1 branch forked the 6.0 branch from version 6.0.14.

See the 6.0 changelog for changes before the fork.

6.1.1

2024-10-17

Added

  • PIVOT-9968 Provide a way to pass an IMemoryCollector to IInternalMemoryMonitored#getMemoryStatistics(memoryCollector) in order to prevent the count of duplicated blocks.
  • PIVOT-6558 Added the AI-based aggregate provider recommendation as an experimental feature. See the associated documentation.
  • PIVOT-9978 Add the method Registry#setType(Class, Class) to programmatically register an Atoti Type.
  • PIVOT-10285 JDBC Source: Added a method IJdbcSourceBuilder.parsingReportEnabled(boolean) to enable the reporting of parsing anomalies.
  • PIVOT-10338 Added OpenedTransactionTestWrapper to facilitate transaction on specific fields for tests.
  • PIVOT-10367 Cloud source API: Added a CloudMultipleEntitiesCsvTopic to read multiple CSV files explicitly defined from a cloud storage.
  • PIVOT-10409 ActiveViam properties: Added activeviam.activepivot.ensureSerializableMeasures to ensure every measure is serializable.
  • PIVOT-10516 MBean for stream management is now part of the Atoti Server starter.

Changed

  • PIVOT-4809 Copper: Copper.storeLookup no longer creates intermediate measures for constant values.
  • PIVOT-9589 Added a short description and error id to REST exceptions
  • PIVOT-9724 Update the Content Service Name Generator to generated fixed prefix based of the Property activeviam.contentService.nameGenerator.size.
  • PIVOT-10103 Loading invalid Calculated Members or KPIs from the Content Server log instead of throwing.
  • PIVOT-10117 Improve performance of some vector operations. This can mostly be felt in the primitive retrievals, or in the first post processor performing vector operations on top of said retrievals.
  • PIVOT-10304 Update the condition to import the DatabaseRestServicesConfig in the starter configuration from having a IActivePivotManager Bean from having a IDatabaseConfig Bean.

Deprecated

  • PIVOT-9724 Content Service Property: Deprecated activeviam.contentService.nameGenerator.defaultSize, use instead activeviam.contentService.nameGenerator.size.
  • PIVOT-10188 CSV Source API: Deprecated ICsvParserConfiguration, IFileParserConfiguration, FileParserConfiguration, use instead CsvParserConfiguration.
  • PIVOT-10188 CSV Source API: Deprecated all constructors and setters of CsvParserConfiguration, use instead CsvParserConfiguration#builder.
  • PIVOT-10142 Source API: Deprecated ITranslator#setColumnCalculators() and all the empty constructors of its implementation classes (ATranslator, AColumnarTranslator, AHeaderTranslator, HeaderColumnarTranslator, IdentityTranslator, PojoTuplizer, MapTranslator, TupleTranslator). Use instead the new constructors with the list of column calculators.
  • PIVOT-10142 Source API: Deprecated ATranslator, use instead ATranslatorWithColumnCalculators. It is the same class with a more explicit name to underline the fact that it is a translator that uses column calculators.
  • PIVOT-10142 CSV Source API: Deprecated IHeaderTranslator and all its methods in the implementation classes (AHeaderTranslator, HeaderColumnarTranslator), those are made internal.
  • PIVOT-10142 CSV Source API: Deprecated AHeaderTranslator#setTranslator() and AHeaderTranslator#setMaxWaitHeaderTime(), use instead the constructor with the corresponding parameters in the implementation class HeaderColumnarTranslator.
  • PIVOT-10219 Misc: Deprecated ZeroVector. Please use the methods in SameValueVectorUtils to create such a vector, e.g. SameValueVectorUtils#doubleVector(10, 0.0).
  • PIVOT-10231 DirectQuery: Deprecated SnowflakeDialectSettings#arrayAggWrapperFunctionName(). It's better not to set it, so the queries use the SQL built-in function ARRAY_AGG (which has been improved by Snowflake).
  • PIVOT-10256 CSV Source API: Deprecated CsvSourceFactory and its associates methods CsvSourceFactory#create. Use instead ICsvSource#builder or ICsvSource#builderForLocalFiles.
  • PIVOT-10258 Source API: Deprecated IMapTranslator.
  • PIVOT-10261 Source API: Mark objects MapTranslator, MapTuplizer, PojoTuplizer as internal.
  • PIVOT-10261 Source API: deprecate ActiveViamProperty.PARSING_REPORT_ENABLED and ActiveViamProperty.CSV_PARSING_REPORT_MAX_ANOMALIES. You can define those properties in the CsvSourceConfiguration#builder() or in IJdbcSource.builder().
  • PIVOT-10284 JDBC source API: Deprecated IJdbcTopic. Use instead the constructor of the concrete implementation JdbcTopic.
  • PIVOT-10284 JDBC source API: Deprecated JdbcTopic constructors. Use instead the fluent builder JdbcTopic#builder().
  • PIVOT-10284 JDBC source API: Deprecated JdbcSourceBuilder#withAppendBatchSize(). This can now be configured at the topic level: JdbcTopic#builder().
  • PIVOT-10353 CSV Source API: Deprecate IColumnarTranslator#setHeaderCheck and IColumnarTranslator#getColumnPosition. As IColumnarTranslator thus becomes a marker interface, it will also be removed from the public API.
  • PIVOT-10367 Cloud source API: Deprecated ICloudCsvTopic and its method ICloudCsvTopic#setPattern(). Use instead the constructor of the concrete implementation CloudDirectoryCsvTopic with the pattern as a parameter.
  • PIVOT-10369 Cloud source API: Deprecated CloudFetchingConfig setters and constructors. Use instead the builder CloudFetchingConfig.builder().

Removed

  • PIVOT-10376 Cube builder: A JIT aggregate provider could accept a custom partitioning and ignore it. It will now throw during the build.

Fixed

  • PIVOT-7536 Misc: Fixed issue fill(-1.0) method for chunks of double and floats.
  • PIVOT-10075 Pivot: Attempt to cache the intersections of primitive retrievals' filters with provider' filters to improve performance of queries with multiple primitive retrievals.
  • PIVOT-10203 The queries time limit of the Drillthrough queries was not propagated to the database.
  • PIVOT-10220 Pivot: Fix UDAFs and Basic Post-Processors evaluation. They could be called on locations where their underlying measures had no values (but where contributors.COUNT was not null).
  • PIVOT-10312 DirectQuery: Fixed issue with native time-travel on Snowflake and Databricks, which could not be enabled.
  • PIVOT-10313 DirectQuery: Implementations of IDatabaseSettings are now fully immutable.
  • PIVOT-10385 Some queries where not partitioned with using the JIT aggregate provider on DirectQuery.
  • PIVOT-10407 Concurrency: Some MDX queries could lead to an infinite loop of IllegalStateException.
  • PIVOT-10434 Observability: Fixed multiple registrations of gauge metrics. Issue was showing up in the logs as Instrument ... has recorded multiple values for the same attributes.
  • PIVOT-10453 Fix issue in NON EMPTY Crossjoin causing empty result.
  • PIVOT-10469 Pivot: Improved performance of DrilldownMember. This will improve queries made by Excel when using the Collapse feature.

Dependencies

  • PIVOT-10410 Bump org.springframework.boot:spring-boot-dependencies from 3.2.9 to 3.2.10.
  • PIVOT-10410 Bump com.google.cloud:libraries-bom from 26.45.0 to 26.47.0.
  • PIVOT-10410 Bump software.amazon.awssdk:bom from 2.27.17 to 2.28.10.
  • PIVOT-10410 Bump com.clickhouse:clickhouse-http-client and com.clickhouse:clickhouse-data from 0.6.4 to 0.6.5.

6.1.0

2024-09-06

Added

  • PIVOT-4994 Added new method IDataClusterDefinition.setConcealBranches() to hide the branches of the data cube from the query cubes.
  • PIVOT-6117 SameValueVector stores a vector, whose elements are all the same. Its usage is similar to ZeroVector.
  • PIVOT-6514 Added an array formatter for measures. See the associated documentation.
  • PIVOT-6525 DirectQuery: introduce mechanism to incrementally refresh cube with data from external database. See com.activeviam.directquery.application.api.Application#refresh(ChangeDescription) and associated documentation.
  • PIVOT-7933 DirectQuery Aggregate Tables is now an official feature and is no longer experimental.
  • PIVOT-8186 Added a new class DimensionIdentifier that uniquely identifies a dimension within a cube. This object is accessible from IDimensionInfo.
  • PIVOT-8402 Added a public test API in the form of the Maven module com.activeviam:atoti-server-test.
  • PIVOT-8408 The post processor output type can now be configured using BuildablePostProcessorBuilder.withOutputType(String type).
  • PIVOT-8478 Added a new class com.activeviam.pivot.server.spring.api.Services to create IDatabaseService.
  • PIVOT-8525 Added .hideGrandTotals(int... axisOrdinals) to the shared context mdx builder.
  • PIVOT-8655 The array readers of the Copper API now have a size() method.
  • PIVOT-8813 Added IDatabase.getVersion(long) to retrieve a past version.
  • PIVOT-8830 Added Registry.parseAnnotatedClasses() and Registry.scanPackages() to set the registry contribution provider.
  • PIVOT-8903 Added method ICubeFilter.isHierarchyRestricted(HierarchyIdentifier).
  • PIVOT-8918 Added FieldTypeBuilder (created with FieldType.builder()) to create a FieldType.
  • PIVOT-8919 Added a warning message when using an old ActiveViamProperty that no longer exists.
  • PIVOT-8980 Add an error message to signal that, in one cluster, a hierarchy is slicing in some data nodes but non-slicing in other data nodes.
  • PIVOT-8994 Added MemoryUtil to get info about direct memory consumption.
  • PIVOT-9505 Ability to use comparison operations (<, <=, > and >=) in Aggregate Tables.
  • PIVOT-9511 Added method ICanStartBuildingHierarchy.withHierarchy(IAxisHierarchyDescription) to add a hierarchy from its description.
  • PIVOT-9653 The names of the Databricks UDAFs on vectors can be overridden (see Databricks documentation).
  • PIVOT-9708 Information about aggregate providers can be retrieved via IActivePivotVersion#getAggregateProviderStatistics and IActivePivotVersion#getPartialAggregateProviderNames.
  • PIVOT-9829 Added getName to IAggregateProviderDefinition.
  • PIVOT-9875 Optimized creation of vector allocation settings.
  • PIVOT-9929 The constructor AxisLevelDescription(levelName) was restored.
  • PIVOT-9999 Dedicated data structure to hold nullable boolean data. This reduces memory usage for such data, and also fixes a bug when frequent value compression was used on such data.
  • PIVOT-10003 DirectQuery: emulated time-travel is available for all databases as an experimental feature. See the associated documentation.
  • PIVOT-10132 The number of available processors on the current machine can be retrieved using PlatformUtil.getProcessorCount().
  • PIVOT-10138 Added methods IParser.create, IParser.createPluginKey, IParser.createPluginKeyForVector, IFormatter.create and IFormatter.createWithLocale.
  • PIVOT-10171 Add a copy method on IRecordReader. This is useful to keep a copy of the current record when iterating on a ICursor.

Changed

  • PIVOT-5228 Renamed fields, methods and constants in ALocationShiftPostProcessor. See the migration notes.
  • PIVOT-5848 The property IAnalysisHierarchy#LEVEL_TYPES_PROPERTY has been moved to IAxisLevelDescription#LEVEL_TYPE_PROPERTY and is to be used on a per-level basis (see migration notes).
  • PIVOT-6743 Renamed ActiveUIContentServiceUtil to AtotiUiContentServiceUtil.
  • PIVOT-7045 In the data source APIs, the MapTuplizer, used to transform a record written as a map columnName to value, now has a single generic type V instead of two. This generic type is still the type of the values. MapTuplizer's contract and implementation are otherwise unchanged.
  • PIVOT-7255 When parsing level descriptions, leading and trailing spaces are no longer trimmed.
  • PIVOT-7285 IRefreshable#fullRefresh is now called IRefreshable#refresh. IRefreshable#restart restarts the cube.
  • PIVOT-7424 Description objects are no longer boxing primitive type attributes when it is not necessary.
  • PIVOT-7541 Use Java 21 as the new baseline.
  • PIVOT-7605 Renamed the license environment variable from ACTIVEPIVOT_LICENSE to ATOTI_LICENSE. Renamed the license system property from activepivot.license to atoti.license.
  • PIVOT-7653 Aggregation function's IHistory no longer implement IClone. Users are instead required to implement a deepCopy() method instead.
  • PIVOT-7762 Renamed Types#isDictionary(int) to Types#isDictionarized(int).
  • PIVOT-7762 Renamed IFieldType#supportsEmptyString() to IFieldType#supportEmptyString().
  • PIVOT-7762 Renamed Types.TypeInformation#canBeEmptyString to Types.TypeInformation#supportEmptyString.
  • PIVOT-7762 Renamed StoreFieldMonitor#getIsDictionary() to StoreFieldMonitor#getIsDictionarized().
  • PIVOT-7857 com.activeviam.database.api.query.IStreamListViewListener methods has no more default do nothing implementation. User has to choose the default implementation.
  • PIVOT-7982 Changed the signatures of several testing methods. They now use LevelIdentifier instead of level description.
  • PIVOT-7982 Change the signatures of several methods to configure the Mdx context. They now use DimensionIdentifier, HierarchyIdentifier or LevelIdentifier instead of unique names.
  • PIVOT-7983 EpochFormatter is now internal and is the default epoch level formatter for IEpochDimensionDescription.
  • PIVOT-7983 IReferenceDescription.getFieldsMapping() has been renamed IReferenceDescription.getFieldMappings().
  • PIVOT-8024 The column type TIMESTAMPTZ in Redshift is discovered as StandardTypes.TIMESTAMP instead of StandardTypes.ZONED_DATE_TIME.
  • PIVOT-8063 The required configuration file tracing.properties was removed. The tracing configuration is now pulled from the standard Spring environment. Projects putting properties in this file shall consider migrating them to the standard configuration files like application.yml or application.properties.
  • PIVOT-8167 new ParquetParserBuilder(datastore) is now internal. Use IParquetParser.builder(datastore) instead.
  • PIVOT-8185 Moved static CopperLevel#at([...]) method to Copper#levelsAt([...]) and CopperLevel class methods level.at([...]) and level.atValue([...]) to static methods, respectively Copper#levelAt(level,[...]) and Copper#levelAtValue(level,[...]).
  • PIVOT-8186 The ICubeFormatter contract was modernized to promote LevelIdentifier and HierarchyIdentifier and remove some ambiguity. ACubeFormatter was removed.
  • PIVOT-8186 The Statistics - Queries - total count MBean attribute has been renamed Nb of running queries.
  • PIVOT-8186 The constructor for IDrillthroughExecutor now only has one parameter: IDrillthroughSession, the Properties parameter was removed. It is now in IDrillthroughSession.getProperties().
  • PIVOT-8189 The activeviam.mdx.result.aggresiveAxisPositionLimitCheck property is now replaced with MdxContext.setAggressiveAxisPositionLimitCheck and is enabled by default.
  • PIVOT-8192 IPluginValue#key() now returns a String instead of an Object.
  • PIVOT-8199 ICatalog is no longer a QuartetType.
  • PIVOT-8244 Merged IReadableDatastore in IDatastore.
  • PIVOT-8245 Replaced ITransactionalWriter.getMetadata() and IStoreMessageChannelFactory.getSchemaMetadata() that returned an IDatastoreSchemaMetadata by respectively ITransactionalWriter.getSchemaDescription() and IStoreMessageChannelFactory.getSchemaDescription() that return an IDatastoreSchemaDescription.
  • PIVOT-8246 JungSchemaPrinter has been moved to its own maven module datastore-schema-printer in the package com.activeviam.database.datastore.schemaprinter.api.
  • PIVOT-8283 Queries on a horizontally distributed cluster will now be distributed up to the first non-distributed post-processor of the operations chain (versus being distributed from the first distributed post-processor of the chain). The old behavior can be obtained by using the DISTRIBUTION_BEHAVIOR_OVERRIDE_PROPERTY property (see the migration notes)
  • PIVOT-8284 IDataStreamer.registerListStreamView uses now RegistrationOptions to wrap the options of the registration.
  • PIVOT-8285 QFSRegistry, QfsRegistryCreator and IRegistryCreator have been renamed and are now internal. See migration notes
  • PIVOT-8304 The CubeTesterBuilderExtension is now TesterBuilderExtension. See the migration notes to properly register the new extension.
  • PIVOT-8333 Changed naming convention: ExternalDatastoreRetrieval is now called DatabaseRetrieval. This change prevents any confusion between database retrievals that access an external database, through the DirectQuery feature, and retrievals that are associated with Copper joins, and were previously called External.
  • PIVOT-8333 Changed ActivePivot REST API version from 8 to 9x1 due to breaking changes.
  • PIVOT-8377 ISelectionDescriptionBuilder.withField(String name) has been de-deprecated. However, the name argument must now be a field name only, and not a field expression.
  • PIVOT-8396 JDBCColumnParser has been renamed JdbcDefaultColumnCalculator.
  • PIVOT-8404 Migrated AWS cloud source to AWS Java SDK v2. In practice, that implies relying on software.amazon.awssdk instead of com.amazonaws.
  • PIVOT-8404 Cloud sources: The generics parameters in the API interface have been modified (ICloudEntity, ICloudEntityPath, ICloudDirectory, ...) in order to be less tied to the cloud vendor sdk implementation.
  • PIVOT-8472 Condition#relative is renamed to Condition#unknown, the behavior stays the same.
  • PIVOT-8514 [Measures].[Measures] has been renamed Measures in all CSV export files.
  • PIVOT-8590 In cube builder fluent API, method .withFilter(...) was renamed to .withFactFilter(...).
  • PIVOT-8621 The signature of INumaNodeSelectorFactory.create has been changed.
  • PIVOT-8647 The value of the STREAM_MEASURE_PROPERTY property name in NeighborValuePostProcessor and ATimeLinePostProcessor has been changed to IPostProcessor.UNDERLYING_MEASURES property name for consistency value.
  • PIVOT-8656 IReferenceDescription#getFieldMappings() now returns a Set<FieldMapping>.
  • PIVOT-8656 The constructors of DatastoreSchemaDescription now require a List of IStoreDescription instead of a Collection.
  • PIVOT-8658 ICursorConverter can now be applied on a cursor by calling ICursorConverter.convertCursor()
  • PIVOT-8663 Methods of QfsWebUtils have been migrated to com.activeviam.web.core.api.IUrlBuilder.
  • PIVOT-8663 Constructor of JwtAuthenticationProvider has been replaced by a builder available using JwtAuthenticationProvider#builder().
  • PIVOT-8663 Constructor of JwtService has been replaced by a builder available using JwtService#builder().
  • PIVOT-8664 com.qfs.server.cfg.content.IActivePivotContentServiceConfig does not defined anymore the bean contentService from its ActivePivotContentService. It must be defined manually beforehand.
  • PIVOT-8739 Renamed QuartetExtendedPlugin, QuartetExtendedPluginValue, QuartetPlugin, QuartetPluginValue and QuartetType into AtotiExtendedPlugin, AtotiExtendedPluginValue, AtotiPlugin, AtotiPluginValue and AtotiType.
  • PIVOT-8777 AAnalysisHierarchyV2 has been renamed AAnalysisHierarchy.
  • PIVOT-8797 Renamed all JDBC source related classes from JDBC to Jdbc (e.g. IJDBCSource becomes IJdbcSource)
  • PIVOT-8797 Renamed all CSV source related classes from CSV to Csv (e.g. ICSVSource becomes ICsvSource)
  • PIVOT-8798 Renamed QfsResultSetRow to ResultSetRow.
  • PIVOT-8798 Custom aggregation implementing IGenericAggregation no longer need to implement createChunkFactory. The chunk creation is now automatically handled by Atoti. The createChunkFactory method has been replaced by the simpler method AggregationChunksSetting getChunksSetting(). See the custom aggregation documentation for more details on this.
  • PIVOT-8809 IIterableAggregatesRetrievalResult.transferValues now takes a IWritableRecord instead of Record or Object[].
  • PIVOT-8830 Registry.getRegistry() and Registry.setContributionProvider() methods have been moved to an internal class. Registry#initialize is now the single point of entry to the registry.
  • PIVOT-8860 AStoreStream now returns records in plain (undictionarized) format. The resultFormat field now holds plain (undictionarized) IRecordFormat of the query result.
  • PIVOT-8914 Static constants defined in IDistributedMessenger are now available in com.activeviam.activepivot.core.intf.api.description.IMessengerDefinition.
  • PIVOT-8918 IFieldType no more holds information about dictionarization.
  • PIVOT-8918 Renamed IFieldType.getDataType() to IFieldType.getUndictionarizedDataType().
  • PIVOT-8918 Renamed FieldType.ofAny(Object) to FieldType.ofObject(Object).
  • PIVOT-8950 Implemented conditional logging of property sources, ensuring logs are generated only at the debug level. Make sure to update logging configurations in analysis or monitoring systems accordingly.
  • PIVOT-9027 Changed API of LocationUtil to include expandRangeLevels(ILocation, List) and partialExpand(ILocation, List, List) methods, allowing to expand range locations on some or on all range levels.
  • PIVOT-9130 Stopped throwing an exception when an Mdx calculated member references an unknown member. This is intended to allow defining calculated members before loading the data.
  • PIVOT-9137 Changed IDuplicateKeyHandler.selectDuplicateKeyInDatastore(IRecordReader, IRecordReader, IStoreMetadata, IDictionaryProvider, int[], int), IDuplicateKeyHandler.selectDuplicateKeyWithinTransaction(IRecordReader, IRecordReader, IStoreMetadata, IDictionaryProvider, int[], int) and IStoreDescriptionBuilder.IRemoveUnknownKeyListener.onRemoveUnknownKey(int[], IStoreMetadata, IDictionaryProvider, int[], int) signatures to IDuplicateKeyHandler.selectDuplicateKeyInDatastore(IRecordReader, IRecordReader, IKeyEventContext), IDuplicateKeyHandler.selectDuplicateKeyWithinTransaction(IRecordReader, IRecordReader, IKeyEventContext) and IStoreDescriptionBuilder.IRemoveUnknownKeyListener.onRemoveUnknownKey(int[], IKeyEventContext). An IKeyEventContext provides equivalent information about the corresponding key event context.
  • PIVOT-9140 Change constructor com.activeviam.activepivot.server.json.api.query.JsonMdxQueryPlan to accept strings as time limit, as defined in its field.
  • PIVOT-9210 The IDatabaseSchemaEntityResolver interface has been removed and merged into the IDatabaseSchema. There are no longer database entity resolvers, use the schema instead.
  • PIVOT-9231 Moved ILevel.BRANCH_LEVEL_NAME and ILevel.EPOCH_LEVEL_NAME into IHierarchy.
  • PIVOT-9231 Methods that received or returned ILevel objects now receive or return ILevelInfo objects.
  • PIVOT-9293 ModifiedLocation is now a private class. Modifying a location should only be performed using LocationUtil#createModifiedLocation.
  • PIVOT-9345 Removed the necessary injection of components in the Registry to have a working Distribution layer. This is now performed automatically by the starter com.activeviam.springboot:atoti-server-starter.
  • PIVOT-9409 Replaced IDatabaseSchema.findTable(String) by IDatabaseSchema.hasTable(String) to check whether a table exists. Use IDatabaseSchema.getTable(String) to retrieve the table.
  • PIVOT-9410 IDatabaseSchema.getTables() and IDatabaseSchema.getTableNames() now return respectively a Collection<? extends IDataTable> and a Collection<String> instead of a Map<String, ? extends IDataTable> and a Set<String>. IDatastoreSchemaDescription.getTables() and IDatastoreSchemaDescription.getTableNames() return respectively a List<? extends IStoreDescription> and a List<String> where the order corresponds to the physical order inside the datastore.
  • PIVOT-9422 Removed intermediate buffer when writing a XMLA response. This reduces transient memory usage and potential OOM errors for large responses. Consequently, the property ActiveViamProperty.MAX_XMLA_BUFFER_SIZE_PROPERTY becomes obsolete and is removed.
  • PIVOT-9446 The interface IPostProcessorConstants has been changed to the class PostProcessorConstants.
  • PIVOT-9490 IEpoch no longer implements IClone. Users are instead required to call/implement a deepCopy() method instead.
  • PIVOT-9493 IRecordReader no longer implements IClone.
  • PIVOT-9495 IPair and Pair no longer implement IClone.
  • PIVOT-9497 IComparatorDescription and IComparatorOrderDescription no longer implements IClone. Users are instead required to call/implement a deepCopy() method instead.
  • PIVOT-9498 IProperty no longer implements IClone. Use IProperty#copy() instead.
  • PIVOT-9498 IMappedTuple no longer implements IClone. Use IProperty#shallowCopy() instead.
  • PIVOT-9500 DirectQuery now only supports Databricks Runtime version 15.4 (the latest LTS).
  • PIVOT-9517 Renamed ExtendedContentType into ContentType.
  • PIVOT-9535 Change the signature of com.activeviam.activepivot.server.impl.api.database.IConditionFactory and com.activeviam.activepivot.server.impl.api.database.IUpdateWhereProcedureFactory to receive clean public arguments.
  • PIVOT-9538 Renamed all Spring Boot starters to have the groupId set to com.activeviam.springboot. atoti-starter changed to atoti-server-starter. starter-ui changed to atoti-ui-starter. starter-apm changed to atoti-server-apm-starter. starter-excel-addin changed to excel-addin-starter.
  • PIVOT-9541 The Mdx engine will now try to find better companions for calculated members than contributors.COUNT. This will improve calculated measure performance on polymorphic cubes. See our public documentation for details.
  • PIVOT-9632 IStreamedViewListenerRegistration#close() is renamed to IStreamedViewListenerRegistration#unregister(), the registration is no more AutoCloseable because there is no external resources to close.
  • PIVOT-9694 Remove Serializable from com.activeviam.database.datastore.api.transaction.ITransactionManager.IUpdateWhereProcedure as this was not necessary anymore.
  • PIVOT-9736 Data cubes no longer expose their REST API to the query node through ActiveViamProperties. These properties have been moved to the IDataClusterDefinition and its associated builders.
  • PIVOT-9772 *ArrayJdbcColumnCalculator are removed and replaced by a static factory VectorColumnCalculatorFactory which now supports both the Native JDBC source and the Array JDBC source.
  • PIVOT-9829 The constant GLOBAL_PROVIDER_NAME has been moved to IAggregateProviderDefinition. IPartialProviderDefinition.DEFAULT_NAME has been removed, and the default partial provider name is now its plugin key.
  • PIVOT-9858 Changed getCellsCount of ICellTester to count only the non-empty cells.
  • PIVOT-9843 IAxisRanges no longer implement IClone and now has a deepCopy method. IRangeProperty also has a new deepCopy method.
  • PIVOT-9903 Key-value source: renamed IKeyValueBufferPool to IByteBufferPool and KeyValueBufferPool to DirectByteBufferPool.
  • PIVOT-9910 Some methods have been moved from com.activeviam.database.datastore.internal.impl.SchemaPrinter to com.activeviam.database.api.DatabasePrinter, and renamed with table instead of store. The printed types are slightly different.
  • PIVOT-9964 The memory statistics for swapped vectors have been corrected, and the reported memory is set to 0 instead of the vector capacity.
  • PIVOT-10093 Creating a default message handler IMessageHandler<IFileInfo<Path>> if no bean with this type have been created. The default message handler will only log the progress of load operations.
  • PIVOT-10135 Moved StorePartitionTransaction.BATCH_SIZE_PROPERTY to IStoreDescription.BATCH_SIZE_PROPERTY.

Deprecated

  • PIVOT-7762 Deprecated Types#TYPE_OBJECT_NOT_NULLABLE, use Types#TYPE_OBJECT_NON_NULLABLE instead.
  • PIVOT-7762 Deprecated Types#TYPE_DIC, use Types#TYPE_OBJECT_DIC instead.
  • PIVOT-7762 Deprecated Types#TYPE_DIC_NULLABLE, use Types#TYPE_OBJECT_DIC_NULLABLE instead.
  • PIVOT-8408 AAdvancedPostProcessor.OUTPUT_TYPE has been deprecated. Use IPostProcessor.OUTPUT_TYPE_PROPERTY instead.
  • PIVOT-8656 Deprecated getDataType(), isNullable(), supportEmptyString(), getDefault(), getContentClass() in IFieldDescription, use IFieldDescription#getType() instead.
  • PIVOT-8656 Deprecated IReferenceDescription#getOwnerStore() and IReferenceDescription#getTargetStore(), use IReferenceDescription#getSourceTableName() and IReferenceDescription#getTargetTableName() instead.
  • PIVOT-8656 Deprecated both constructors in ReferenceDescription, use the new constructors with the Set<FieldMapping> argument instead.
  • PIVOT-8656 Deprecated IStoreDescription#getKeyFields(), use IStoreDescription#getKeyFieldNames() instead.
  • PIVOT-8656 Deprecated SimpleStoreDescriptionBuilder#keyFields(), use SimpleStoreDescriptionBuilder#keyFieldNames() instead.
  • PIVOT-8656 Deprecated IDatastoreSchemaDescription#getStoreDescriptions(), use IDatastoreSchemaDescription#getTables() instead.
  • PIVOT-8656 Deprecated IDatastoreSchemaDescription#getReferenceDescriptions(), use IDatastoreSchemaDescription#getJoins() instead.
  • PIVOT-8657 Properties in IAggregateProviderBase and IAggregateProviderHolderBase are deprecated in favor of their counterparts in IAggregateProviderDefinition, which is the public interface. Aggregate Provider fluent builder's javadoc now points to IAggregateProviderDefinition, which has been heavily documented.
  • PIVOT-8591 Deprecated use of "hashN(fieldName)" to describe a modulo N partitioning on a field in ICanPartition.withPartitioning(String). Use "moduloN(fieldName)" instead.
  • PIVOT-8918 Deprecated IFieldType.getUndictionarizedDataType(), you should not use type representation as integer anymore.
  • PIVOT-9004 Utilities methods in ICloudEntity and ICloudEntityPath to modify content on the cloud storage are deprecated. Atoti Server is solely responsible for downloading from the cloud storage.
  • PIVOT-10179 Deprecate com.activeviam.tech.core.api.tracking.Tracing in favor of implementations in each project. This class only offers helper methods relevant inside Atoti Server, rooted on a Tracer configured with information bound to Atoti Server.

Removed

  • PIVOT-6010 Removed IPointLocationReader.getMapping(). It can be retrieved from the ActivePivot object.
  • PIVOT-7155 Removed deprecated method IDatastore.getMemoryStatisticForStore(int).
  • PIVOT-7332 DirectQuery: remove deprecated method IRefreshable.refreshAsync().
  • PIVOT-7466 CSVSource is now private. Use CsvSourceFactory.create() and other static factory methods to build instances. You must also migrate to the type ICSVSource instead of the implementation type.
  • PIVOT-7769 Removed the experimental CopperPostProcessor.executeInDataCube() method.
  • PIVOT-7769 Removed the IDistributedPostProcessor#EXECUTE_IN_DATA_CUBE_PROPERTY and IClusterDefinition#EXECUTE_IN_DATA_CUBE_PROPERTY properties.
  • PIVOT-7983 Removed deprecated method IFieldDescription.canBeEmptyString(), use IFieldDescription.supportEmptyString() instead.
  • PIVOT-7983 Removed DatastoreSchemaDescriptionUtil.
  • PIVOT-7983 Removed JDBCMessageChannelFactory.NO_ENTRY_VALUE.
  • PIVOT-7983 Removed deprecated method IDatastoreSchemaTransactionInformation.getLockedStores(), use IDatastoreSchemaTransactionInformation.getLockedStoreIds() instead.
  • PIVOT-7983 Removed deprecated interface IDatastoreSchemaTransaction, use IDatastoreSchemaTransactionInformation and IDatastoreSchemaTransactionManager instead.
  • PIVOT-7983 Removed deprecated method ITransactionManager.getDatastoreQueryRunner(), use ITransactionManager.getQueryRunner() instead.
  • PIVOT-7983 Removed DatastoreQueryHelper.getAllFields(...), use DatabaseEntityResolverUtil.getAllReachableFields(...) instead.
  • PIVOT-7983 Removed deprecated methods StoreUtils.getSize(...), use IStatisticsQueryRunner.computeTableSize(String) instead.
  • PIVOT-7983 Removed deprecated method IReadableDatastore.getBranches(), use IDatabase.getHeads().keySet() instead.
  • PIVOT-7983 Removed deprecated method IDatastoreVersion.execute(IQuery), use IDatabaseVersion.getQueryRunner().listQuery(ListQuery).run() instead.
  • PIVOT-7984 activeviam.directquery.spring.enableLegacyInitialization property and AActivePivotWithDirectQueryConfig.apManagerInitPrerequisitePluginInjections() method are removed. You can use AActivePivotWithDirectQueryConfig.performRegistryInjection() to regroup your plugin injection in your config.
  • PIVOT-7984 Removed deprecated method in DirectQuery Database.getSchema(). Use Database.getUserSchema() instead.
  • PIVOT-7985 Deprecated methods withFields(List<FieldPath>) to build database list queries have been removed, use withFieldsWithoutAlias(List<FieldPath>) instead.
  • PIVOT-7985 Class TableJoin is no longer public; use the interface ITableJoin instead.
  • PIVOT-7985 Deprecated methods createSession with a single argument to build a DirectQuery session have been removed, use createSession with 2 arguments instead.
  • PIVOT-7985 Deprecated constructors for GetByKeyQuery have been removed, use the builder GetByKeyQuery.builder() instead.
  • PIVOT-7985 Removed deprecated method ISelection#getFieldExpressions(); use ISelection#getFieldsByAlias() instead.
  • PIVOT-7986 DirectQuery: removed ActiveViamProperty.DIRECTQUERY_AUTO_ADAPTIVE_JIT, as adaptive JIT and JIT have been merged.
  • PIVOT-7986 DirectQuery: Configuration parameters for DirectQuery that were passed via ActiveViamProperty have been removed of the associated POJO (BigqueryDirectQuerySettings, ClickhouseDirectQuerySettings, DatabricksDirectQuerySettings, MsSqlDirectQuerySettings, RedshiftDirectQuerySettings, SnowflakeDirectQuerySettings, SynapseDirectQuerySettings):
    • ActiveViamProperty.EXTERNAL_DATABASE_QUERY_TIMEOUT_LIMIT
    • ActiveViamProperty.ENABLE_DIRECTQUERY_AUTOVECTORIZER
    • ActiveViamProperty.DIRECTQUERY_AUTOVECTORIZER_DELIMITER
    • ActiveViamProperty.DIRECTQUERY_AUTOVECTORIZER_THRESHOLD
    • ActiveViamProperty.DIRECT_QUERY_SUB_QUERY_LIMIT
    • ActiveViamProperty.DIRECT_QUERY_GET_BY_KEY_BEHAVIOR
    • ActiveViamProperty.SNOWFLAKE_MAX_RESULTSET_SIZE
  • PIVOT-7987 Removed deprecated method IStopWatch.printTimings(...), use IStopWatch.appendTimings(StringBuilder) instead.
  • PIVOT-7987 Removed CustomComparator.type, use CustomComparator.PLUGIN_TYPE instead.
  • PIVOT-7987 Removed deprecated classes for aggregations AGenericBaseAggregationFunction, AGenericAggregationFunction, AGenericVectorAggregationFunction and AVectorAggregationFunction. Implementers must now write their aggregation functions using the standard unique API. The Aggregation Function documentation provides an up-to-date guide for writing an aggregation function.
  • PIVOT-7987 Removed deprecated constants QFSPools.ACTIVEVIAM_THREAD_PREFIX and QfsConcurrency.ACTIVEVIAM_THREAD_PREFIX. Use NamedThreadFactory.ACTIVEVIAM_THREAD_PREFIX instead.
  • PIVOT-7987 Removed deprecated IAggregateStore.getMeasureColumnIndex, use IAggregateStore.getColumnIndex instead.
  • PIVOT-7987 Removed deprecated constructor of AggregateStore taking an array of measures, use the one with a list instead.
  • PIVOT-7987 Removed deprecated method VectorsAllocationSettings.create(int vectorBlockSize, int componentType). Use VectorsAllocationSettings.create(int vectorBlockSize, ExtendedContentType type) instead.
  • PIVOT-8012 Removed ActiveMonitor's direct dependency to org.apache.velocity.tools:velocity-tools-generic. It is now a testing dependency. See the migration notes to customize message templating in ActiveMonitor.
  • PIVOT-8027 DirectQuery: Static method com.activeviam.directquery.YOUR_DATABASE.api.Session#registerUdaf() has been removed in favor of com.activeviam.directquery.YOUR_DATABASE.api.Session#registerSqlUdaf().
  • PIVOT-8086 Deprecated constructor Selection(String, String...) has been removed, use Selection(String, List) instead.
  • PIVOT-8086 Deprecated constructor RecordQuery(String, ICondition, String...) has been removed, use RecordQuery(String, ICondition, List) instead.
  • PIVOT-8125 Removed deprecated method IActivePivot#getAggregateProvider, which was often used to retrieve a IHierarchicalMapping. The mapping is directly available from the IActivePivot interface.
  • PIVOT-8125 Removed deprecated method ICanHaveComparator#withComparatorOrder, which was redundant. Specific comparator behaviors are still available through withFirst/LastObjects.
  • PIVOT-8137 Removed deprecated methods IDatastoreSchema#getPartitioningDescription(String) and IDatastoreSchema#getNumaSelectorDescription(String).
  • PIVOT-8169 Removed deprecated classes AJDBCSource, ArrayJDBCSource, MapJDBCSource, NativeJDBCSource, use IJDBCSource.builder() instead.
  • PIVOT-8183 Removed deprecated methods involving unknown level resolution:
    • Copper.member(String)
    • Copper.hierarchy(String)
    • Copper.level(String)
    • Copper.newHierarchy(...).fromValues(...).withMembers(String, String)
    • Copper.newHierarchy(...).fromStore(...).withLevel(String)
    • Copper.newHierarchy(...).fromStore(...).withLevel(String, String)
    • Window.orderBy(String)
  • PIVOT-8184 Removed the deprecated method returning the distributing fields in IMultiVersionDistributedActivePivot. Use IMultiVersionDistributedActivePivot.getDistributedApplicationInformation() instead.
  • PIVOT-8185 Removed the deprecated runXXX(IMultiVersionActivePivot) methods in ActivePivotQueryRunner. These methods allowed users to run queries against an instance of IMultiVersionActivePivot. It is now required for users to select the version the query should run against.
  • PIVOT-8186 Removed various deprecated and unused methods from com.activeviam.activepivot.core.impl.api.cube.hierarchy.HierarchiesUtil.
  • PIVOT-8186 Promoted a different signature for deprecated JoinMeasureDescription#setMapping. It is expected that join measures are mostly created through the Copper API.
  • PIVOT-8189 Removed deprecated method ICursor.rewind().
  • PIVOT-8192 IPluginValue#getPlugin and IPluginValue#setPlugin were removed.
  • PIVOT-8244 Removed IReadableDatastore.getHead(), use IDatastore.getMasterHead() instead.
  • PIVOT-8244 Removed IReadableDatastore.getVersion(String, long), use IDatastore.getVersion(long) instead.
  • PIVOT-8280 Removed deprecated interface IDatastoreSchemaDescriptionPostProcessor and all its implementations. Use DatastoreSchemaDescriptionUtil static methods instead to apply transformations to your IDatastoreSchemaDescription.
  • PIVOT-8347 Removed JoinType in SqlJoin, replaced by RelationshipOptionality.
  • PIVOT-8407 Remove the useless module com.activeviam.tech:serialization-java, only offering the standard Java process for serializing data in a method. The parent module com.activeviam.tech:serialization has also been removed, the need for a parent being very limited.
  • PIVOT-8445 Removed the tracing rest service activeviam/tracing/rest/v3 from the Atoti Server.
  • {@jira; PIVOT-8496} Removed PeriodicActivePivotSchemaRebuilder and ScheduledActivePivotSchemaRebuilder, use IActivePivotManager.rebuild(Strings... pivotIds) instead.
  • PIVOT-8624 The method IDataTableField.getTableName has been removed.
  • PIVOT-8663 AJwtAuthenticationProvider and ASignedJwtAuthenticationProvider have been removed.
  • PIVOT-8663 com.qfs.security.impl.DetachedFilterConfig was removed, as it does not serve any use-case.
  • PIVOT-8656 Removed StartBuilding#selection(IDatastoreSchemaDescription). Use StartBuilding#selection(IDatabaseSchema) instead.
  • PIVOT-8664 Implementations of IContentService are not public anymore. They must be created through the builders of com.activeviam.tech.contentserver.storage.api.IContentService#builder(). See this section in the migration notes for more information.
  • PIVOT-8664 The constructor for RemoteContentService is now internal and is replaced by the builder com.activeviam.tech.contentserver.spring.api.RemoteContentServiceBuilder.
  • PIVOT-8664 The constructor for ContentServiceSnapshotter is now internal and is replaced by the static factory method com.activeviam.tech.contentserver.storage.api.ContentServiceSnapshotter.create.
  • PIVOT-8777 The old AAnalysisHierarchy has been removed. AAnalysisHierarchyV2 has been renamed AAnalysisHierarchy.
  • PIVOT-8918 Removed FieldType.dictionarize(IFieldType).
  • PIVOT-8918 Removed FieldType.nullableBoolean(), FieldType.nullableInt(), FieldType.nullableLong(), FieldType.nullableFloat(), FieldType.nullableDouble(), FieldType.nullableString(), FieldType.nullableAny(). Use StandardTypes.NULLABLE_BOOLEAN, StandardTypes.NULLABLE_BOOLEAN, StandardTypes.NULLABLE_INTEGER, StandardTypes.NULLABLE_FLOAT, StandardTypes.NULLABLE_DOUBLE, StandardTypes.NULLABLE_STRING, StandardTypes.NULLABLE_OBJECT instead.
  • PIVOT-8918 Removed FieldType.of(int, Class<?>, Object), FieldType.nullable(int, Class<?>), FieldType.unsafeType(int, Class<?>, Object), FieldType.getEquivalentFieldType(int), FieldType.getEquivalentFieldType(int, Object) and FieldType.getEquivalentFieldType(int, Class<?>, Object). Use FieldType.builder() or FieldType.from(IFieldType) instead.
  • PIVOT-8927 The class com.qfs.spring.websocket.impl.ContextValueWebSocketHandler has been removed without alternative. This class was internally used to apply context values for some special services and is not needed anymore.
  • PIVOT-8927 The bean ActivePivotWebSocketServicesConfig#contextValueWebSocketHandler() has been removed. It was used internally to apply some security and is not needed anymore.
  • PIVOT-9037 The methods to build an Active Pivot Content Service in ActivePivotContentServiceBuilder have been removed, in favor of #with. Use IContentService#builder() to build the provided content service. See this section in the migration notes
  • PIVOT-9074 Methods in IHierarchicalMapping that deal with things else than hierarchies and locations have been removed.
  • PIVOT-9140 The class ActivePivotWithDatastoreConfig has been removed. See this migration note to find how to create it in your project.
  • PIVOT-9140 The class JwtUtil has been removed.
  • PIVOT-9140 The classes FullAccessBranchPermissionsManagerConfig and ContentServiceBranchPermissionsManager have been removed. Use the ContentServiceBranchPermissionsManagerBuilder instead to create a IBranchPermissionsManager backed by a Content Service. This will allow to directly implement the config com.activeviam.activepivot.server.spring.api.config.IActivePivotBranchPermissionsManagerConfig. See this section in the migration notes for more information.
  • PIVOT-9217 Internal methods were removed from IMultiVersionActivePivot, IMultiVersionDistributedActivePivot and IMultiVersionDataActivePivot.
  • PIVOT-9218 Removed IAggregateProviderDefinition.getNumaNodeSelectorPlugin().
  • PIVOT-9222 Methods taking the store id in the datastore transaction API have been removed, use the methods taking the store name instead.
  • PIVOT-9385 Removed IDatastoreSchemaDescription.getStore(String), use IDatastoreSchemaDescription.getTable(String) instead.
  • PIVOT-9475 Classes AStoredMeasureHandler, StoredMeasureHandler and StoredPrimitiveMeasureHandler have been renamed and are now internal. The plugin key StoredMeasureHandler.PLUGIN_TYPE is available in IAggregatesContinuousHandler.BASIC_HANDLER_PLUGIN_KEY.
  • PIVOT-9478 MultiAnalysisHierarchyMeasureHandler is now internal. Its plugin key is available in IAggregatesContinuousHandler as MULTI_ANALYSIS_HIERARCHY_MEASURE_HANDLER.
  • PIVOT-9519 Remove MdxCube.NO_FAIL_WHEN_MEMBER_AMBIGUITY.
  • PIVOT-9665 Remove the support of Consul for the discovery of the ActivePivot servers.
  • PIVOT-9665 Remove Elasticsearch as storage for historical queries data.
  • PIVOT-9829 Removed PartialProviderDefinition.NO_DIMENSION_DEFINED.
  • PIVOT-10040 Removed IIterableAggregatesRetrievalResult.transferValues(int rowId, int[] measureIds, Object[] measureValues). Use IIterableAggregatesRetrievalResult.transferValues(int rowId, int[] measureIds, IWritableRecord record) instead, created with IIterableAggregatesRetrievalResult#createRecordFormat(...).newRecord().
  • PIVOT-10093 Removing the property activeviam.apm.feed.loading.message.handler.type
  • PIVOT-10093 Removed DataLoadingRestServiceController
  • PIVOT-10114 Deprecated methods from IActivePivotContentService for storing and retrieving context values have been removed with alternatives.
    The related method #withContentValues in ActivePivotContentServiceBuilder has also been removed.
    The related constant ActivePivotContentService#DIRECTORY_CONTEXT_VALUES has also been removed and this directory is not created anymore in the Content Service.

Fixed

  • PIVOT-7540 Fixed issue with nullable chunks and the fill method (some elements could stay null instead changed to the value passed to fill).
  • PIVOT-9804 Fixed importSubtree method in class IContentService. It was causing an issue when importing bookmarks from the UI.
  • PIVOT-9035 Do not throw when the update of an MDX stream is cancelled by the user.
  • PIVOT-9051 Fixed an issue where query cube hierarchy dictionary content was inconsistent with the cluster view after a remote transaction.
  • PIVOT-9177 Fixed error propagation from data cube to query cube when aggregates cache is enabled.
  • PIVOT-9204 DirectQuery: Validation of aggregate tables takes the CubeFilter into consideration.
  • PIVOT-9301 Context value drillthrough.maxrows is now taken into account in distributed: the merged result cannot exceed maxrows rows.
  • PIVOT-9317 Failing HelloMessage no more leaves the cube in invalid state causing cube discovery failures.
  • PIVOT-9320 Performance improvement for Mdx queries relying on a lot of calculated measures.
  • PIVOT-9392 Fixed a JSON serialization issue impacting the large results cellsets.
  • PIVOT-9590 DirectQuery: When using clustering fields, the preliminary distinct query uses the aggregate table instead of the base table whenever possible.
  • PIVOT-9607 Fixed revertToVersion issue where last partitions were not reverted.
  • PIVOT-9648 Fixed the error handling and failure propagation when distributed messages fail to be created and/or broadcast.
  • PIVOT-9712 Speed up Mdx queries having calculated members with NULL as expression.
  • PIVOT-9780 Fixed resizing error in AggregatesStoreBindingCompiler that could occur in cases of high concurrency in that class.
  • PIVOT-9786 Fixed bug in DrilldownMember that could cause a stack overflow when performing a recursive drilldown.
  • PIVOT-9808 Fixed an issue where a transaction listener failure could cause the other listeners to not be called which leaves the application in an unrecoverable state.
  • PIVOT-9874 Fixed the ALinkedVersionHistory#getHeads method when there is no branch yet.
  • PIVOT-9911 Fix the DrillDownMember function. The drilldown can now be performed on a member that is directly followed by a descendant that is not one of its children.
  • PIVOT-9912 Fix unknown measure error with Copper switch measure.
  • PIVOT-9927 Fixed an issue where checks on result expansion were too slow when the expansion hierarchy was heavily filtered.
  • PIVOT-9951 Improve reports to IMessageHandler when an error occurs in the JDBC source.
  • PIVOT-9980 The toString implementation of IGetAggregateQuery objects can be truncated to avoid Out of Memory Errors. Extremely large query objects can be generated when using the MDX CrossJoin function.
  • PIVOT-10013 The bucketing hierarchies should handle all measures as nullable.
  • PIVOT-10030 ATimeLinePostProcessor#compute has been fixed to properly iterate over the lines that have values for the associated streaming measure. It could, in some cases, also iterate over values of Contributors.COUNT.
  • PIVOT-10033 The default value of the property DEFAULT_BLOCK_SIZE_PROPERTY (activeviam.vectors.defaultBlockSize) no longer depends on DEFAULT_CHUNK_SIZE_PROPERTY. Both of these properties now default to a value between 16K and 64K depending on the JVM memory size.

Security

  • PIVOT-9513 Upgraded com.amazonaws:aws-sdk-redshift, com.amazonaws:aws-sdk-s3, com.amazonaws:aws-sdk-kms and com.amazonaws:aws-sdk-core to version 1.12.638 to fix CVE-2024-21634.
  • PIVOT-9513 Upgraded org.springframework:spring-web to version 6.1.6 to fix CVE-2024-22262.