I encountered something very strange, and I cannot find mention of it
on this group or elsewhere.
Here is the stack trace:
java.lang.VerifyError: (class: org/datanucleus/TransactionImpl,
method: internalPreRollback signature: ()V) Accessing value from
uninitialized register 5
at org.datanucleus.ObjectManagerImpl.<init>(ObjectManagerImpl.java:
283)
at
org.datanucleus.jdo.JDOPersistenceManager.<init>(JDOPersistenceManager.java:
132)
at
org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager.<init>(DatastoreJDOPersistenceManager.java:
42)
at
org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory.newPM(DatastoreJDOPersistenceManagerFactory.java:
77)
at
org.datanucleus.jdo.JDOPersistenceManagerFactory.getPersistenceManager(JDOPersistenceManagerFactory.java:
578)
at
org.datanucleus.jdo.JDOPersistenceManagerFactory.getPersistenceManager(JDOPersistenceManagerFactory.java:
557)
at
edu.bsu.wtw.DataTableServlet.generateDataTable(DataTableServlet.java:
144)
at
com.google.visualization.datasource.DataSourceHelper.executeDataSourceServletFlow(Unknown
Source)
at edu.bsu.wtw.DataTableServlet.doGet(DataTableServlet.java:103)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)
Here is my situation: I am developing servlets in Java using the
Google Plugin and Eclipse. My specific project involves combining app
engine, Google Wave, and Google's visualization tools. I have set up a
nice unit testing environment, and since my unit tests kept passing, I
worked for quite some time without ever running the app locally and
doing any manual testing. My local unit tests are based on the App
Engine local unit testing approach documented in the dev guide. When I
finally got around to doing some manual testing, I received this
strange stack trace.
My code is in edu.bsu.wtw, and the specific position in the call to
generateDataTable is simply getting the persistence manager in the
usual way:
PersistenceManager pm = PMF.get().getPersistenceManager();
I can replicate this error by entering my system a different way. If I
fake a Wave JSON message to my Wave Robot servlet, I get an almost
identical stack trace:
java.lang.VerifyError: (class: org/datanucleus/TransactionImpl,
method: internalPreRollback signature: ()V) Accessing value from
uninitialized register 5
at org.datanucleus.ObjectManagerImpl.<init>(ObjectManagerImpl.java:
283)
at
org.datanucleus.jdo.JDOPersistenceManager.<init>(JDOPersistenceManager.java:
132)
at
org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManager.<init>(DatastoreJDOPersistenceManager.java:
42)
at
org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory.newPM(DatastoreJDOPersistenceManagerFactory.java:
77)
at
org.datanucleus.jdo.JDOPersistenceManagerFactory.getPersistenceManager(JDOPersistenceManagerFactory.java:
578)
at
org.datanucleus.jdo.JDOPersistenceManagerFactory.getPersistenceManager(JDOPersistenceManagerFactory.java:
557)
at
edu.bsu.wtw.DataCollectorServlet.onWaveletSelfAdded(DataCollectorServlet.java:
54)
at com.google.wave.api.AbstractRobot.processEvents(AbstractRobot.java:
925)
at com.google.wave.api.AbstractRobot.processRpc(AbstractRobot.java:
874)
at com.google.wave.api.AbstractRobot.doPost(AbstractRobot.java:586)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1166)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
at org.mortbay.jetty.HttpConnection
$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)
Here again, my code (DataCollectorServlet.onWaveletSelfAdded) is
simply getting a PersistenceManager the same way.
I am uncertain where to go from here. I've never encountered a
VerifyError before.
Obviously, I could roll back each and every change I made during the
course of the day, running my code each time to see when this breaks,
but that would likely take another whole day's development effort.
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.