Installation and Administration

Hotfixes Installation Notes for Nuxeo Platform LTS 2015

Updated: July 17, 2023

The purpose of this page is to describe the additional actions that need to be done when installing the hotfixes on Nuxeo Platform and that cannot be done automatically. The page provides an exhaustive list of manipulations for the installation of Nuxeo Platform LTS 2015 hotfixes, but you need only to apply those relevant for your own instance.

When you are installing/configuring a new Nuxeo instance, the very first thing to do is to install the hotfixes. Because it will provide fixes on the Nuxeo launcher, on the startup wizard and on the templates, installing them immediately will prevent from encountering known issues.

How to Keep Your Instance up-to-Date

Hotfixes always have dependencies on the previous hotfix. So if you need to install several hotfixes, you can download only the latest one: when you install it, it will trigger the installation of the previous hotfixes.

Installing Hotfixes from the Command Line

The Nuxeo Platform provides a command to automatically install all the available hotfixes. From the command line, run the following command:

  • For Linux and Mac OS users:

    $ ./nuxeoctl mp-hotfix --accept=true
    
  • For Windows users:

    > nuxeoctl.bat mp-hotfix --accept=true
    

The parameter --accept=true automatically replies yes to any prompt, which makes the hotfix installation smoother.

While installing hotfixes, you will see the following message, but you can ignore it and continue.

Use of the <copy /> command on JAR files is not recommended, prefer using <update /> command to ensure a safe rollback. (nuxeo-launcher-8.10-HF01-jar-with-dependencies.jar)

Installing Hotfixes from the Update Center

You can also download and install hotfixes from the Update Center in the Admin tab.The installation of hotfixes requires the server to be restarted to complete the installation: follow the manual installation and configuration steps required by the installed hotfixes before you restart your server.

Hotfix 31

Deactivation of Emergency User

The activation by default of the emergency user has been considered as a security issue. Therefore the hotfix 31 has disabled it by changing the property nuxeo.user.emergency.enable. To recover the previous behavior, add the following line in your nuxeo.conf file:

nuxeo.user.emergency.enable=true

Hotfix 20

Rebuilding READ ACL Cache

In case you previously disabled the ACL optimization, and even if you reactivated it, you need to manually rebuild the READ ACL cache. NXP-20862 addresses this issue but cannot fix existing inconsistencies in the database.

Run the following SQL query directly against your database:

  • PostgreSQL
    SELECT nx_rebuild_read_acls();
    
  • Oracle
    CALL nx_rebuild_read_acls;
    
  • SQL Server
    EXEC nx_rebuild_read_acls;
    

Hotfix 19

Elasticsearch Configuration

Following backport of NXP-19283, optimistic concurrency control is now enabled by default. Should you want to disable it you would have to edit the Elasticsearch template and add the following to the elasticSearchRemote or elasticSearchLocal tags.

useExternalVersion="false"

Hotfix 18

Package Cleanup

If you have downloaded revision 1.0.0 of HF18 package, you need to manually remove it to be able to install the latest revision (i.e. 1.0.1):

./nuxeoctl mp-remove nuxeo-7.10-HF18-1.0.0 --nodeps

Hotfix 13

Package Cleanup

If you have downloaded the version 1.0.0 of HF12 package, you need to manually remove it to be able to install the hotfix 13:

./nuxeoctl mp-remove nuxeo-7.10-HF12-1.0.0 --nodeps

Hotfix 12

Quartz Upgrade

The script to upgrade from Quartz 1.8.6 to Quartz 2.2.2 is broken. NXP-19725 fixed the issue and you now have to use this script.

JSF Improvements

The work done to improve JSF performances for Nuxeo 8.x have been backported to the maintenance branch of Nuxeo LTS 2015. But they are disabled by default, not to introduce changes in your applications. Use the following contribution to enable them:

<?xml version="1.0"?>
<component name="org.nuxeo.ecm.platform.enable.jsf.optims.config">
  <require>org.nuxeo.ecm.platform.actions.actionwidgettypes</require>
  <require>org.nuxeo.ecm.platform.forms.layout.properties</require>
  <require>org.nuxeo.ecm.platform.ui.web.configuration.default</require>
  <require>org.nuxeo.ecm.platform.webapp.base.properties</require>
  <extension target="org.nuxeo.runtime.ConfigurationService"
    point="configuration">
    <property name="nuxeo.jsf.actions.removeActionOptims">false</property>
    <property name="nuxeo.jsf.layout.removeAliasOptims">false</property>
    <property name="nuxeo.jsf.removeAliasOptimsReloaded">false</property>
    <property name="nuxeo.jsf.listings.useRepeatRenderTime">true</property>
  </extension>
</component>

Upgrade instructions are given below.

Nuxeo 8.2 and Nuxeo 7.10-HF12 hold changes optimizing performance of JSF pages rendering and processing).

These improvements rely on:

  1. Optimizations of variables exposure in the context
  2. Optimizations of pluggable actions rendering
  3. Optimizations of document listings rendering

