Server

LTS 2021.2 / LTS 2021-HF02

Updated: November 15, 2024

What's New in LTS 2021.2 / LTS 2021-HF02

Nuxeo Server

Core Storage

Asynchronous Blob Digest Calculation dev admin

Some files are uploaded to Nuxeo using external components as "direct upload" and therefore their content is never seen by Nuxeo, which makes it impossible to synchronously compute their digest and use this digest as the blob key.

Having the blob key be a digest is useful for:

  • deduplication,
  • compliance with customer rules that require keys to be digests.

To fix this, we have introduced a process to asynchronously compute the digest of each new blob (after downloading it) and "renaming" the blob key. This renaming involves to move the blob in the blob provider, and to find all documents that have this blob key (thanks to NXP-29516) to change them to use the new key.

To enable this feature, we added a new property to compute the blob digest asynchronously when Nuxeo doesn't see the blob content at upload time:

nuxeo.core.blobstore.digestAsync=true

 More on JIRA ticket NXP-30044

This new capability is also used to add the new blob key for old blobs.

 More on JIRA ticket NXP-30043

Finally, we improved the performance of the search by blob key.

 More on JIRA ticket NXP-29516

Allow Logging S3 Downloads dev admin

Additional logs are now produced to specifically track S3 downloads.

It can be enabled by adding to lib/log4j2.xml:

<Logger name="S3_Download" level="debug" />

 More on JIRA ticket NXP-30173

Elasticsearch

New Parameter to Enable Index Aliases

It is now possible to easily activate the Elasticsearch alias usage using a property:

elasticsearch.manageAlias.enabled=true

Note that when switching an existing instance to use Elasticsearch alias you first have to drop the existing elastic index for the repository (named nuxeo by default) then reindex your repository.

 More on JIRA ticket NXP-30309

Elasticsearch Passthrough

Elasticsearch passthrough is now configurable with certificates from private certificate authorities.

 More on JIRA ticket NXP-29583

Bulk Service (Aka "Bulk Action Framework")

Bulk Scroller Completes Command in Error When Query Times Out dev

The Bulk scroller now completes the command in error when a query times out.

 More on JIRA ticket NXP-30233

Packaging / Distribution / Installation

Allow Adding New Templates Without Overriding the Whole nuxeo.templates Property

In the previous versions of Nuxeo Platform, there was no other way than overriding the whole nuxeo.templates property in nuxeo.conf if we wanted to add new templates to be deployed in a given environment: that means we had to know the exact list of templates configured by default and all the installed packages.

You can now use nuxeo.append.templates.* properties in nuxeo.conf. All those properties will be sorted alphabetically (for determinism and reproducibility), and all the values will be added after the ones from the nuxeo.templates property when passing everything to the ConfigurationGenerator.

For instance, we could have:

nuxeo.templates=default
...
nuxeo.append.templates.infra=mongodb,redis,kafka
nuxeo.append.templates.cloud=cloud-cloudfront, cloud-directupload

The effective list will be: default,cloud-cloudfront,cloud-directupload, mongodb,redis,kafka.

This could then be used in our default Nuxeo Helm chart:

...
{​{- if or .Values.mongodb.deploy .Values.tags.mongodb }}
    nuxeo.append.templates.mongo=mongodb
    nuxeo.mongodb.server=mongodb://{​{ .Release.Name }}-mongodb:27017
    nuxeo.mongodb.dbname={​{ .Values.nuxeo.mongodb.dbname }}
{​{- end }}
{​{- if or .Values.postgresql.deploy .Values.tags.postgresql }}
    nuxeo.append.templates.postgres=postgresql
    nuxeo.db.name={​{ .Values.nuxeo.postgresql.dbname }}
    nuxeo.db.user={​{ .Values.nuxeo.postgresql.username }}
    nuxeo.db.password={​{ .Values.nuxeo.postgresql.password }}
    nuxeo.db.host={​{ .Release.Name }}-postgresql
    nuxeo.db.port=5432
{​{- end }}
{​{- if or .Values.redis.deploy .Values.tags.redis }}
    nuxeo.append.templates.redis=redis
{​{- end }}
...

 More on JIRA ticket NXP-29920

