[ 
https://issues.apache.org/jira/browse/SLING-5582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15177975#comment-15177975
 ] 

Robert Munteanu edited comment on SLING-5582 at 3/3/16 3:53 PM:
----------------------------------------------------------------

This is the stacktrace of the exception:
{noformat}
Caused by: org.apache.sling.ide.io.ConnectorException: 
/content/dam/aembase/asset.jpg/jcr:content/renditions/cq5dam.web.1280.1280.jpeg
        at 
com.headwire.aem.tooling.intellij.communication.AbstractDeploymentManager.execute(AbstractDeploymentManager.java:347)
        at 
com.headwire.aem.tooling.intellij.communication.AbstractDeploymentManager.publishModule(AbstractDeploymentManager.java:137)
        ... 19 more
Caused by: org.apache.sling.ide.transport.RepositoryException: 
javax.jcr.ItemExistsException: Cannot add child node 
'cq5dam.web.1280.1280.jpeg' to 
/content/dam/aembase/asset.jpg/jcr:content/renditions: colliding with 
same-named existing node.
        at org.apache.sling.ide.impl.vlt.JcrResult.failure(JcrResult.java:33)
        at org.apache.sling.ide.impl.vlt.JcrCommand.execute(JcrCommand.java:80)
        at 
org.apache.sling.ide.transport.TracingCommand.execute(TracingCommand.java:45)
        at 
com.headwire.aem.tooling.intellij.communication.AbstractDeploymentManager.execute(AbstractDeploymentManager.java:336)
        ... 20 more
{noformat}

It is caused by the session.save() method call in JcrCommand:

{code:java}
    @Override
    public Result<T> execute() {

        Session session = null;
        try {
            session = repository.login(credentials);

            T result = execute0(session);

//            try {
//                Thread.sleep(100);
//            } catch(InterruptedException e) {
//            }
            session.save();

            return JcrResult.success(result);
        } catch (LoginException e) {
            return JcrResult.failure(e);
        } catch (RepositoryException e) {
            return JcrResult.failure(e);
        } catch (IOException e) {
            return JcrResult.failure(e);
        } finally {
            if (session != null)
                session.logout();
        }
    }
{code}

In my environment adding the delay (commented out above) does solve it most of 
the time but that's still a bandaid. If the session is provided to the 
JcrCommand and the save() is called when the plugin has done a logical group 
(all files inside a DAM asset etc) the problem should not arise anymore.


was (Author: schaefa):
This is the stacktrace of the exception:

Caused by: org.apache.sling.ide.io.ConnectorException: 
/content/dam/aembase/asset.jpg/jcr:content/renditions/cq5dam.web.1280.1280.jpeg
        at 
com.headwire.aem.tooling.intellij.communication.AbstractDeploymentManager.execute(AbstractDeploymentManager.java:347)
        at 
com.headwire.aem.tooling.intellij.communication.AbstractDeploymentManager.publishModule(AbstractDeploymentManager.java:137)
        ... 19 more
Caused by: org.apache.sling.ide.transport.RepositoryException: 
javax.jcr.ItemExistsException: Cannot add child node 
'cq5dam.web.1280.1280.jpeg' to 
/content/dam/aembase/asset.jpg/jcr:content/renditions: colliding with 
same-named existing node.
        at org.apache.sling.ide.impl.vlt.JcrResult.failure(JcrResult.java:33)
        at org.apache.sling.ide.impl.vlt.JcrCommand.execute(JcrCommand.java:80)
        at 
org.apache.sling.ide.transport.TracingCommand.execute(TracingCommand.java:45)
        at 
com.headwire.aem.tooling.intellij.communication.AbstractDeploymentManager.execute(AbstractDeploymentManager.java:336)
        ... 20 more

It is caused by the session.save() method call in JcrCommand:

    @Override
    public Result<T> execute() {

        Session session = null;
        try {
            session = repository.login(credentials);

            T result = execute0(session);

//            try {
//                Thread.sleep(100);
//            } catch(InterruptedException e) {
//            }
            session.save();

            return JcrResult.success(result);
        } catch (LoginException e) {
            return JcrResult.failure(e);
        } catch (RepositoryException e) {
            return JcrResult.failure(e);
        } catch (IOException e) {
            return JcrResult.failure(e);
        } finally {
            if (session != null)
                session.logout();
        }
    }

In my environment adding the delay (commented out above) does solve it most of 
the time but that's still a bandaid. If the session is provided to the 
JcrCommand and the save() is called when the plugin has done a logical group 
(all files inside a DAM asset etc) the problem should not arise anymore.

> DAM Updates fail due to race conditions with Workflows in AEM
> -------------------------------------------------------------
>
>                 Key: SLING-5582
>                 URL: https://issues.apache.org/jira/browse/SLING-5582
>             Project: Sling
>          Issue Type: Bug
>          Components: IDE
>    Affects Versions: Sling Eclipse IDE 1.0.10
>            Reporter: Andreas Schaefer
>             Fix For: Sling Eclipse IDE 1.1.2
>
>
> In my IntelliJ plugin an update of a DAM entry I sometimes run into an 
> exception while updating rendition files. This seems to be caused by the DAM 
> Workflows inside AEM which is triggered as soon as the original file is 
> updated. This is probably due to the fact that the "impl-vlt" code is 
> committing a change after each and every command and so the workflow is 
> triggered right away causing problems with the updates of the rendition files.
> I would think this is not just an issue of DAM assets but in general an issue 
> with any node that can trigger a workflow.
> From my point of view the plugin should be able to control the commits so 
> that a logical group like a DAM asset can be update in single step.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to