Some helpers have also been defined to help analyzing what element is taking time when rendering a page, see How to Debug Slow Page Rendering.

Optimizations 1 and 2 should not have any impact on existing templates, maybe except on edge cases. If the misbehavior is affecting a tag nxu:set, the boolean attribute useAlias=true can be used to get back the old behavior.

Optimization 3 can have an impact on custom widget templates when used inside document listings, as some variables may not be available in the same context: c:set, c:if tags are resolved at build time, they should be replaced by other JSF tags using the rendered attribute, resolved at render time.

On 7.10-HF12, optimizations are disabled by default. You can add the following contribution to your application to enable them: enable-jsf-optims-config.xml.

Reference JIRA issue: NXP-17690

From Nuxeo versions 9.3, 8.10-HF18 and 7.10-HF34, additional optimizations were done on vocabulary pages, when showing lots of entries, similar to optimizations previously done for document listings rendering.

These optimizations are not activated by default from 8.10-HF18 and 7.10-HF34. You can add the following contribution to your application to enable them: enable-jsf-vocabularies-optims-config.xml.

Reference JIRA issue: NXP-23394

Hotfix 10

Nuxeo Automation Client

If you're using the Automation Client library, you have to get the latest version that includes the fix from NXP-19539.

Login Digest Configuration

NXP-19584 introduces a default cache in the configuration of the Login Digest directory. The template templates/common/config/login-digest-config.xml has been updated with this new value. If you have overridden it, you need to update your template.

Hotfix 09

Download URL in JSON Export

NXP-18239 introduces a fix regarding the prefix of the property of the URL of blobs as found in JSON output when querying nuxeo/api/v1/id/myDocumentId. For example for a thumbnail it was ending with /**thumbnail:thumb:thumbnail**/retrievedFile.png now it has been fixed to /**thumb:thumbnail**/retrievedFile.png. You should upgrade your code if it was parsing that kind of URL.

Hotfix 07

Elasticsearch Configuration

NXP-19121 introduces some changes in the Elasticsearch configuration file to add a default mapping for the audit index. The template templates/common-base/nxserver/config/elasticsearch-audit-index-config.xml.nxftl has been updated to take them into account. If you have overridden it, you need to update your template.

Subscription Migration for Oracle

A SQL script for Oracle Database to migrate the notification subscriptions is available since the hotfix 7: you can get it from this link.

Hotfix 06

Nuxeo Shell

A new Nuxeo Shell has been released to provide a fix for NXP-19066: you can download it with this attachment .

Hotfix 05

Redis Configuration

NXP-18588 introduces two new configuration parameters to set up Redis pool size. The template templates/common-base/nxserver/config/redis-config.xml.nxftl has been updated to take them into account. If you have overridden it, you need to update your template.

Here are these parameters names and their default values:

nuxeo.redis.maxTotal=16
nuxeo.redis.maxIdle=8

Hotfix 04

Access to the Admin Tab

Some JavaScript resources have been changed in the hotfix 4. If your browser cache is too aggressive, you could be redirected to the default page when trying to access to the Admin tab.

You'll need to clear your browser cache to recover a normal behavior.

Hotfix 03

Database Configuration

New DDL statements are included with the fix for NXP-18683. If your application is started with nuxeo.vcs.noddl set to true in your nuxeo.conf, you must start your Nuxeo instance once with nuxeo.vcs.noddl set to false to update the database procedures and functions.

Hotfix 02

Redis Configuration

Since NXP-14923, it is possible to use Redis to process cluster invalidation. With this hotfix, instead of modifying the repository contribution, you can add the following line in your nuxeo.conf:

repository.clustering.invalidation=redis

User and Group Schemas

NXP-18496 changes the schemas user.xsd and group.xsd to add the tenantId attribute.

Hotfix 01

VCS Configuration

This hotfix provides a new template for VCS configuration to manage the activation of database optimizations from nuxeo.conf thanks to NXP-18335. Please look at the new file at templates/common-base/nxserver/config/default-repository-config.xml.nxftl if you need to adapt this configuration.

Two new default parameters has been added to nuxeo.defaults:

nuxeo.vcs.optimizations.acl.enabled=true
nuxeo.vcs.optimizations.path.enabled=true

Preview on MacOS

NXP-17001 has introduced a regression when Nuxeo Platform is run under MacOS. This is tracked by NXP-18883.

Until this bug is fixed, you will need to use the following contribution as a workaround:

<require>org.nuxeo.ecm.platform.commandline.executor.service.testContrib.magic2</require>
<extension target="org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent"
    point="command">

    <command name="pdftohtml" enabled="true">
      <commandLine>pdftohtml</commandLine>
      <parameterString> -c -enc UTF-8 -noframes #{inFilePath} #{outDirPath}/index.html</parameterString>
      <winParameterString> -c -enc UTF-8 -noframes #{inFilePath} #{outDirPath}\index.html</winParameterString>
      <installationDirective>You need to install pdftohtml</installationDirective>
    </command>

</extension>