Description:
Details:
Object instance XOG in 12.x fails with the following error or similar in the XOG output file:
<XOGOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/status.xsd">
<Object type="project"/>
<Status state="FAILURE"/>
<Statistics failureRecords="1" insertedRecords="0" totalNumberOfRecords="1" updatedRecords="0"/>
<Records>
<Record>
<KeyInformation>
<column name="ID">5565982</column>
<column name="name">NCAL RIO S ~ D Fresno</column>
<column name="UNIQUE_NAME">11431</column>
</KeyInformation>
<ErrorInformation>
<Severity>FATAL</Severity>
<Description>Project Object update failed</Description>
<Exception><![CDATA[
java.lang.NullPointerException
at com.niku.odf.lookup.LookupControllerImpl.getDynamicConvertedLookupValue(Lookup ControllerImpl.java:813)
at com.niku.odf.object.xbl.XOGCustomObjectInstanceHandler.getObjectInstance(XOGCustomObjectInstanceHandler.java:935)
at com.niku.odf.object.xbl.XOGCustomObjectInstanceHandler.importCustomObjectInstance(XOGCustomObjectInstanceHandler.java:621)
at com.niku.odf.object.xbl.XOGCustomAttributesWriteHandler.postProcess(XOGCustomAttributesWriteHandler.java:152)
at com.niku.xql2.XQLVisitor.postProcess(XQLVisitor.java:1355)
at com.niku.union.xml.dom.DOMWalker.postProcess(DOMWalker.java:210)
at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:94)
at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:92)
at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
at com.niku.xql2.handlers.TryHandler.preProcess(TryHandler.java:50)
at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1342)
at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
at com.niku.xql2.handlers.LoopHandler.processObject(LoopHandler.java:161)
at com.niku.xql2.handlers.LoopHandler.preProcess(LoopHandler.java:91)
at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1342)
at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
at com.niku.xql2.handlers.LoopHandler.processObject(LoopHandler.java:161)
at com.niku.xql2.handlers.LoopHandler.preProcess(LoopHandler.java:91)
at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1342)
at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:51)
at com.niku.xql2.handlers.LoopHandler.processObject(LoopHandler.java:161)
at com.niku.xql2.handlers.LoopHandler.preProcess(LoopHandler.java:91)
at com.niku.xql2.XQLVisitor.preProcess(XQLVisitor.java:1342)
at com.niku.union.xml.dom.DOMWalker.preProcess(DOMWalker.java:194)
at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:74)
at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:92)
at com.niku.union.xml.dom.DOMWalker.traverseIntern(DOMWalker.java:92)
at com.niku.union.xml.dom.DOMWalker.traverse(DOMWalker.java:36)
at com.niku.xog.service.XOGXBLHandler.processXBL(XOGXBLHandler.java:245)
at com.niku.xog.service.XOGXBLHandler.process(XOGXBLHandler.java:151)
at com.niku.xog.service.ObjectHandler.processRequest(ObjectHandler.java:167)
at com.niku.xog.service.ObjectHandler.process(ObjectHandler.java:90)
at com.niku.xog.service.XOGDispatch.processMessage(XOGDispatch.java:114)
at com.niku.xog.service.XOGSOAPServlet.processMessage(XOGSOAPServlet.java:266)
at com.niku.xog.service.XOGSOAPServlet.doPost(XOGSOAPServlet.java:88)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.niku.union.web.filter.CharsetFilter.doFilter(CharsetFilter.java:29)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:495)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWork erThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java: 684)
at java.lang.Thread.run(Thread.java:595) ]]></Exception>
</ErrorInformation>
</Record>
</Records>
</XOGOutput>
Steps to Recreate:
Expected Results: The project list is filtered for projects who's name='proj1'
Actual Results: All projects are shown. The project filter doesn't work again, except for power filters.
Solution:
Workaround:
If you know the lookup-type or have a single orphaned attribute, run the following query:
SELECT INTERNAL_NAME FROM ODF_CUSTOM_ATTRIBUTES WHERE LOOKUP_TYPE='my_lookup' AND OBJECT_NAME='my_object'
To determine if multiple attributes are orphaned as well as their names and ids, run the following query:
select O.ID, O.INTERNAL_NAME, O.OBJECT_NAME, CAP.NAME FROM ODF_CUSTOM_ATTRIBUTES O INNER JOIN CMN_CAPTIONS_NLS CAP ON (O.ID=CAP.PK_ID AND CAP.TABLE_NAME='ODF_CUSTOM_ATTRIBUTES' AND CAP.LANGUAGE_CODE='en') WHERE O.LOOKUP_TYPE IS NOT NULL AND O.LOOKUP_TYPE NOT IN (SELECT LOOKUP_TYPE FROM CMN_LOOKUP_TYPES)
Once you have located the attribute(s), go to the list of attributes for the object identified by your query and delete the attribute(s).
NOTE: Don't forget to check inactive attributes
Status/Resolution:
CAUSE: CLRT-20166 which was fixed in 8.1.2 and 12.0.1. When you delete a lookup, there is no check done for attributes pointing to that lookup on the object. Even though the problem was fixed, attributes orphaned by deleting the lookup that are still in the database can cause this issue.
KEYWORDS : CLARITYKB, XOG, CLRT-20166, java.lang.nullpointerexception, orphan, lookup, clarity12resolved, clarity1201resolved