Release Notes for XWiki 12.6

Last modified by Thomas Mortagne on 2020/10/05

This is the release notes for XWiki Commons, XWiki Rendering and XWiki Platform. They share the same release notes as they are released together and have the same version.

This release brings WYSIWYG editor integration with comments and annotations, allowing for easy insertion of mentions into comments and annotations. Talking about mentions, the mention summary is now included in the notification message. As for the notifications, they are now pre-filtered when the event occurs and stored (also) on a separate Solr core, which improves considerably the time spent to retrieve and display them. For developers we have a new "content footer" UI extension point that might be of interest. Besides that this release includes, as usual, a fair amount of bug fixes and other small improvements.

Some important bugs have been discovered since XWiki 12.6 has been released:

If one or several of these bugs impact you, then you should use the next version once it has been released.

New and Noteworthy (since XWiki 12.5.1)

Full list of issues fixed and Dashboard for 12.6.

For Users

Rich editor integration on comments and annotations

 
Comments and annotations are now edited using the preferred content editor specified in the user profile. They were previously edited using only a plain text editor. The WYSIWYG editor is now supported and it allows for easy insertion of mentions in comments and annotations.

For Admins

Mention summary on the notification

 
A summary of the text surrounding a mention can now be displayed in the notification UI for mentions.

The generation and display of the mention summary can be disabled in the mentions section of the administration.

No summary is computed when this feature is turned off. Consequently, even if the feature is turned on again, no summary will be displayed for previously send notifications.

Miscellaneous

  • New event store and prefiltering by default: 12.6 introduces the use of the new event store and pre-filtering of events by default.

    Events are now stored in a Solr core (they are also still stored in the old database store for now as a retro compatibility measure).

    User notifications are now associated to each user when they are generated and not when they are requested. This means that gathering is always fast and that the filtering of events is using the preference of the user at the moment the event was generated so modifying your preference will only affect new events. The pre-filtering processing is also asynchronous and done in a low priority thread to not impact the farm so there might be a delay between the action and the appearance of the related notification in the notification list in a very active wiki with a lot of users.

    Even if it was implemented along the course of 12.x it's still the first time that this is enabled for most users so don't hesitate to report any notification related issue to https://jira.xwiki.org/projects/XWIKI. If you hit a blocker bug you can go back to:

    • post filtering of event using the property notifications.eventPrefilteringEnabled in xwiki.properties
    • use only the database store by disabling the new one using the property eventstream.store.enabled in xwiki.properties
  • Prefixed Remote Solr core name: Solr cores are now prefixed by default with xwiki_ (except for the main core that is used for search, which is named xwiki).

  • MariaDB Debian package: A new MariaDB-oriented Debian package has been introduced.

  • Replace Jobs with threads to handle mentions asynchronously: The user mention analysis, to detect new mentions and send notifications to target users, is now done by a pool of threads.

    Configuration

    A configuration option to define the size of the thread pool is available in xwiki.properties.

    #-# [Since 12.6]
    #-# The detection and notification for the user mentions in created or edited content is done asynchronously
    #-# by a pool of consumers.
    #-# This properties controls the size of this pool.
    #-#
    #-# The default is :
    # mentions.poolSize = 1

    JMX Monitoring

    An object named org.xwiki:name=mentions is provided and provides two attributes and one operation:

    • QueueSize: Displays the number of elements (created or updated pages) to be analysed.
    • ThreadNumber:  The number the threads in the thread pool.
    • clearQueue(): Removes all the elements in the queue. Warning: By doing so some pages will not be analysed and some mentions will be missed. To be used carefully.

     

  • JMX Monitor of Apache DBCP and Hibernate: JMX Monitoring of Apache DBCP and Hibernate are now enabled by default.

For Developers

UIXP for Content Footer

 
A new UI Extension Point has been introduced to allow to inject content in the footer of a page content. This UIXP is already used to display tags and authors at the bottom of the page, but any extension can now use it for other kind of contents.

Moved Modules

The old activity stream and the watchlist modules have been moved to the attic:

Upgrades

The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering and XWiki Platform):

Translations

The following translations have been updated:

Tested Browsers & Databases

Here is the list of browsers we support and how they have been tested for this release:

 BrowserTested on:
Firefox30.pngMozilla Firefox 79Jira Tickets Marked as Fixed in the Release Notes
Chrome30.pngGoogle Chrome 84Not Tested
Edge30.pngMicrosoft Edge 84Tests run and results
IE30.pngInternet Explorer 11Not Tested
Safari30.pngSafari 13Not Tested

Here is the list of databases we support and how they have been tested for this release:

 DatabaseTested on:
hypersql.pngHyperSQL 2.5.0Not Tested
oracle.pngOracle 19cJira Tickets Marked as Fixed in the Release Notes
mysql.pngMySQL 8Tests run and results
postgresql.pngPostgreSQL 12Not Tested
mariadb.pngMariaDB 10.5Not Tested

Here is the list of Servlet Containers we support and how they have been tested for this release:

 Servlet ContainerTested on:
tomcat-icon.pngTomcat 9.0.37Jira Tickets Marked as Fixed in the Release Notes

