Now that I have an em which lives for longer than one request (as
per my
previous thread) I have noticed some concurrency issues accessing
the large
result set. Since my app uses frames, there are occasions when two
frames
will be refreshed at the same time. When this occurs, and the both
try to
iterate the LRS I will frequently get either a
NullPointerException or
NoSuchElementException (result list is closed). Loading the frames
one by
one works fine.
I've tried to the following with no avail:
* Adding openjpa.Multithreaded=true
* Synchronizing the LRS' getter method
* Removing connection pooling (i.e. use openjpa's datasource)
* Using mysql instead of postgresql
* Disabling the query cache
* Disabling the data cache
As you can see, I'm a bit stuck. Any suggestions welcome.
The NullPointerException stacktrace is:
java.lang.NullPointerException
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.next
(SelectResultObjectProvider.java:96)
org.apache.openjpa.lib.rop.WindowResultList.getInternal
(WindowResultList.java:126)
org.apache.openjpa.lib.rop.AbstractNonSequentialResultList.get
(AbstractNonSequentialResultList.java:69)
org.apache.openjpa.kernel.DelegatingResultList.get
(DelegatingResultList.java:241)
javax.faces.model.ListDataModel.getRowData(ListDataModel.java:141)
javax.faces.model.ListDataModel.setRowIndex(ListDataModel.java:175)
javax.faces.model.ListDataModel.setWrappedData(ListDataModel.java:
209)
javax.faces.model.ListDataModel.<init>(ListDataModel.java:68)
org.apache.myfaces.component.html.ext.HtmlDataTableHack.createDataMo
de
l(HtmlDataTableHack.java:448)
org.apache.myfaces.component.html.ext.HtmlDataTable.createDataModel
(HtmlDataTable.java:847)
org.apache.myfaces.component.html.ext.HtmlDataTableHack.getDataModel
(HtmlDataTableHack.java:414)
org.apache.myfaces.component.html.ext.HtmlDataTable.getDataModel
(HtmlDataTable.java:839)
org.apache.myfaces.component.html.ext.HtmlDataTableHack.getRowCount
(HtmlDataTableHack.java:87)
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTableRendererB
as
e.encodeInnerHtml(HtmlTableRendererBase.java:226)
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTableRendererB
as
e.encodeChildren(HtmlTableRendererBase.java:134)
org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer.encodeChildr
en
(HtmlTableRenderer.java:187)
javax.faces.component.UIComponentBase.encodeChildren
(UIComponentBase.java:828)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:883)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:889)
com.sun.facelets.FaceletViewHandler.renderView
(FaceletViewHandler.java:578)
and the NoSuchElementException:
java.util.NoSuchElementException: The result list has been closed.
org.apache.openjpa.lib.rop.AbstractResultList.assertOpen
(AbstractResultList.java:91)
org.apache.openjpa.lib.rop.WindowResultList.size
(WindowResultList.java:81)
org.apache.openjpa.kernel.DelegatingResultList.size
(DelegatingResultList.java:133)
javax.faces.model.ListDataModel.isRowAvailable
(ListDataModel.java:99)
javax.faces.model.ListDataModel.setRowIndex(ListDataModel.java:174)
org.apache.myfaces.component.html.ext.HtmlDataTableHack.setRowIndex
(HtmlDataTableHack.java:243)
org.apache.myfaces.component.html.ext.HtmlDataTable.setRowIndex
(HtmlDataTable.java:263)
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTableRendererB
as
e.encodeInnerHtml(HtmlTableRendererBase.java:257)
org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTableRendererB
as
e.encodeChildren(HtmlTableRendererBase.java:134)
org.apache.myfaces.renderkit.html.ext.HtmlTableRenderer.encodeChildr
en
(HtmlTableRenderer.java:187)
javax.faces.component.UIComponentBase.encodeChildren
(UIComponentBase.java:828)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:883)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:889)
com.sun.facelets.FaceletViewHandler.renderView
(FaceletViewHandler.java:578)
Cheers,
Roger
--
View this message in context: http://www.nabble.com/concurrent-
access-to-LRS-tf2811717.html#a7846241
Sent from the open-jpa-dev mailing list archive at Nabble.com.