[rt-devel] Does ExternalStorage actually move images to disk?

Shawn Moore shawn at bestpractical.com
Tue Nov 24 16:01:43 EST 2015

Hi Alexander,
On 2015年11月24日 at 9:52:37, Alexander B. Zubkov (info at zubkov.info) wrote:


Sorry for bothering you. I installed ExternalStorage plugin for RT but it does not help much, it takes out of DB less than 15% (996Mb in DB, 143Mb on disk). I really expected every attachment should be moved. I took a look at source code and I don't understand a few things:
I’m happy to report that in 4.4, we moved the ExternalStorage extension into core as a standard RT feature. As part of that I cleaned up many of the issues you ran into:

                FIELD     => 'ContentType',
                OPERATOR  => 'NOT STARTSWITH',
                VALUE     => $_,
                SUBCLAUSE => 'applies',
                ENTRYAGGREGATOR => "AND",
            ) for "text/", "message/", "image/", "multipart/";

Are you intentionally skipping images? Why? Documentation say images should be moved.
The code has been refactored in core. Image attachments are not skipped.

    } elsif ($type =~ m{^image/}) {
        # Ditto images, which may be displayed inline
        return 1 if $length > 10 * 1024 * 1024;
        return 0;

It means any file less than 10Mb will not be moved? Does it make sense?
Correct. However, in the cored version of ExternalStorage, this is now configuration (ExternalStorageCutoffSize) so you can tune it down to 500kb or whatever threshold makes sense for you.

I tried to patch to 10Kb (10 * 1024) in 3 places. After that a few more files (about 20) were moved but still so much data is in DB. But I have a 26k tickets archive, it looks like it processes only tickets from last day but I would like it to process ALL attachments from very beginning.
This is because we maintain a high water mark for avoiding processing the same attachments over and over and over again.

So is it possible somehow to force this plugin to move all images and other files out of DB? Thanks.
If you *temporarily* change the line in the script (extract-attachments in the extension, rt-externalize-attachments in 4.4):

$last = $last ? $last->Content : {};

to just

$last = {};

it should re-process all attachments. It won’t re-externalize attachments that were already externalized.

Hope this helps,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-devel/attachments/20151124/7c9d6da7/attachment.html>

More information about the rt-devel mailing list