CDV ❯ misleading error message on TCNonPortableException
-
Bug
-
Status: Closed
-
1 Critical
-
Resolution: Fixed
-
DSO:L1
-
-
teck
-
Reporter: teck
-
February 20, 2007
-
0
-
Watchers: 0
-
July 27, 2012
-
March 15, 2007
Description
The following message was given. The type in question (wicket.PageParameters) is a subclass of a subclass of a logical collection (ie. PageParameters <- ValueMap <- HashMap). The ValueMap class was not included for instrumentation, but PageParameter was. ValueMap does not do anything that would make it an unshareable subclass of HashMap, it was just not included.
Given that, the message below is fairly misleading.
com.tc.exception.TCNonPortableObjectError: Attempt to share an instance of a non-portable class referenced by a portable class. This unshareable class has a logically-managed superclass. Subclasses of logically-managed classes cannot be shared. Please either modify the class hierarchy or ensure that instances of this class don’t enter the shared object graph.
Referring class : wicket.markup.html.link.BookmarkablePageLink Referring field : wicket.markup.html.link.BookmarkablePageLink.parameters Thread : http-8081-Processor4 JVM ID : VM(1) Unshareable class : wicket.PageParameters Logically-managed superclass names: java.util.HashMap
com.tc.object.ClientObjectManagerImpl.throwNonPortableException(ClientObjectManagerImpl.java:627)
com.tc.object.ClientObjectManagerImpl.checkPortabilityOfTraversedReference(ClientObjectManagerImpl.java:569)
com.tc.object.ClientObjectManagerImpl.access$800(ClientObjectManagerImpl.java:64)
com.tc.object.ClientObjectManagerImpl$NewObjectTraverseTest.checkPortability(ClientObjectManagerImpl.java:844)
com.tc.object.Traverser.addReferencedObjects(Traverser.java:48)
com.tc.object.Traverser.traverse(Traverser.java:90)
com.tc.object.ClientObjectManagerImpl.addToManagedFromRoot(ClientObjectManagerImpl.java:787)
com.tc.object.ClientObjectManagerImpl.create(ClientObjectManagerImpl.java:261)
com.tc.object.ClientObjectManagerImpl.lookupOrCreateIfNecesary(ClientObjectManagerImpl.java:326)
com.tc.object.ClientObjectManagerImpl.lookupOrCreate(ClientObjectManagerImpl.java:298)
com.tc.object.tx.ClientTransactionManagerImpl.logicalInvoke(ClientTransactionManagerImpl.java:573)
com.tc.object.TCObjectLogical.logicalInvoke(TCObjectLogical.java:19)
com.tc.object.bytecode.ManagerImpl.logicalInvoke(ManagerImpl.java:205)
com.tc.object.bytecode.ManagerUtil.logicalInvoke(ManagerUtil.java:131)
java.util.HashMap.put(Unknown Source)
com.terracotta.session.SessionData.setAttribute(SessionData.java:64)
com.terracotta.session.util.StandardSession.bindAttribute(StandardSession.java:154)
com.terracotta.session.util.StandardSession.setAttribute(StandardSession.java:49)
wicket.protocol.http.HttpSessionStore.setAttribute(HttpSessionStore.java:87)
wicket.Session.setAttribute(Session.java:952)
wicket.PageMap.put(PageMap.java:526)
wicket.Session.touch(Session.java:744)
wicket.Page.renderPage(Page.java:419)
wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:226)
wicket.request.compound.DefaultResponseStrategy.respond(DefaultResponseStrategy.java:49)
wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(AbstractCompoundRequestCycleProcessor.java:66)
wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:902)
wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:929)
wicket.RequestCycle.step(RequestCycle.java:1010)
wicket.RequestCycle.steps(RequestCycle.java:1084)
wicket.RequestCycle.request(RequestCycle.java:454)
wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:219)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Comments
Fiona OShea 2007-02-22
Tim Eck 2007-03-13
updated the messaging for this case
Tim Eck 2007-03-14
the fix for this was not correct
If you can fix this one in Moraga timeframe, Steve says do it.