Tests run and results
jetty-icon.pngJetty 9.4.29 (XWiki Standalone packaging)
jetty-icon.pngJetty 9.4.29Not Tested

Known issues

Backward Compatibility and Migration Notes

General Notes

  • When upgrading make sure you compare and merge the following XWiki configuration files since some parameters may have been modified, removed or added:
    • xwiki.cfg
    • xwiki.properties
    • web.xml
    • hibernate.cfg.xml
  • Add xwiki.store.migration=1 in xwiki.cfg so that XWiki will attempt to automatically migrate your current database to any new schema. Make sure you backup your Database before doing anything.

Issues specific to XWiki 12.6

New event store and pre filtering by default

Even if it was implemented along the course of 12.x it's still the first time that this is enabled for most users so don't hesitate to report any notification related issue to https://jira.xwiki.org/projects/XWIKI.

If you hit a blocker bug you can go back to:

  • post filtering of event using the property notifications.eventPrefilteringEnabled in xwiki.properties
  • use only the database store by disabling the new one using the property eventstream.store.enabled in xwiki.properties

Right now old events are not automatically migrated so when you upgrade they will appear to have vanished. A tool to import them will be provided in 12.6.1.

DocumentReference and SpaceReference converters behavior change

DocumentReference and SpaceReference now always serialize absolute references instead of references relative to the current context (including absolute reference when executed from a different wiki). Since the converters are meant to produce values that can be unserialized they can't loose any information.

The main use case where those converters are used is when a Velocity script calls a method taking a String as parameter and pass a DocumentReference or a SpaceReference. It should not have much impact in practice since an API which takes a document reference in parameter is supposed to support all forms of reference (especially since this converter was producing various forms of references).

API Breakages

The following APIs were modified since XWiki 12.5.1:

  • NamespaceURLClassLoader no longer inherits from URIClassLoader since this one is now deprecated.
    • Violation type:
      java.class.noLongerInheritsFromClass
    • Code:
      ## Old:
      class org.xwiki.classloader.NamespaceURLClassLoader

      ## New:
      class org.xwiki.classloader.NamespaceURLClassLoader
  • Not a binary breakage (no API breakage), only source level.
    • Violation type:
      java\.generics\.elementNowParameterized
    • Code:
      ## Old:
      .*org\.xwiki\.component\.annotation\.ComponentDescriptorFactory::createComponentDescriptors.*

      ## New:
      .*org\.xwiki\.component\.annotation\.ComponentDescriptorFactory::createComponentDescriptors.*
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method java.util.concurrent.CompletableFuture<java.util.Optional<org.xwiki.eventstream.EventStatus>> org.xwiki.eventstream.EventStore::deleteMailEntityEvent(org.xwiki.eventstream.EntityEvent)
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method java.util.concurrent.CompletableFuture<org.xwiki.eventstream.Event> org.xwiki.eventstream.EventStore::prefilterEvent(org.xwiki.eventstream.Event)
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method java.util.concurrent.CompletableFuture<org.xwiki.eventstream.EventStatus> org.xwiki.eventstream.EventStore::saveMailEntityEvent(org.xwiki.eventstream.EntityEvent)
  • Young API
    • Violation type:
      java.class.nonFinalClassInheritsFromNewClass
    • Code:
      ## Old:
      class org.xwiki.eventstream.query.StatusQueryCondition

      ## New:
      class org.xwiki.eventstream.query.StatusQueryCondition
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.NotificationConfiguration::isEventPreFilteringEnabled()
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method java.util.concurrent.CompletableFuture<java.lang.Void> org.xwiki.eventstream.EventStore::deleteEventStatuses(java.lang.String, java.util.Date)
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method void org.xwiki.mentions.MentionNotificationService::sendNotif(org.xwiki.model.reference.DocumentReference, org.xwiki.model.reference.DocumentReference, org.xwiki.model.reference.DocumentReference, org.xwiki.mentions.MentionLocation, java.lang.String)
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method void org.xwiki.mentions.MentionNotificationService::sendNotification(org.xwiki.mentions.notifications.MentionNotificationParameters)
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method boolean org.xwiki.mentions.MentionsConfiguration::isQuoteActivated()
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method <T> T org.xwiki.search.solr.SolrUtils::get(java.lang.String, org.apache.solr.common.SolrDocument, T)
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method org.xwiki.eventstream.EventSearchResult org.xwiki.eventstream.EventStore::search(org.xwiki.eventstream.EventQuery, java.util.Set<java.lang.String>) throws org.xwiki.eventstream.EventStreamException
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:


      ## New:
      method void org.xwiki.search.solr.SolrUtils::setString(java.lang.String, java.lang.Object, java.lang.reflect.Type, org.apache.solr.common.SolrInputDocument)

Credits

The following people have contributed code and translations to this release (sorted alphabetically):

  • Clément Aubin
  • DenisF
  • Eduard Moraru
  • Francisco García Moreno
  • Guillaume Delhumeau
  • Manuel Leduc
  • Marius Dumitru Florea
  • mfkvfn
  • Simon Urli
  • Thomas Mortagne
  • Vincent Massol
  • xrichard

Get Connected