Just wanted to make another update.

I think I have found a workaround to this.  I bumped the allocation size for 
the CommentsRating table genertor to 50000, this seems to have fixed my 
problems.  

Was there a specific reasoning behind the values used for the allocation sizes 
of the various table generators, most of the others are  50000, is there a 
specific reason to the CommentsRating and SocialEventTag allocation sizes were 
set to 20000?
 

-----Original Message-----
From: James Zubb [mailto:[email protected]] 
Sent: Thursday, February 25, 2010 11:01 AM
To: '[email protected]'
Subject: RE: Eclipselink bug

just an update.

There seems to be some sort of race condition going on with the comments on 
events.  I added an exception handler to the getComment section of line 583 of 
ModelFacade.java and found it crash again at line 909.  I am adding exception 
handling as I go.

Not sure exactly what is happening.  Possibly a comment is deleted by one 
thread while it is trying to be read by another?  

Any thoughts?



-----Original Message-----
From: James Zubb [mailto:[email protected]]
Sent: Friday, February 19, 2010 10:34 AM
To: [email protected]
Subject: RE: Eclipselink bug

Thanks.  I am running virtualized under CentOS.  I have been running into some 
issues where Eclipse will throw a concurrency exception under heavy load, just 
wondering if this is the same error you were seeing:

[#|2010-02-10T16:15:10.003-0800|WARNING|sun-appserver2.1|org.eclipse.persistence.session.file:/opt/glassfish/domains/domain1/applications/j2ee-modules/webapp/WEB-INF/classes/-BPWebappPu|_ThreadID=16;_ThreadName=httpSSLWorkerThread-8080-0;_RequestID=57c0781d-255f-4f9e-9ccf-41a5c296befe;|
Local Exception Stack: 
Exception [EclipseLink-2004] (Eclipse Persistence Services - 
1.1.3.v20091002-r5404): org.eclipse.persistence.exceptions.ConcurrencyException
Exception Description: A signal was attempted before wait() on 
ConcurrencyManager. This normally means that an attempt was made to commit or 
rollback a transaction before it was started, or to rollback a transaction 
twice.
        at 
org.eclipse.persistence.exceptions.ConcurrencyException.signalAttemptedBeforeWait(ConcurrencyException.java:84)
        at 
org.eclipse.persistence.internal.helper.ConcurrencyManager.releaseReadLock(ConcurrencyManager.java:478)
        at 
org.eclipse.persistence.internal.identitymaps.CacheKey.releaseReadLock(CacheKey.java:433)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.cloneAndRegisterObject(UnitOfWorkImpl.java:939)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.cloneAndRegisterObject(UnitOfWorkImpl.java:833)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkIdentityMapAccessor.getAndCloneCacheKeyFromParent(UnitOfWorkIdentityMapAccessor.java:171)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkIdentityMapAccessor.getFromIdentityMap(UnitOfWorkIdentityMapAccessor.java:110)
        at 
org.eclipse.persistence.internal.sessions.IdentityMapAccessor.getFromIdentityMap(IdentityMapAccessor.java:327)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerExistingObject(UnitOfWorkImpl.java:3776)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerExistingObject(UnitOfWorkImpl.java:3736)
        at 
org.eclipse.persistence.queries.ObjectBuildingQuery.registerIndividualResult(ObjectBuildingQuery.java:362)
        at 
org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildWorkingCopyCloneNormally(ObjectBuilder.java:582)
        at 
org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObjectInUnitOfWork(ObjectBuilder.java:544)
        at 
org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:485)
        at 
org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:437)
        at 
org.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:569)
        at 
org.eclipse.persistence.queries.ReadAllQuery.registerResultInUnitOfWork(ReadAllQuery.java:904)
        at 
org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:490)
        at 
org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:928)
        at 
org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:664)
        at 
org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:889)
        at 
org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:458)
        at 
org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:952)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2750)
        at 
org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1181)
        at 
org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1165)
        at 
org.eclipse.persistence.internal.indirection.QueryBasedValueHolder.instantiate(QueryBasedValueHolder.java:81)
        at 
org.eclipse.persistence.internal.indirection.QueryBasedValueHolder.instantiate(QueryBasedValueHolder.java:71)
        at 
org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:83)
        at 
org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiateImpl(UnitOfWorkValueHolder.java:161)
        at 
org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiate(UnitOfWorkValueHolder.java:230)
        at 
org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:83)
        at 
org.eclipse.persistence.indirection.IndirectList.buildDelegate(IndirectList.java:220)
        at 
org.eclipse.persistence.indirection.IndirectList.getDelegate(IndirectList.java:386)
        at 
org.eclipse.persistence.indirection.IndirectList$1.<init>(IndirectList.java:514)
        at 
org.eclipse.persistence.indirection.IndirectList.listIterator(IndirectList.java:513)
        at 
org.eclipse.persistence.indirection.IndirectList.iterator(IndirectList.java:477)
        at 
org.apache.olio.webapp.model.ModelFacade.getSocialEvent(ModelFacade.java:583)
        at 
org.apache.olio.webapp.controller.EventAction.process(EventAction.java:71)
        at 
org.apache.olio.webapp.controller.ControllerServlet.process(ControllerServlet.java:61)
        at 
org.apache.olio.webapp.controller.ControllerServlet.doGet(ControllerServlet.java:93)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
        at 
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
        at 
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at 
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
        at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
        at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
        at 
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:666)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:597)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:872)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at 
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:264)
        at 
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
|#]

Once this happens the olio app hangs, I can contact it but it never finishes 
the request.  Restarting the domain fixes it, but that is not workable in the 
middle of a run.

I tried upgrading to eclipselink 2.0, but that didn't work OOTB on Glassfish 
2.1.1.  

-----Original Message-----
From: [email protected] [mailto:[email protected]]
Sent: Friday, February 12, 2010 2:59 PM
To: [email protected]
Subject: Re: Eclipselink bug

Hi James,

I checked with one of the engineers who work on Eclipselink (and who was 
originally helping us debug this problem) and he mentioned that there was no 
effort to explicitly tried to analyze this exact problem. 
However, he also mentioned that there has been a lot of work done to improve 
behavior of EclipseLink under high concurrency.

I recall that we observed this issue on a Niagara platform, and when we had 
reported this issue, they were unable to reproduce this issue but it was not on 
the same hardware that we had.

I'm not sure what platform you are running your test on, but it may be 
worth running your test after reducing the allocation size.   
Unfortunately, I cannot test with with the original hardware that we had when 
we discovered this issue because we had migrated away some time ago.

Kim
>  
> Hi,
>
> There is mention of an Eclipselink bug in the source and the older docs for 
> the Java app regarding duplicate sequence numbers being generated under heavy 
> load.  Are there any other details regarding this?  I didn't find anything in 
> Jira, looks like it has been in the code since the initial checkin.  Has 
> anyone tested removing the workarounds from the code yet?
>
> thanks,
>
> james
>   

Reply via email to