Release Notes for XWiki 12.6
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.
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.
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 = 1JMX 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:
- https://github.com/xwiki-attic/xwiki-platform-activitystream
- https://github.com/xwiki-attic/xwiki-platform-watchlist
Upgrades
The following runtime dependencies have been upgraded (they have a different release cycle than XWiki Commons, XWiki Rendering and XWiki Platform):
- CSS4J 2.0.4
- Rome 1.14.1
- MySQL connector 8.0.21
- Jackson 2.11.1
- JSqlParser 3.2
- JNR POSIX 3.0.58
- JNR FFI 2.1.16
- JNA 5.6.0
- Hibernate 5.4.18
- HSQLDB 2.5.1
- Checker Qual 3.5.0
- Caffeine 2.8.5
- Byte Buddy 1.10.13
- Bouncy Castle 1.66
- Apache PDFBox 2.0.20
- PostgresSQL connector 42.2.14
- CKEditor Integration 1.48
- CKEditor 4.14.1
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:
Browser | Tested on: | |
---|---|---|
Mozilla Firefox 79 | Jira Tickets Marked as Fixed in the Release Notes | |
Google Chrome 84 | Not Tested | |
Microsoft Edge 84 | Tests run and results | |
Internet Explorer 11 | Not Tested | |
Safari 13 | Not Tested |
Here is the list of databases we support and how they have been tested for this release:
Database | Tested on: | |
---|---|---|
HyperSQL 2.5.0 | Not Tested | |
Oracle 19c | Jira Tickets Marked as Fixed in the Release Notes | |
MySQL 8 | Tests run and results | |
PostgreSQL 12 | Not Tested | |
MariaDB 10.5 | Not Tested |
Here is the list of Servlet Containers we support and how they have been tested for this release:
Servlet Container | Tested on: | |
---|---|---|
Tomcat 9.0.37 | Jira Tickets Marked as Fixed in the Release Notes Tests run and results | |
Jetty 9.4.29 (XWiki Standalone packaging) | ||
Jetty 9.4.29 | Not 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
- Violation type:
- 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.*
- Violation type:
- 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)
- Violation type:
- 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)
- Violation type:
- 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)
- Violation type:
- Young API
- Violation type:java.class.nonFinalClassInheritsFromNewClass
- Code:## Old:
class org.xwiki.eventstream.query.StatusQueryCondition
## New:
class org.xwiki.eventstream.query.StatusQueryCondition
- Violation type:
- Young API
- Violation type:java.method.removed
- Code:## Old:
method boolean org.xwiki.notifications.NotificationConfiguration::isEventPreFilteringEnabled()
- Violation type:
- 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)
- Violation type:
- 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)
- Violation type:
- Young API
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method void org.xwiki.mentions.MentionNotificationService::sendNotification(org.xwiki.mentions.notifications.MentionNotificationParameters)
- Violation type:
- Young API
- Violation type:java.method.addedToInterface
- Code:## Old:
## New:
method boolean org.xwiki.mentions.MentionsConfiguration::isQuoteActivated()
- Violation type:
- 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)
- Violation type:
- 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
- Violation type:
- 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)
- Violation type:
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