The option -DskipCleanup=true on the upgrade-profile ConfigEngine task causes the sub task deploy-apps to fail with the error message EJPXA0140E: Duplicate objectid attribute com.ibm.wps.portlets.pse.2.PSEAdmin

Technote (troubleshooting)


Problem

When using the undocumented debug related command line option -DskipCleanup=true when executing the ConfigEngine upgrade-profile task multiple times without manually cleaning up the ConfigEngine/work directory the consolidatedXMLAccess.xml contains duplicate entries for each deployable Application. This causes the upgrade-profile ConfigEngine task to fail with the following errors and exceptions found in the consolidatedXMLAccessResults.xml

<status element="[portlet com.ibm.wps.portlets.pse.2.PSEAdmin uniquename=wps.p.Manage Search Admin name=Manage Search Admin Portlet]" result="failed">
<message id="EJPXA0140E">EJPXA0140E: Duplicate objectid attribute com.ibm.wps.portlets.pse.2.PSEAdmin.</message>
<stacktrace><![CDATA[
com.ibm.wps.command.xml.XmlCommandException: EJPXA0140E: Duplicate objectid attribute com.ibm.wps.portlets.pse.2.PSEAdmin. [portlet com.ibm.wps.portlets.pse.2.PSEAdmin uniquename=wps.p.Manage Search Admin name=Manage Search Admin Portlet]
at com.ibm.wps.command.xml.ConfigItem.doUpdate(ConfigItem.java:626)
at com.ibm.wps.command.xml.UpdateEngine.processItem(UpdateEngine.java:216)
at com.ibm.wps.command.xml.UpdateEngine.processItem(UpdateEngine.java:222)
at com.ibm.wps.command.xml.UpdateEngine.processItem(UpdateEngine.java:222)
at com.ibm.wps.command.xml.UpdateEngine.updateTopLevelItem(UpdateEngine.java:171)
at com.ibm.wps.command.xml.XmlAccessHandler.fillObjectModel(XmlAccessHandler.java:330)
at com.ibm.wps.command.xml.XmlAccessHandler.endElement(XmlAccessHandler.java:212)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at com.ibm.wps.command.xml.XmlUtils.parseSax(XmlUtils.java:288)
at com.ibm.wps.command.xml.Engine.forInputSourceSax(Engine.java:227)
at com.ibm.wps.command.xml.Engine.forInputSourceSax(Engine.java:168)
at com.ibm.wps.command.xml.XmlCommand.internalExecute(XmlCommand.java:242)
at com.ibm.wps.command.xml.XmlCommand.execute(XmlCommand.java:185)
at com.ibm.wps.command.xml.XmlCommandServlet.processInternal(XmlCommandServlet.java:332)
at com.ibm.wps.command.xml.XmlCommandServlet.process(XmlCommandServlet.java:309)
at com.ibm.wps.command.xml.XmlCommandServlet.doPost(XmlCommandServlet.java:234)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1224)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
at com.ibm.wps.project.filter.ProjectIdFilter.doFilterWithoutProjectID(ProjectIdFilter.java:331)
at com.ibm.wps.project.filter.ProjectIdFilter.doFilter(ProjectIdFilter.java:243)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3751)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:557)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:607)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:984)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1069)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1690)

]]></stacktrace>
</status>


Symptom

ConfigEngine -DskipCleanup=true upgrade-profile command fails with the error EJPXA0140E: Duplicate objectid attribute com.ibm.wps.portlets.pse.2.PSEAdmin. [portlet com.ibm.wps.portlets.pse.2.PSEAdmin uniquename=wps.p.Manage Search Admin name=Manage Search Admin Portlet]

Cause

The -DskipCleanup=true is an undocumented debug related property setting to aid with Troubleshooting issues related to the execution of the upgrade-profile. Its purpose is to bypass the cleanup of the ConfigEngine work directory so that the work files can be used to analyze failures curring in the upgrade-profile ConfigEngine task.

When using the -DskipCleanup=true each time the upgrade-profile ConfigEngine task is executed the xml used to deploy the WebSphere Portal applications are appended to the consolidatedXMLAccess.xml script which is used by the deploy-apps task to update the installed WebSphere portal applications with the version found in the installableApps directory.

