You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by "shahid.khan" <sh...@gmail.com> on 2010/09/15 11:11:08 UTC

Always getting exception:Session has pending changes

Hi All, 

I am facing problem when doing checkin after a checkout of "mix:versionable"
node. I am getting following exception at the time of checkin: 
InvalidItemStateException: Unable to perform operation. Session has pending
changes. 
        at
org.apache.jackrabbit.core.ItemValidator.checkCondition(ItemValidator.java:296) 
        at
org.apache.jackrabbit.core.ItemValidator.checkModify(ItemValidator.java:277) 
        at
org.apache.jackrabbit.core.VersionManagerImpl.getNodeState(VersionManagerImpl.java:520) 
        at
org.apache.jackrabbit.core.VersionManagerImpl.getNodeState(VersionManagerImpl.java:505) 
        at
org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:102) 
        at
org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:88) 
        at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:3162) 
        at
org.apache.jackrabbit.webdav.simple.DavResourceImpl.addMember(DavResourceImpl.java:581) 
        at
org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.doPut(AbstractWebdavServlet.java:566) 

My code is as below: 

            Node fileNode=null; 
            try{ 
            fileNode= node.getNode(ctx.getSystemId()); 
            }catch(PathNotFoundException e){ 
            
            } 
            if(fileNode != null && fileNode.isNodeType("mix:versionable")){ 
            fileNode.checkout(); 
            } 
            if (!config.getIOManager().importContent(ctx, member)) { 
                // any changes should have been reverted in the importer 
                throw new
DavException(DavServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); 
            } 
            // persist changes after successful import 
            if(fileNode != null && fileNode.isNodeType("mix:versionable")){ 
            
            fileNode.checkin(); 
            } 
            Session session=node.getSession(); 
            session.save(); 


I am modifying a files content and if it is versionable node then I am
trying to create a new version but it always says session has pending
changes while I am not performing any changes after checkin. 

Thanks in advance for any help. 

Thanks & Regards 
Shahid K. 

-- 
View this message in context: http://jackrabbit.510166.n4.nabble.com/Always-getting-exception-Session-has-pending-changes-tp2540183p2540183.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.

Re: Always getting exception:Session has pending changes

Posted by Justin Edelson <ju...@gmail.com>.
Your code sequence is wrong. You need to:

checkout
modify
save
checkin

(repeat)

On 9/15/10 5:11 AM, shahid.khan wrote:
> 
> Hi All, 
> 
> I am facing problem when doing checkin after a checkout of "mix:versionable"
> node. I am getting following exception at the time of checkin: 
> InvalidItemStateException: Unable to perform operation. Session has pending
> changes. 
>         at
> org.apache.jackrabbit.core.ItemValidator.checkCondition(ItemValidator.java:296) 
>         at
> org.apache.jackrabbit.core.ItemValidator.checkModify(ItemValidator.java:277) 
>         at
> org.apache.jackrabbit.core.VersionManagerImpl.getNodeState(VersionManagerImpl.java:520) 
>         at
> org.apache.jackrabbit.core.VersionManagerImpl.getNodeState(VersionManagerImpl.java:505) 
>         at
> org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:102) 
>         at
> org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:88) 
>         at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:3162) 
>         at
> org.apache.jackrabbit.webdav.simple.DavResourceImpl.addMember(DavResourceImpl.java:581) 
>         at
> org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.doPut(AbstractWebdavServlet.java:566) 
> 
> My code is as below: 
> 
>             Node fileNode=null; 
>             try{ 
>             fileNode= node.getNode(ctx.getSystemId()); 
>             }catch(PathNotFoundException e){ 
>             
>             } 
>             if(fileNode != null && fileNode.isNodeType("mix:versionable")){ 
>             fileNode.checkout(); 
>             } 
>             if (!config.getIOManager().importContent(ctx, member)) { 
>                 // any changes should have been reverted in the importer 
>                 throw new
> DavException(DavServletResponse.SC_UNSUPPORTED_MEDIA_TYPE); 
>             } 
>             // persist changes after successful import 
>             if(fileNode != null && fileNode.isNodeType("mix:versionable")){ 
>             
>             fileNode.checkin(); 
>             } 
>             Session session=node.getSession(); 
>             session.save(); 
> 
> 
> I am modifying a files content and if it is versionable node then I am
> trying to create a new version but it always says session has pending
> changes while I am not performing any changes after checkin. 
> 
> Thanks in advance for any help. 
> 
> Thanks & Regards 
> Shahid K. 
>