Release Notes for XWiki 9.9

Last modified by Thomas Mortagne on 2017/10/26

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

This release focused on fixing bugs on Notifications, Office Viewer and Solr Search. User preferences are now taken into account by the notifications toggles.

New and Noteworthy (since XWiki 9.8.1)

Full list of issues fixed and Dashboard for 9.9.

For Users

Watched Locations Enhanced

 
The notifications toggles now take into account the preferences that you have enabled. Events that have not been enabled first will not be displayed anymore, even if you watch a location where these events happen.

This feature is still disabled by default. See how to test it.

For Admins

No changes!

For Developers

The server is now able to check for its new versions

 
The server can now check if a new version of its distribution is available but this feature is not active by default and the information about new versions are not displayed anywhere yet. In the near future, we'll add a new notification visible to administrators when a new version is found.

The version check can be enabled through the parameter extension.versioncheck.environment.enabled in xwiki.properties.

Upgrades

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

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:

BrowserTest Result
Chrome30.pngGoogle Chrome 62Not Tested
Firefox30.pngMozilla Firefox 56Not Tested
IE30.pngInternet Explorer 10Not Tested
IE30.pngInternet Explorer 11Jira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features

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

DatabaseTest Result
hypersql.pngHyperSQLJira Tickets Marked as Fixed in the Release Notes + New and Noteworthy Features
mysql.pngMySQL 5.7Not Tested
oracle.pngOracle 11.2Not Tested
postgresql.pngPostgreSQLNot Tested

Performances tests compared to 8.4.5

Summary

The performance slipped quite a bit since 9.2, we'll need to work on it ASAP.

"similar": difference is lower than 10%
"slightly": difference is lower than 20%

Note that most of the speed related values are an average of very moving results, a lot of things is happening during a HTTP request and it's far from stable duration (that's why 10% may sounds a lot for something called "similar" but the variable can go up and down around 5% sometimes so 10% average is really not that much of a clear win). Dumbbench based tests are executed several times and the lowest result is selected. 

Speed

ActionsDifference
Jetty startupslightly slower
First accessnot existing page without UIsimilar
not existing page with UIsimilar
Reloadnot existing page without UIsimilar
not existing page with UI+26%
empty page without UI+30%
empty page with UI+36%
Main.WebHome without UI+25%
Main.WebHome with UI+50%
SOLRFull SOLR reindex+21%
SOLR sync when index is empty+54%
SOLR sync when there is nothing to do+42%
Result of search finding lots of results+27%
Result of search finding one result+40%
RenderingPage with 1000 macros without UIsimilar
Page with 1000 html macros without UIsimilar
Wiki creationFrom flavorsimilar
From templatesimilar

Memory

ActionsDifference
Heap Memory after jetty startup-4M
Heap Memory after full SOLR index+8M

More details on performance comparison on single wiki between 9.9 and 8.4.5.

Known issues

Backward Compatibility and Migration Notes

General Notes

When upgrading make sure you compare your xwiki.cfg, xwiki.properties and web.xml files with the newest version since some configuration parameters may have been modified or added. Note that you should add xwiki.store.migration=1 so that XWiki will attempt to automatically migrate your current database to the new schema. Make sure you backup your Database before doing anything.

Issues specific to XWiki 9.9

  • JSONTool#parse is now deprecated and JSONTool#fromString should be used instead. This means that Velocity code like $jsontool.parser($content) should be replaced by $jsontool.fromString($content)

API Breakages

The following APIs were modified since XWiki 9.8.1:

  • Not a breakage. Unused code (and code that shouldn't have been public anyway).
    • Violation type:
      java\.class\.removed
    • Code:
      ## Old:
      .* org\.xwiki\.rendering\.wikimodel\.xml\..*
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.WatchedEntitiesManager::isEntityDirectlyWatched(org.xwiki.notifications.filters.watch.WatchedEntityReference, org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.WatchedEntitiesManager::isEntityWatched(org.xwiki.notifications.filters.watch.WatchedEntityReference, org.xwiki.model.reference.DocumentReference) throws org.xwiki.notifications.NotificationException
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method org.xwiki.notifications.filters.NotificationFilterPreference org.xwiki.notifications.filters.watch.WatchedEntityReference::createExclusiveFilterPreference()
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method org.xwiki.notifications.filters.NotificationFilterPreference org.xwiki.notifications.filters.watch.WatchedEntityReference::createFilterPreference()
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method org.xwiki.notifications.filters.NotificationFilterPreference org.xwiki.notifications.filters.watch.WatchedEntityReference::createInclusiveFilterPreference()
  • Young API
    • Violation type:
      java.method.addedToInterface
    • Code:
      ## Old:
      null

      ## New:
      method boolean org.xwiki.notifications.filters.watch.WatchedEntityReference::isWatched(org.xwiki.model.reference.DocumentReference)
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.WatchedEntityReference::match(org.xwiki.notifications.filters.NotificationFilterPreference)
  • Young API
    • Violation type:
      java.method.numberOfParametersChanged
    • Code:
      ## Old:
      method void org.xwiki.notifications.filters.watch.WatchedLocationReference::<init>(org.xwiki.model.reference.EntityReference, java.lang.String, org.xwiki.model.reference.EntityReferenceResolver<java.lang.String>)

      ## New:
      method void org.xwiki.notifications.filters.watch.WatchedLocationReference::<init>(org.xwiki.model.reference.EntityReference, java.lang.String, org.xwiki.model.reference.EntityReferenceResolver<java.lang.String>, org.xwiki.notifications.filters.internal.scope.ScopeNotificationFilterLocationStateComputer)
  • Young API
    • Violation type:
      java.method.visibilityReduced
    • Code:
      ## Old:
      method org.xwiki.notifications.filters.NotificationFilterPreference org.xwiki.notifications.filters.watch.WatchedLocationReference::createFilterPreference()

      ## New:
      method org.xwiki.notifications.filters.internal.DefaultNotificationFilterPreference org.xwiki.notifications.filters.watch.WatchedLocationReference::createFilterPreference()
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.WatchedLocationReference::match(org.xwiki.notifications.filters.NotificationFilterPreference)
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method org.xwiki.notifications.filters.NotificationFilterPreference org.xwiki.notifications.filters.watch.WatchedUserReference::createFilterPreference()
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.WatchedUserReference::match(org.xwiki.notifications.filters.NotificationFilterPreference)
  • Young API
    • Violation type:
      java.method.removed
    • Code:
      ## Old:
      method boolean org.xwiki.notifications.filters.watch.script.NotificationWatchScriptService::isLocationDirectlyWatched(org.xwiki.model.reference.EntityReference) throws org.xwiki.notifications.NotificationException

Credits

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

  • Alexandru Cotiugă
  • Clément Aubin
  • Ecaterina Moraru (Valica)
  • Eduard Moraru
  • Guillaume Delhumeau
  • Marius Dumitru Florea
  • Matt Sullivan
  • Ruslan Iagudin
  • Thomas Mortagne
  • Vincent Massol
Tags:
   

Get Connected