Environment
- Liferay DXP 7.4 Update 34+ (U34+)
Symptom
The following error may be thrown when navigating to the (Search Experiences) Blueprints or Elements pages in two scenarios:
A.) When the upgrade process was not executed, or
B.) When there are Blueprints with Custom JSON Element instances present in the system and the upgrade process failed.
2022-07-13 09:01:15.942 ERROR [http-nio-8080-exec-5][IncludeTag:128] Current URL /group/guest/~/control_panel/manage?p_p_id=com_liferay_search_experiences_web_internal_blueprint_admin_portlet_SXPBlueprintAdminPortlet&p_p_lifecycle=0&p_p_state=maximized&p_v_l_s_g_id=20121 generates exception: java.lang.NullPointerException
java.lang.NullPointerException: null
at org.apache.jsp.sxp_005fblueprint_005fadmin.view_005fsxp_005fblueprints_jsp._jspService(view_005fsxp_005fblueprints_jsp:210) ~[?:?]
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) ~[jasper.jar:9.0.56]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[servlet-api.jar:4.0.FR]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411) ~[jasper.jar:9.0.56]
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473) ~[jasper.jar:9.0.56]
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377) ~[jasper.jar:9.0.56]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[servlet-api.jar:4.0.FR]
at com.liferay.portal.osgi.web.servlet.jsp.compiler.internal.JspServlet.service(JspServlet.java:364) ~[bundleFile:?]
at com.liferay.portal.osgi.web.servlet.jsp.compiler.internal.JspServlet.service(JspServlet.java:376) ~[bundleFile:?]
at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153) ~[?:?]
at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:62) ~[?:?]
at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:120) ~[?:?]
at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:48) ~[?:?]
at com.liferay.portal.servlet.DirectServletPathRegisterDispatcher.include(DirectServletPathRegisterDispatcher.java:67) ~[portal-impl.jar:?]
at com.liferay.portal.servlet.DirectRequestDispatcherFactoryImpl$IndirectRequestDispatcher.include(DirectRequestDispatcherFactoryImpl.java:190) ~[portal-impl.jar:?]
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.doDispatch(ClassLoaderRequestDispatcherWrapper.java:79) ~[portal-impl.jar:?]
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.include(ClassLoaderRequestDispatcherWrapper.java:53) ~[portal-impl.jar:?]
at com.liferay.taglib.util.IncludeTag.includePage(IncludeTag.java:409) ~[bundleFile:?]
at com.liferay.taglib.util.IncludeTag.include(IncludeTag.java:384) ~[bundleFile:?]
at com.liferay.taglib.util.IncludeTag.doInclude(IncludeTag.java:217) ~[bundleFile:?]
2022-07-13 09:01:24.850 WARN [http-nio-8080-exec-8][MVCPortlet:299] No render mappings found for MVC render command name "/sxp_blueprint_admin/view_sxp_elements" for portlet com_liferay_search_experiences_web_internal_blueprint_admin_portlet_SXPBlueprintAdminPortlet
2022-07-13 09:01:24.991 ERROR [http-nio-8080-exec-8][IncludeTag:128] Current URL /group/guest/~/control_panel/manage?p_p_id=com_liferay_search_experiences_web_internal_blueprint_admin_portlet_SXPBlueprintAdminPortlet&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_com_liferay_search_experiences_web_internal_blueprint_admin_portlet_SXPBlueprintAdminPortlet_tabs1=sxpElements&_com_liferay_search_experiences_web_internal_blueprint_admin_portlet_SXPBlueprintAdminPortlet_mvcRenderCommandName=%2Fsxp_blueprint_admin%2Fview_sxp_elements&_com_liferay_search_experiences_web_internal_blueprint_admin_portlet_SXPBlueprintAdminPortlet_hidden=false generates exception: java.lang.NullPointerException
java.lang.NullPointerException: null
at org.apache.jsp.sxp_005fblueprint_005fadmin.view_005fsxp_005felements_jsp._jspService(view_005fsxp_005felements_jsp:210) ~[?:?]
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) ~[jasper.jar:9.0.56]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[servlet-api.jar:4.0.FR]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411) ~[jasper.jar:9.0.56]
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473) ~[jasper.jar:9.0.56]
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377) ~[jasper.jar:9.0.56]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[servlet-api.jar:4.0.FR]
at com.liferay.portal.osgi.web.servlet.jsp.compiler.internal.JspServlet.service(JspServlet.java:364) ~[bundleFile:?]
at com.liferay.portal.osgi.web.servlet.jsp.compiler.internal.JspServlet.service(JspServlet.java:376) ~[bundleFile:?]
at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153) ~[?:?]
at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:62) ~[?:?]
at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:120) ~[?:?]
at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.include(RequestDispatcherAdaptor.java:48) ~[?:?]
at com.liferay.portal.servlet.DirectServletPathRegisterDispatcher.include(DirectServletPathRegisterDispatcher.java:67) ~[portal-impl.jar:?]
at com.liferay.portal.servlet.DirectRequestDispatcherFactoryImpl$IndirectRequestDispatcher.include(DirectRequestDispatcherFactoryImpl.java:190) ~[portal-impl.jar:?]
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.doDispatch(ClassLoaderRequestDispatcherWrapper.java:79) ~[portal-impl.jar:?]
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.include(ClassLoaderRequestDispatcherWrapper.java:53) ~[portal-impl.jar:?]
at com.liferay.taglib.util.IncludeTag.includePage(IncludeTag.java:409) ~[bundleFile:?]
at com.liferay.taglib.util.IncludeTag.include(IncludeTag.java:384) ~[bundleFile:?]
at com.liferay.taglib.util.IncludeTag.doInclude(IncludeTag.java:217) ~[bundleFile:?]
Resolution
As it is indicated on LPS-150879, you must run the Upgrade Process for Search Experiences when upgrading to DXP 7.4 Update 34+ (U34+) from a previous DXP 7.4 Update in order to propagate the necessary database changes to SXPBlueprint and SXPElement entries. After the upgrade, reindex each entity through in Search Admin.
When there are pending module upgrades, the following message appears in the server console:
2022-07-13 08:19:38.856 WARN [main][MainServlet:407] Required upgrades in modules are pending. Run the upgrade process or type upgrade:checkAll in the Gogo shell to get more information.
Refer to LPS-150879 and https://learn.liferay.com/dxp/latest/en/installation-and-upgrades/upgrading-liferay/reference/database-upgrade-options.html for details on the changes and on how to run module upgrades.
Known Issues
(Updated, August 2, 2022) There have been issues discovered (LPS-158873, LPS-158782) which prevent the upgrade process from being executed successfully or can result in broken blueprints data. It is recommended to wait with the upgrade until those issues will be fixed in a future Update.
(Update, September 19, 2022): Both issues have been addressed in DXP 7.4 U37 and they are not affecting Liferay Enterprise Search Experiences v1.1.0.