Tomcat 9.0.45 dev admin

The Nuxeo Platform now relies on Tomcat 9.0.45.

 More on JIRA ticket NXP-30330

Addons

WOPI - File Version Uses User Change Token dev

The document user change token is now used as WOPI item version.

 More on JIRA ticket NXP-30120

Major Bug Fixes

Support of the Carriage Return Characters Into the CSV Export

Carriage return characters are now escaped in the CSV export.

 More on JIRA ticket NXP-30078

Fix How Enricher Priority Is Taken Into Account

Enricher priority is now taken into account when overriding an enricher.

 More on JIRA ticket NXP-30205

Fix Algorithm to Unpublish a Document

Unpublishing a source document now loads only the published documents. This is improving the flow by avoiding searching all the published documents of the section and loading them into the memory.

 More on JIRA ticket NXP-30090

When Exiftool Fails, file:content Gets Deleted

Previously, File content was deleted in case of ExifTool failure.

File content is now unchanged after an ExifTool failure.

 More on JIRA ticket NXP-30247

Timeout on CommandLine Executor Fails for Windows

CommandLine timeout is now disabled on Windows as it is not supported.

 More on JIRA ticket NXP-30274

Fix Inheritance of Local Configuration’s Allowed Subtypes in Subfolders of Configured Workspace

The local configuration for subtypes is now inherited to subfolders.

 More on JIRA ticket NXP-30128

Allow Configuration of Signature Algorithm for SAML

We can now configure the digest algorithm used for the signature with SAML.

To configure a signature algorithm for SAML, add a SignatureAlgorithm entry to the plugin , for instance:

<parameter name="SignatureAlgorithm">http://www.w3.org/2001/04/xmldsig-more#rsa-sha256</parameter>

The signature algorithms are defined by the various SAML and XML specs, in particular RFC 6931. If an algorithm unknown to the current library has to be used, the following more verbose syntax that includes the explicit JCA/JCE key algorithm specifier (RSA in this example) may be used:

<parameter name="SignatureAlgorithm.RSA">http://www.w3.org/2001/04/xmldsig-more#rsa-sha256</parameter>

In the same way it's possible to define a digest algorithm with the DigestAlgorithm parameter:

<parameter name="DigestAlgorithm">http://www.w3.org/2001/04/xmlenc#sha256</parameter>

Consult the normative documents like W3C XML Encryption for the algorithms.

 More on JIRA ticket NXP-28450

Fix CAS Authentication Anonymous Client

CAS authentication redirects with an HTTP 302 when anonymous is enabled.

 More on JIRA ticket NXP-30083

Remove Picture Migration at Startup

Picture migration (required for the upgrades to 8.10 and 9.10) is not needed anymore. So, it has been removed from startup.

 More on JIRA ticket NXP-30269

Increase Bulk Status TTL on Completion With Error

The bulk status is now kept for 24h in case of error.

 More on JIRA ticket NXP-30182

Operations RenderDocument and RenderDocumentFeed Not Working With REST

The operations RenderDocument and RenderDocumentFeed are now usable with REST.

 More on JIRA ticket NXP-28512

Prevent Creation of Empty Thumbnail on Audio File

We had previously some error cases where the thumbnail generated on audio files were empty.

The thumbnail is now correctly generated for Audio documents.

 More on JIRA ticket NXP-30312

LibreOffice 5.3.6.1 Hangs on Some HTML to PDF Conversion

The Nuxeo Platform docker images now use LibreOffice 7.1.1 which fix the issue.

 More on JIRA ticket NXP-30179

Nuxeo Enhanced Viewer - Security Policy to Filter Annotations Is Not Working

Security policies are now taken into account by Annotations in Nuxeo Enhanced Viewer, so that you can now filter the annotations displayed on NEV based on the security policy definition.

 More on JIRA ticket NXP-30238

Live Connect - Fix Upload of a Google Drive Shared File

Files shared among Google Drive accounts are correctly uploaded with LiveConnect.

 More on JIRA ticket NXP-30241

Learn More

More information about released changes and fixed bugs is available in our bug tracking tool.