Uploaded image for project: 'Pentaho Data Integration - Kettle'
  1. Pentaho Data Integration - Kettle
  2. PDI-12333

Automatic Documentation Output Step fails with UnifiedRepositoryException: exception while getting tree rooted at path "/"

    Details

    • Type: Bug
    • Status: Closed
    • Severity: High
    • Resolution: Fixed
    • Affects Version/s: Master
    • Fix Version/s: 5.1.0 GA
    • Component/s: Pentaho Server (DI), Step
    • Labels:
      None
    • Story Points:
      5
    • PDI Sub-component:
    • Notice:
      When an issue is open, the "Fix Version/s" field conveys a target, not necessarily a commitment. When an issue is closed, the "Fix Version/s" field conveys the version that the issue was fixed in.
    • Sprint Team:
      Pervach
    • Operating System/s:
      Windows 7

      Description

      During investigation of the issue http://jira.pentaho.com/browse/PDI-10665 I faced up with the one more issue in AutoDoc.processRow() method.

      We are trying to load repository directory tree:
      ------------------------------------------------------------------------------------------------
      data.repository = getTrans().getRepository();
      if ( data.repository != null )

      { data.tree = data.repository.loadRepositoryDirectoryTree(); }

      ------------------------------------------------------------------------------------------------
      And as result there is an attempt to call StandaloneSession.getAttribute(StandaloneSession.java:75) for already destroyed session.
      See log below:

      org.springframework.transaction.CannotCreateTransactionException: Could not open JCR session for transaction; nested exception is java.lang.IllegalStateException: StandaloneSession.ERROR_0001 - Unable to render embedded object: File (StandaloneSession.ERROR_0001_ACCESSING_DESTROYED_SESSION) not found.
      at org.springframework.extensions.jcr.jackrabbit.LocalTransactionManager.doBegin(LocalTransactionManager.java:160)
      at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:374)
      at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:263)
      at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      at com.sun.proxy.$Proxy28.getTree(Unknown Source)
      at org.pentaho.platform.repository2.unified.ExceptionLoggingDecorator$41.call(ExceptionLoggingDecorator.java:445)
      at org.pentaho.platform.repository2.unified.ExceptionLoggingDecorator$41.call(ExceptionLoggingDecorator.java:443)
      at org.pentaho.platform.repository2.unified.ExceptionLoggingDecorator.callLogThrow(ExceptionLoggingDecorator.java:489)
      at org.pentaho.platform.repository2.unified.ExceptionLoggingDecorator.getTree(ExceptionLoggingDecorator.java:443)
      at org.pentaho.platform.repository2.unified.ExceptionLoggingDecorator.getTree(ExceptionLoggingDecorator.java:454)
      at org.pentaho.di.repository.pur.PurRepository.loadRepositoryFileTree(PurRepository.java:520)
      at org.pentaho.di.repository.pur.PurRepository.loadRepositoryDirectoryTree(PurRepository.java:528)
      at org.pentaho.di.trans.steps.autodoc.AutoDoc.processRow(AutoDoc.java:163)
      at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)
      at java.lang.Thread.run(Thread.java:744)
      Caused by: java.lang.IllegalStateException: StandaloneSession.ERROR_0001 - Unable to render embedded object: File (StandaloneSession.ERROR_0001_ACCESSING_DESTROYED_SESSION) not found.
      at org.pentaho.platform.engine.core.system.StandaloneSession.getAttribute(StandaloneSession.java:75)
      at org.pentaho.platform.repository2.unified.jcr.JcrTenantUtils.getTenantedUser(JcrTenantUtils.java:96)
      at org.pentaho.platform.repository2.unified.jcr.sejcr.PentahoSessionCredentialsStrategy.getUserId(PentahoSessionCredentialsStrategy.java:74)
      at org.pentaho.platform.repository2.unified.jcr.sejcr.PentahoSessionCredentialsStrategy.getCredentials(PentahoSessionCredentialsStrategy.java:65)
      at org.pentaho.platform.repository2.unified.jcr.sejcr.CredentialsStrategySessionFactory.getSession(CredentialsStrategySessionFactory.java:337)
      at org.springframework.extensions.jcr.jackrabbit.LocalTransactionManager.doBegin(LocalTransactionManager.java:120)
      ... 16 more

      This occurs because in StartExecutionTransAsUserServlet we switch PentahoHttpSession to a Standalone Session:
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      public void transStarted(Trans trans) throws KettleException {
      // Switches my PentahoHttpSession to a Standalone Session
      if (log.isDebug())

      { log.logDebug(BaseMessages.getString(SUBCLASS_PKG, "StartExecutionTransAsUserServlet.Log.CallbackReceived")); }

      SecurityHelper.getInstance().becomeUser(PentahoSessionHolder.getSession().getName());
      }
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      So now we have UserSession in PentahoSessionStore and in HttpSessionPentahoSessionIntegrationFilter we destroy this one:

      // Crucial removal of PentahoSessionHolder contents - do this before anything else.
      PentahoSessionHolder.removeSession();

      At the same time the steps of our transformation are executing in several separate threads and when one of them (in this case it AutoDoc ) is trying to load DI repository tree, on jackrabbit level there is attempt to work with this destroyed UserSession.

      As result - ava.lang.IllegalStateException: StandaloneSession.ERROR_0001 - Unable to render embedded object: File (StandaloneSession.ERROR_0001_ACCESSING_DESTROYED_SESSION) not found.

      The steps to reproduce are the same as in http://jira.pentaho.com/browse/PDI-10665

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                ihar_chekan Ihar Chekan (Inactive)
                Reporter:
                tatsiana_kasiankova Tatsiana Kasiankova (Inactive)
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Time Spent - 44h Remaining Estimate - 1h
                  1h
                  Logged:
                  Time Spent - 44h Remaining Estimate - 1h
                  44h