On 26 Jun 2014, at 04:21, Julian Reschke <[email protected]> wrote:
> On 2014-06-20 17:34, Rakesh Vidyadharan wrote: >> Hello all, >> >> We are using JackRabbit 2.4.3 through Magnolia CMS. Our users had used the >> documents workspace provided by Magnolia to upload large media files >> (movies, audio), some of which are over 100mb. We migrated all that content >> away from Magnolia/JackRabbit into a regular Apache webserver, and I set up >> a DataStore Garbage Collector task to remove the underlying files that had >> been make unreachable by deleting the nodes. >> >> It turns out that the documents workspace in Magnolia uses versioning, so >> after the GC run, I did not see much of a difference in the repository disk >> usage. I followed the steps outlined in >> http://stackoverflow.com/questions/3292719/how-do-you-restore-a-versioned-node-in-a-jackrabbit-2-1-repository >> to iterate over all the version history for the workspace, and found the >> versions that were saved for the nodes that we had deleted. I assume it is >> the version history that prevents the GC from removing the underlying files. >> >> Unlike the code in that post, iterating the version history nodes does not >> return instances of javax.jcr.version.Version, but just regular >> javax.jcr.Node with primary node type nt:version. I adapted my code >> accordingly to see the versions that are stored. The question is how do I >> go about removing these versions from the workspace (we absolutely do not >> need those versions)? The JCR API does not seem to give me any way to even >> restore these nodes if I wanted to, since the API seems to require the >> original node, from which I can then iterate over the saved versions and >> remove if needed. In our case the original nodes have been removed, so >> there is no starting point to use to iterate over the version history. >> >> For now, I have hacked a solution where, I look up the file name for the >> jcr:data, and then using the directory structure JackRabbit uses, delete the >> underlying files, so I have reclaimed the disk space. This is obviously >> non-ideal, and I would like to find out the proper way to go about removing >> old versions we do not need and reclaiming the disk space. > > The version histories are regular nodes. Why don't you use the JCR API to > delete them? > > Best regards, Julian > Hi Julian, Aren’t all nodes under “jcr:system” protected by default? I tried to delete the version node as you suggested and got an exception: Removing version node: /jcr:system/jcr:versionStorage/3a/5f/27/3a5f2714-03de-4b2b-8bb8-1b2bd1a6cb2b ConstraintViolationException: Unable to perform operation. Node is protected. Rakesh
