Troubleshooting the XNAT 1.8.6 upgrade and plugin compatibility
Issues found in plugins as a result of updating Jackson from 2.6.5 to 2.13.3
om Class Serialization Errors
Affected Plugins:
- ML Plugin 1.0.0
- Datasets Plugin 1.0.0
Updating Jackson from 2.6.5 to 2.13.3 causes issues with om class serialization. If Swagger sees an om class as a @ResponseBody or a @RequestBody, it will try to document that class. Because of the recursive object structure in om classes, Swagger can't figure out how to document the class and will eventually time out which will cause the Spring context initialization to fail. This timeout failure may take a long time to resolve (10-20 minutes or more), and you will find exceptions like the following in spring.log and/or application.log.
Example spring.log output
2022-06-08 08:35:23,737 [main] ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is com.google.common.util.concurrent.ExecutionError: java.lang.OutOfMemoryError: Java heap space
For more information on how to fix this issue in your custom plugins, see: How to test and update your plugin for XNAT 1.8.6 compatibility
Unit Test Failures
Affected Plugins:
- Container Service 3.2.1 and earlier
In addition to the above changes, the following dependency changes were required in the Container Service plugin to fix multiple unit test failures. You may see issues in your custom plugins if you are using either of these dependencies.
- madas docker-client: Updated from 5.2.2 to 6.0.4
- jersey: Updated from 2.32 to 3.0.6