Uploaded image for project: 'eZ Publish / Platform'
  1. eZ Publish / Platform
  2. EZP-26244

Image aliases not regenerated in DFS cluster if main alias expired in 'ezdfsfile' table

    XMLWordPrintable

Details

    Description

      Steps to reproduce:

      1. Prepare a test eZ Publish 5.4 installation, fully updated to the latest sub-version (currently 5.4.7) and set up in DFS cluster mode;
      2. On the admin siteaccess, create a test image in media library e.g. "/Media/Images/mountain.png";
      3. Create an article that uses that image, with a "medium" image alias;
      4. The 'ezdfsfile' table will now have these entries for that image:

      SELECT * FROM ezdfsfile WHERE name LIKE '%mountain.%';
      +--------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+----------------------------------+-----------+-------+--------+------------+---------+--------+
      | name                                                                                             | name_trunk                                                                                       | name_hash                        | datatype  | scope | size   | mtime      | expired | status |
      +--------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+----------------------------------+-----------+-------+--------+------------+---------+--------+
      | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png.png           | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png.png           | 2d0c3993287e58876a35e297ea74b05b | image/png | image | 203450 | 1472748215 |       0 |      0 |
      | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_small.png     | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_small.png     | 715a59a9c63d61dc715dbbc4b696f31e | image/png | image |   6087 | 1472748222 |       0 |      0 |
      | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_reference.png | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_reference.png | 9fc3dcab7adcd497a0d5accd192ad523 | image/png | image | 179328 | 1472748222 |       0 |      0 |
      | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_medium.png    | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_medium.png    | b4b864be9203cb83989ab00d5ca96d16 | image/png | image |  21969 | 1472748433 |       0 |      0 |
      +--------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+----------------------------------+-----------+-------+--------+------------+---------+--------+
      4 rows in set (0.00 sec)
      

      5. If the corresponding 'ezdfsfile' entry for the "medium" alias is expired i.e. 'ezdfsfile.expired' = 1, refreshing the frontend article that contains the image will unexpire it;
      6. However, if the main image (in this case, "mountain.png.png") is also expired, that will no longer work, and it becomes impossible to unexpire the alias by refreshing the page;

      SELECT * FROM ezdfsfile WHERE name LIKE '%mountain.%';
      +--------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+----------------------------------+-----------+-------+--------+------------+---------+--------+
      | name                                                                                             | name_trunk                                                                                       | name_hash                        | datatype  | scope | size   | mtime      | expired | status |
      +--------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+----------------------------------+-----------+-------+--------+------------+---------+--------+
      | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png.png           | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png.png           | 2d0c3993287e58876a35e297ea74b05b | image/png | image | 203450 | 1472748215 |       1 |      0 |
      | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_small.png     | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_small.png     | 715a59a9c63d61dc715dbbc4b696f31e | image/png | image |   6087 | 1472748222 |       0 |      0 |
      | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_reference.png | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_reference.png | 9fc3dcab7adcd497a0d5accd192ad523 | image/png | image | 179328 | 1472748222 |       0 |      0 |
      | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_medium.png    | var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_medium.png    | b4b864be9203cb83989ab00d5ca96d16 | image/png | image |  44011 | 1472749486 |       1 |      0 |
      +--------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+----------------------------------+-----------+-------+--------+------------+---------+--------+
      4 rows in set (0.00 sec)
      

      7. If you access the image directly in the URL, like this:

      http://example.com/var/ezdemo_site/storage/images/media/images/mountain.png/690-1-eng-GB/mountain.png_medium.png

      ...an HTTP 500 error will be displayed, and this error will be generated in the symfony log:

      CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalErrorException: "Error: Call to a member function getTimestamp() on a non-object" at /var/www/54ezdemodfs.com/vendor/ezsystems/ezpublish-kernel/eZ/Bundle/EzPublishIOBundle/BinaryStreamResponse.php line 102 
      

      Note: all image aliases exist in the file system.

      Attachments

        Activity

          People

            Unassigned Unassigned
            nuno.oliveira-obsolete@ez.no Nuno Oliveira (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: