4 Replies Latest reply on Feb 15, 2017 6:08 PM by rohithreddy41

    ARJUNA022006: The ORB has not been initialized yet while using ModeShapeSingleUseTest.

    rohithreddy41

      Hello,

       

      I am trying to run unit test against a repository, like suggested here .  i am extending ModeShapeSingleUseTest.  i get below error:

       

      ERROR com.arjuna.ats.jts - ARJUNA022006: The ORB has not been initialized yet

      java.lang.RuntimeException: com.arjuna.ats.arjuna.exceptions.FatalError

        at org.modeshape.jcr.JcrRepository$RunningState.<init>(JcrRepository.java:1228)

        at org.modeshape.jcr.JcrRepository$RunningState.<init>(JcrRepository.java:937)

        at org.modeshape.jcr.JcrRepository.doStart(JcrRepository.java:368)

        at org.modeshape.jcr.JcrRepository.start(JcrRepository.java:299)

        at org.modeshape.jcr.SingleUseAbstractTest.startRepository(SingleUseAbstractTest.java:73)

        at org.modeshape.jcr.SingleUseAbstractTest.beforeEach(SingleUseAbstractTest.java:94)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:498)

        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)

        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)

        at org.junit.rules.RunRules.evaluate(RunRules.java:20)

        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)

        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)

        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

        at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37)

        at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62)

        at org.junit.runner.JUnitCore.run(JUnitCore.java:137)

        at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)

        at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)

        at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:237)

        at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:498)

        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

      Caused by: com.arjuna.ats.arjuna.exceptions.FatalError

        at com.arjuna.ats.internal.jts.ORBManager.getPOA(ORBManager.java:97)

        at com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple.getReference(TransactionFactoryImple.java:124)

        at com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple.<init>(TransactionFactoryImple.java:107)

        at com.arjuna.ats.internal.jts.OTSImpleManager.init(OTSImpleManager.java:265)

        at com.arjuna.ats.internal.jts.OTSImpleManager.current(OTSImpleManager.java:74)

        at com.arjuna.ats.internal.jta.transaction.jts.TransactionImple.getTransaction(TransactionImple.java:1146)

        at com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.suspend(TransactionManagerImple.java:113)

        at org.modeshape.jcr.txn.Transactions.suspend(Transactions.java:309)

        at org.modeshape.jcr.JcrRepository$RunningState.suspendExistingUserTransaction(JcrRepository.java:1857)

        at org.modeshape.jcr.JcrRepository$RunningState.<init>(JcrRepository.java:1065)

        ... 36 more

        • 1. Re: ARJUNA022006: The ORB has not been initialized yet while using ModeShapeSingleUseTest.
          hchiorean

          Not sure what your test case looks like, but the problem seems to be caused by the fact that JBoss JTA cannot suspend an existing transaction while the repository is starting up (note that you cannot have an active transaction when a repository is being initialized and ModeShape tries to suspend any such transaction).

           

          Are you perhaps running standalone (not in Wildfly) and using explicit user transactions ? If you're not running standalone and want to run against a Wildfly instance, I would suggest looking at this module modeshape/integration/modeshape-jbossas-integration-tests/src/test/java/org/modeshape/test/integration at master · ModeS…  for inspiration.

          • 2. Re: ARJUNA022006: The ORB has not been initialized yet while using ModeShapeSingleUseTest.
            rohithreddy41

            Thanks for the prompt response. I am trying to run standalone , my test case extends ModeShapeSIngleUseTest.java   provided in modeshape-unit-test.jar . And my test case looks like below(basically the same test you gave me on versioning).

             

            @RunWith(MockitoJUnitRunner.class)

            public class RepositoryTest extends ModeShapeSingleUseTest {

             

                @Test

                public void shouldRestoreNodeWithBinaryContent() throws Exception {

                    Session session = session();

                    Node parent = session.getRootNode().addNode("parent");

                    Node file = new JcrTools().uploadFile(session, "/parent/file", new ByteArrayInputStream("text1".getBytes()));

                    file.addMixin("mix:versionable");

                    session.save();

                    VersionManager versionManager = session.getWorkspace().getVersionManager();

                    Version v1 = versionManager.checkin("/parent/file");

                    versionManager.checkout("/parent/file");

             

             

                    file = session.getNode("/parent/file");

                    file.getNode("jcr:content").setProperty("jcr:data", new ByteArrayInputStream("text2".getBytes()));

                    session.save();

                    Version v2 = versionManager.checkin("/parent/file");

             

             

                    session.getNode("/parent/file").remove();

                    session.save();

                    versionManager.restore("/parent/file", v2, false);

                    String content = IoUtil.read(session.getNode("/parent/file").getNode("jcr:content").getProperty("jcr:data").getBinary().getStream());

                    assertEquals("text2", content);

                }

            }

            • 3. Re: ARJUNA022006: The ORB has not been initialized yet while using ModeShapeSingleUseTest.
              hchiorean

              If you're trying to run standalone by simply extending ModeShapeSingleUseTest, then everything should be running in memory, you shouldn't need Mockito and there should be no active user transactions. So I suspect your local setup and/or dependencies are more complicated than this.

               

              I think the easiest way to get something running is to not use this base test class, but rather create something similar to the attachment from [MODE-2666] NotSerializableException when using order by in query - JBoss Issue Tracker. That's a self-contained ZIP which should be easy enough to tweak and start a repository using a JSON config and then run some tests on it.

              • 4. Re: ARJUNA022006: The ORB has not been initialized yet while using ModeShapeSingleUseTest.
                rohithreddy41

                I have tried the example you pointed out. That is working fine, was able to create repository successfully. As you said, this problem is specific to my environment, I cleared my local maven repository and tried, still same problem. what i don't understand is: How will a transaction be lying around? is there a way i can make sure no transactions are active?