<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Orphan files in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20913#M9846</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can set the cleaner to delete orphaned content that is older than a day at the minimum.&amp;nbsp; If you don't have enough space to handle two days'-worth of generated content, then you'll need to delete as soon as the node is deleted. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can delete the content when the node is deleted as long as you first check to ensure that no other nodes are using the content first.&amp;nbsp; This can arise if nodes are copied or versioned.&amp;nbsp; It's not too difficult to check, but you'll have to hook into the persistence layer to execute a query similar to that done by the cleaner job.&amp;nbsp; There'll be a performance hit in this case, so ensure that you set up a good index on the &lt;/SPAN&gt;&lt;STRONG&gt;node_properties.string_value&lt;/STRONG&gt;&lt;SPAN&gt; column.&amp;nbsp; I've raised a task to ensure that the URL goes into the Lucene index (&lt;/SPAN&gt;&lt;A href="http://www.alfresco.org/jira/browse/AR-458" rel="nofollow noopener noreferrer"&gt;http://www.alfresco.org/jira/browse/AR-458&lt;/A&gt;&lt;SPAN&gt;)- this will make the search much faster and make this more feasible.&amp;nbsp; I'd recommend doing the task in the background, i.e. farm the potential orphan URL to a list that gets dealt with post-transaction.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Perhaps we should build this functionality into the system as optional behaviour.&amp;nbsp; Most systems don't have such space limitations, but those that do …&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How does the content compress?&amp;nbsp; It would be possible to move older content to a compressed store that will still be accessible to the server.&amp;nbsp; It can sit there for a while until the cleaner comes around and decides that it must go.&amp;nbsp; This multi-store support is only part of the Enterprise, though.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 01 Mar 2006 14:05:06 GMT</pubDate>
    <dc:creator>derek</dc:creator>
    <dc:date>2006-03-01T14:05:06Z</dc:date>
    <item>
      <title>Orphan files</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20910#M9843</link>
      <description>Hi community,My question seems a bit confusing, but after several days I spent on it without any success I have to ask: is it reliable and efficient implementation of File Content Storage used in Alfresco?Some details of my problem. A new Space was created without applying versioning aspect. I added</description>
      <pubDate>Sat, 25 Feb 2006 16:38:15 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20910#M9843</guid>
      <dc:creator>unknown-user</dc:creator>
      <dc:date>2006-02-25T16:38:15Z</dc:date>
    </item>
    <item>
      <title>Re: Orphan files</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20911#M9844</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The content store cleaner is active in the V1.2 release.&amp;nbsp; You are right that it uses the last modified date, but then again, content is never modified after the stream to it has been closed.&amp;nbsp; Additionally, the cleaner is set to only delete orphaned content older than 14 days.&amp;nbsp; As if that isn't enough, the cleaner listener will currently back up the orphaned content.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I assure you that the content store is robust and efficient - for the following reasons:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;1.&lt;/STRONG&gt;&lt;SPAN&gt; Content is referenced by a node property or properties of type d:content.&amp;nbsp; There may be several nodes or properties referencing the same content in the content store.&amp;nbsp; So, we have shared content between the version stores, content copies, etc.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;2.&lt;/STRONG&gt;&lt;SPAN&gt; We use the filesystem instead of the database.&amp;nbsp; This removes incompatibility issues across database vendors.&amp;nbsp; Additionally, the random file access support (as required by CIFS and other apps) cannot be provided by database persistence without first copying files to the filesystem.&amp;nbsp; This goes for both reads and writes.&amp;nbsp; Although we already have support to do the random-access spoofing, it is not required.&amp;nbsp; There are also size issues at play here.&amp;nbsp; Where would you rather store a 5GB file?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;3.&lt;/STRONG&gt;&lt;SPAN&gt; Backup is much simpler with the metadata split from the content.&amp;nbsp; The filestore can be backed up in whatever state it is in after the database has been backed up.&amp;nbsp; Since copying large files can take time, this means that the system doesn't have to lock the database against writes while taking a dump of the content.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;4.&lt;/STRONG&gt;&lt;SPAN&gt; Our metadata store can function with all content missing.&amp;nbsp; This means that supported customers can give us a copy of the metadata for diagnostics without giving away any of the actual content.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;5.&lt;/STRONG&gt;&lt;SPAN&gt; We have zero wait for content reads or writes.&amp;nbsp; Any system that persists to filesystem and overwrites the original file will, at some time before the end of the transaction, spend time overwriting the content.&amp;nbsp; During this time, all read requests will have to wait.&amp;nbsp; Additionally, the write won't be able to start until all read requests have finished.&amp;nbsp; Then, during the write, there will be a small chance of corruption in the case of sudden VM termination.&amp;nbsp; We don't have that issue.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;6.&lt;/STRONG&gt;&lt;SPAN&gt; By not changing files once they have been closed, we can safely and quickly perform incremental backups.&amp;nbsp; We can mix content stores up and spread files around.&amp;nbsp; We can archive files to compressed storage whilst still having them available to the repo.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can be sure that:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt;The cleaner will remove orphaned content only&lt;BR /&gt;Content is shared&lt;BR /&gt;Access is fast&lt;BR /&gt;Content access is transactionally safe&lt;/UL&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Feb 2006 10:53:00 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20911#M9844</guid>
      <dc:creator>derek</dc:creator>
      <dc:date>2006-02-28T10:53:00Z</dc:date>
    </item>
    <item>
      <title>Re: Orphan files</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20912#M9845</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Derek,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you for the explanation. I?ve just downloaded V1.2 release and figured out how the store cleaner manages the orphaned content.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;May be some words about a system we are developing now to clarify why it?s so important to rely on safe storage mechanism. The system will manage huge amount of large files (raster data 200-500 Mb in size) and many users will need to update the images quite intensively. That?s why I?m afraid we cannot wait until the cleaner does its job ? our underlying SAN may exceed the limits during a working day. Of coarse, buying a new storage would be a good solution, but not in our case&lt;img id="smileysad" class="emoticon emoticon-smileysad" src="https://connect.hyland.com/i/smilies/16x16_smiley-sad.png" alt="Smiley Sad" title="Smiley Sad" /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Could you please give me some hints how is it possible to implement a custom handler that will delete old version (not real version in terms of Alfresco system) of just modified file? As I understood WriteStreamListener could be a proper place to apply our requirements, am I right?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Another issue I have concern about is Delete content operation. Can I safely delete the storage file as a corresponding Node (on NodeService) is deleted? That?s clear, the store cleaner will do that, but could it be done immediately?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Valera&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Feb 2006 13:43:42 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20912#M9845</guid>
      <dc:creator>unknown-user</dc:creator>
      <dc:date>2006-02-28T13:43:42Z</dc:date>
    </item>
    <item>
      <title>Re: Orphan files</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20913#M9846</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can set the cleaner to delete orphaned content that is older than a day at the minimum.&amp;nbsp; If you don't have enough space to handle two days'-worth of generated content, then you'll need to delete as soon as the node is deleted. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can delete the content when the node is deleted as long as you first check to ensure that no other nodes are using the content first.&amp;nbsp; This can arise if nodes are copied or versioned.&amp;nbsp; It's not too difficult to check, but you'll have to hook into the persistence layer to execute a query similar to that done by the cleaner job.&amp;nbsp; There'll be a performance hit in this case, so ensure that you set up a good index on the &lt;/SPAN&gt;&lt;STRONG&gt;node_properties.string_value&lt;/STRONG&gt;&lt;SPAN&gt; column.&amp;nbsp; I've raised a task to ensure that the URL goes into the Lucene index (&lt;/SPAN&gt;&lt;A href="http://www.alfresco.org/jira/browse/AR-458" rel="nofollow noopener noreferrer"&gt;http://www.alfresco.org/jira/browse/AR-458&lt;/A&gt;&lt;SPAN&gt;)- this will make the search much faster and make this more feasible.&amp;nbsp; I'd recommend doing the task in the background, i.e. farm the potential orphan URL to a list that gets dealt with post-transaction.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Perhaps we should build this functionality into the system as optional behaviour.&amp;nbsp; Most systems don't have such space limitations, but those that do …&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How does the content compress?&amp;nbsp; It would be possible to move older content to a compressed store that will still be accessible to the server.&amp;nbsp; It can sit there for a while until the cleaner comes around and decides that it must go.&amp;nbsp; This multi-store support is only part of the Enterprise, though.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Mar 2006 14:05:06 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/orphan-files/m-p/20913#M9846</guid>
      <dc:creator>derek</dc:creator>
      <dc:date>2006-03-01T14:05:06Z</dc:date>
    </item>
  </channel>
</rss>