When there are multiple updates for a same application in a single XMLAccess input file XMLAccess will generate the following error status when it finds a duplicate update action for the same Application


<status element="[portlet com.ibm.wps.portlets.pse.2.PSEAdmin uniquename=wps.p.Manage Search Admin name=Manage Search Admin Portlet]" result="failed">
<message id="EJPXA0140E">EJPXA0140E: Duplicate objectid attribute com.ibm.wps.portlets.pse.2.PSEAdmin.</message>
<stacktrace><![CDATA[
com.ibm.wps.command.xml.XmlCommandException: EJPXA0140E: Duplicate objectid attribute com.ibm.wps.portlets.pse.2.PSEAdmin. [portlet com.ibm.wps.portlets.pse.2.PSEAdmin uniquename=wps.p.Manage Search Admin name=Manage Search Admin Portlet]
at com.ibm.wps.command.xml.ConfigItem.doUpdate(ConfigItem.java:626)
at com.ibm.wps.command.xml.UpdateEngine.processItem(UpdateEngine.java:216)
at com.ibm.wps.command.xml.UpdateEngine.processItem(UpdateEngine.java:222)
at com.ibm.wps.command.xml.UpdateEngine.processItem(UpdateEngine.java:222)
at com.ibm.wps.command.xml.UpdateEngine.updateTopLevelItem(UpdateEngine.java:171)
at com.ibm.wps.command.xml.XmlAccessHandler.fillObjectModel(XmlAccessHandler.java:330)
at com.ibm.wps.command.xml.XmlAccessHandler.endElement(XmlAccessHandler.java:212)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at com.ibm.wps.command.xml.XmlUtils.parseSax(XmlUtils.java:288)
at com.ibm.wps.command.xml.Engine.forInputSourceSax(Engine.java:227)
at com.ibm.wps.command.xml.Engine.forInputSourceSax(Engine.java:168)
at com.ibm.wps.command.xml.XmlCommand.internalExecute(XmlCommand.java:242)
at com.ibm.wps.command.xml.XmlCommand.execute(XmlCommand.java:185)
at com.ibm.wps.command.xml.XmlCommandServlet.processInternal(XmlCommandServlet.java:332)
at com.ibm.wps.command.xml.XmlCommandServlet.process(XmlCommandServlet.java:309)
at com.ibm.wps.command.xml.XmlCommandServlet.doPost(XmlCommandServlet.java:234)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1224)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
at com.ibm.wps.project.filter.ProjectIdFilter.doFilterWithoutProjectID(ProjectIdFilter.java:331)
at com.ibm.wps.project.filter.ProjectIdFilter.doFilter(ProjectIdFilter.java:243)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3751)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:557)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:607)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:984)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1069)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1690)

]]></stacktrace>
</status>

Environment

WebSphere Portal 8.x

Diagnosing the problem

After executing the ConfigEngine -DskipCleanup=true upgrade-profile task multiple times without manually cleaning up the ConfigEngine/config/work directory, open the consolidatedXMLAccess.xml file and you will see duplicates entries for each application to be deployed.

After running the task 4 times there were 4 update entries for each application.

Running the ConfigEngine -DskipCleanup=true upgrade-profile a fifth time results in 5 update entries for each application

The logic is as follows:

- Xmlaccess called to export all portlets
- Stylesheet executed against the export file to remove any pre-deployed portlets. This is written to a new file in the work directory.
- Xmlaccess called again to import the new file.

The logic in the stylesheet area just updates the file if it already exists instead of creating a new file

Resolving the problem

If using the undocumented setting -DskipCleanup=true in the command ConfigEngine -DskipCleanup=true upgrade-profile the user must manually remove the ConfigEngine/config/work directory before executing the ConfigEngine -DskipCleanup upgrade-profile multiple times


Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

WebSphere Portal
Migration

Software version:

8.0, 8.0.0.0, 8.0.0.1

Operating system(s):

AIX, HP-UX, IBM i, Linux, Solaris, Windows, i5/OS, z/OS

Reference #:

1627616

Modified date:

2013-04-12

Translate my page

Machine Translation

Content navigation