Google app engine GAE JDO 3.01 datanucleus 3.1.3错误:org.datanucleus.state.JDOStateManager.replaceFields(JDOStateManager.java:1945)

Google app engine GAE JDO 3.01 datanucleus 3.1.3错误:org.datanucleus.state.JDOStateManager.replaceFields(JDOStateManager.java:1945),google-app-engine,jdo,datanucleus,Google App Engine,Jdo,Datanucleus,我得到一个错误,只是间歇性地发生。问题发生在 以下是我的设置: datanucleus-api-jdo-3.1.3, datanucleus-core-3.1.3 jdo-api-3.0.1。所以我使用的是JDO3.0.1 我尝试从空间中获取一个对象: public DAOCompany getCompany(DAOCompany company) { logger.debug("getCompany(): starting"); DAOCompany comn

我得到一个错误,只是间歇性地发生。问题发生在

以下是我的设置: datanucleus-api-jdo-3.1.3, datanucleus-core-3.1.3 jdo-api-3.0.1。所以我使用的是JDO3.0.1

我尝试从空间中获取一个对象:

public  DAOCompany getCompany(DAOCompany company) {
        logger.debug("getCompany(): starting");
        DAOCompany comnpanyInDatabase = new DAOCompany();
        comnpanyInDatabase.setParsingSuccessfull(false);
        pm = PMF.get().getPersistenceManager();
        try {
            comnpanyInDatabase = pm.getObjectById(DAOCompany.class, company.getKey());
        } finally {
            pm.close();
        }
        return comnpanyInDatabase;

    }
尝试替换该对象上的空日期时发生异常:

1:1425452404.383000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,382 DEBUG Request 9D596201 class:getCompany:1412 - getCompany(): starting
    :  
    : 
    1:1425452404.384000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,383 DEBUG Request 9D596201 Cache:debug:58 - Level 1 Cache of type "soft" initialised
    :  
    : 
    1:1425452404.385000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,384 DEBUG Request 9D596201 Persistence:debug:58 - Object Manager "org.datanucleus.ObjectManagerImpl@14f6866" opened for datastore "com.google.appengine.datanucleus.DatastoreManager@5f7d5" with txn="org.datanucleus.TransactionImpl@4f1ffc"
    :  
    : 
    1:1425452404.385000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,385 DEBUG Request 9D596201 Cache:debug:58 - Object with id "com.eurekaapp.server.dao.mappedobjects.DAOCompany:5921973989277696" not found in Level 1 cache [cache size = 0]
    :  
    : 
    1:1425452404.386000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,385 DEBUG Request 9D596201 Cache:debug:58 - Object "com.eurekaapp.server.dao.mappedobjects.DAOCompany@289c27" (id="com.eurekaapp.server.dao.mappedobjects.DAOCompany:5921973989277696") added to Level 1 cache (loadedFlags="[NNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN]")
    :  
    : 
    1:1425452404.388000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,386 DEBUG Request 9D596201 Persistence:debug:58 - Object "com.eurekaapp.server.dao.mappedobjects.DAOCompany@289c27" (id="com.eurekaapp.server.dao.mappedobjects.DAOCompany:5921973989277696") is having the value in field "lastDownloaded_Image" replaced by a SCO wrapper
    :  
    : 
    1:1425452404.390000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,388 DEBUG Request 9D596201 Persistence:debug:58 - Object "com.eurekaapp.server.dao.mappedobjects.DAOCompany@289c27" (id="com.eurekaapp.server.dao.mappedobjects.DAOCompany:5921973989277696") is having the value in field "lastDownloaded_JobEnhancedEvent" replaced by a SCO wrapper
    :  
    : 
    1:1425452404.392000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,390 DEBUG Request 9D596201 Persistence:debug:58 - Object "com.eurekaapp.server.dao.mappedobjects.DAOCompany@289c27" (id="com.eurekaapp.server.dao.mappedobjects.DAOCompany:5921973989277696") is having the value in field "lastDownloaded_JobEvent" replaced by a SCO wrapper
    :  
    : 
    1:1425452404.394000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,392 DEBUG Request 9D596201 Persistence:debug:58 - Object "com.eurekaapp.server.dao.mappedobjects.DAOCompany@289c27" (id="com.eurekaapp.server.dao.mappedobjects.DAOCompany:5921973989277696") is having the value in field "lastModified" replaced by a SCO wrapper
    :  
    : 
    1:1425452404.476000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,394 DEBUG Request 9D596201 Persistence:debug:58 - Object "com.eurekaapp.server.dao.mappedobjects.DAOCompany@289c27" (id="com.eurekaapp.server.dao.mappedobjects.DAOCompany:5921973989277696") is having the value in field "licenceExpiry" replaced by a SCO wrapper
    :  
    : 
    1:1425452404.478000 [s~test-server/17.382534582764030825].<stdout>: 07:00:04,478 ERROR Request 9D596201 class:isReceivedSessionValid:1490 - isReceivedSessionValid(): Error:org.datanucleus.state.JDOStateManager.replaceFields(JDOStateManager.java:1945)
    : org.datanucleus.state.JDOStateManager.replaceFields(JDOStateManager.java:1962)
    : org.datanucleus.state.JDOStateManager.initialiseForCachedPC(JDOStateManager.java:562)
    : org.datanucleus.state.StateManagerFactory.newForCachedPC(StateManagerFactory.java:254)
    : org.datanucleus.state.ObjectProviderFactory.newForCachedPC(ObjectProviderFactory.java:196)
    : org.datanucleus.ObjectManagerImpl.getObjectFromLevel2Cache(ObjectManagerImpl.java:5095)
    : org.datanucleus.ObjectManagerImpl.getObjectFromCache(ObjectManagerImpl.java:5034)
    : org.datanucleus.ObjectManagerImpl.findObject(ObjectManagerImpl.java:3286)
    : org.datanucleus.api.jdo.JDOPersistenceManager.getObjectById(JDOPersistenceManager.java:1722)
    : org.datanucleus.api.jdo.JDOPersistenceManager.getObjectById(JDOPersistenceManager.java:1740)
    : com.eurekaapp.server.dao.GoogleCloud.getCompany(GoogleCloud.java:1417)
    : com.eurekaapp.server.dao.GoogleCloud.isReceivedSessionValid(GoogleCloud.java:1462)
    : com.eurekaapp.server.service.DAOServiceImpl.isReceivedSessionValid(DAOServiceImpl.java:157)
    : com.eurekaapp.server.api.provider.admin.GetAllJobEventEnhancedJobCompleted.doPost(GetAllJobEventEnhancedJobCompleted.java:44)
    : javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    : javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    : org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    : org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    : com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)
    : org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    : com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
    : org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    : com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
    : org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    : com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    : org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    : org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    : org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    : org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    : org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    : org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    : com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:254)
    : org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    : org.mortbay.jetty.Server.handle(Server.java:326)
    : org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    : org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    : com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
    : org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    : com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
    : com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:527)
    : com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437)
    : com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444)
    : com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220)
    : com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
    : com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
    : com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441)
    : com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
    : java.lang.Thread.run(Thread.java:724)
    : 

有什么想法吗?

以及使用哪个版本的不同软件?嗨,尼尔,对不起,这是JDO 2.3。我应该提到这一点。所以请记住,这确实是使用了古老的代码,而且代码不会得到更新,您似乎有两种选择。1.升级到更高版本的软件或2。禁用L2缓存是我在堆栈跟踪中唯一能识别的东西。也许几年前L2缓存中出现了一些问题,并在此后得到了修复;我对DataNucleus使用二级缓存,但不是GAE,它工作得很好。。很抱歉,我把我的datanucleus版本和JDO混淆了。实际上是datanucleus-api-jdo-3.1.3、datanucleus-core-3.1.3和jdo-api-3.0.1。所以我使用的是JDO3.0.1。。抱歉造成混淆。本页说明了可用的版本,即有一个版本使用DataNucleus 3.2.x/3.3.x,但您必须自己构建。除此之外,请遵循选项2。在前面的评论中