1 2 Previous Next 23 Replies Latest reply on Oct 2, 2006 5:30 AM by oyabun Go to original post
      • 15. Re: Exception: CMR field value is already loaded
        ssowards

        Hey Guys,

        We're getting the same issue under heavy load. Anyone have solution, suggestions or ideas? We're running JBoss 3.2.1.


        Thanks,

        Shaun

        • 16. Re: Exception: CMR field value is already loaded

          Hey All,

          has anyone of you ever overcome this error? Is it fixed in the latest JBoss version? Unfortunately we're still using 3.2.1 and haven't found a workaround for it yet.

          Thanks,
          Stefan

          • 17. Re: Exception: CMR field value is already loaded
            cvandyck

            Hi Smeier

            I've tried out 3.2.7, and haven't seem the problem reoccur since then. So while I can't say for sure whether or not it was fixed, it certainly seems that way.

            HTH
            Collin

            • 18. Re: Exception: CMR field value is already loaded
              blackandwhite

              Hi All,
              Is it fixed in the latest JBoss version?
              I have the same problem with JBoss-3.2.1.

              • 19. Re: Exception: CMR field value is already loaded
                schrouf

                Even if a version upgrade always requires some work I would strongly recommend an upgrade to a JBoss version > 3.2.6 as there is a connection pool leak in earlier JBoss versions under heavy load.

                Regards
                Ulf

                • 20. Re: Exception: CMR field value is already loaded
                  blackandwhite

                  Thanks Ulf.
                  I will upgrade to JBoss 3.2.7

                  • 21. Re: Exception: CMR field value is already loaded
                    sia

                    I have same problem on JBoss 4.0.2 under heavy load!!!
                    JDK is 1.5.0_4 for Linux

                    Is there any plans to fix it???

                    2005-08-02 22:59:48,498 ERROR [org.jboss.ejb.plugins.LogInterceptor] TransactionRolledbackLocalException in method: public abstract java.util.List com.adigida.ejb.session.CompanyManagementLocal.getUsersOffices(java.lang.Long) throws javax.ejb.FinderException, causedBy:
                    javax.ejb.EJBException: CMR field value is already loaded
                     at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge$FieldState.loadRelations(JDBCCMRFieldBridge.java:1979)
                     at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.load(JDBCCMRFieldBridge.java:1417)
                     at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.load(JDBCCMRFieldBridge.java:1404)
                     at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.getInstanceValue(JDBCCMRFieldBridge.java:717)
                     at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.getValue(JDBCCMRFieldBridge.java:669)
                     at org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler$FieldGetInvoker.invoke(EntityBridgeInvocationHandler.java:133)
                     at org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler.invoke(EntityBridgeInvocationHandler.java:91)
                     at org.jboss.proxy.compiler.Runtime.invoke(Runtime.java:62)
                    


                    • 22. Re: Exception: CMR field value is already loaded
                      oyabun

                      Hi,

                      Same problem under JBOSS 4.0.2. We get this while stress testing our application. We use a JSP to render 1-N entity beans.

                      javax.ejb.EJBException: CMR field value is already loaded
                       at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge$FieldState.loadRelations(JDBCCMRFieldBridge.java:1979)
                       at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.load(JDBCCMRFieldBridge.java:1417)
                       at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.load(JDBCCMRFieldBridge.java:1404)
                       at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.getInstanceValue(JDBCCMRFieldBridge.java:717)
                       at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge.getValue(JDBCCMRFieldBridge.java:669)
                       at org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler$FieldGetInvoker.invoke(EntityBridgeInvocationHandler.java:133)
                       at org.jboss.ejb.plugins.cmp.bridge.EntityBridgeInvocationHandler.invoke(EntityBridgeInvocationHandler.java:91)
                       at org.jboss.proxy.compiler.Runtime.invoke(Runtime.java:62)
                      


                      Regards,
                      Alex

                      • 23. Re: Exception: CMR field value is already loaded
                        oyabun

                        We found the solution for our project. Because of the (old) architecture of our project, we are forced to use a non-standard configuration. That is, we use Standard CMP 2.x EntityBean with cache invalidation for our Entity Beans, with commit option A _and_ Optimistic Locking.

                        The Wiki article http://wiki.jboss.org/wiki/Wiki.jsp?page=CMPCaching clearly states that when we want global caching we must use Pessimistic Locking (which is default btw.) The problem we had with Pessimistic Locking is that it produced a lot of "Application deadlock" errors so instead we opted for Optimistic Locking which gave us "CMR field value is already loaded".

                        Our Session Beans use "Supports" by default for transaction type and "Required" only for methods which need to write to the database. Our Entity Beans were completely "Required". Since there was no need for the getter methods to be "Required", we made them read-only and "Supports" to make sure they don't start a new tx.

                        We use Xdoclet:

                         * @ejb.transaction
                         * type="Supports"
                         * @jboss.method-attributes
                         * read-only="true"


                        Read more about read-only here http://www.onjava.com/pub/a/onjava/2003/05/28/jboss_optimization.html

                        This configuration worked for us. We think that due to our erroneous configuration, the CMP container tried to load data multiple times into the cache, which JBoss didn't allow. The new configuration doesn't start any tx for reading access (we traced it and know that). It also seems to behave correctly by loading instances only once into the cache and then reading from it too.

                        Another solution is to use Instance Per Transaction CMP 2.x EntityBean but that is not acceptable because it's too slow.

                        Hope that helped.

                        --
                        Alex

                        1 2 Previous Next