Problem/Motivation

There are some cases where an item might fail generate zip information. If this is the case, it should handle it more gracefully and not create a pdo exception when trying to save a file that does not exist.


>  [warning] ZipArchive::close(): Failure to create temporary file: No such file or directory ArchiveService.php:634
>  [error]  Failed to create zip file on aggregated archive for current: dialysis-facilities - dataset-archives/current/theme/theme_dialysis-facilities_current.zip. 
>  [warning] Undefined array key "drupal_file_uri" ArchiveService.php:278
>  [warning] Undefined array key "file_url" ArchiveService.php:279
>  [error]  Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'uri' cannot be null: INSERT INTO "file_managed" ("uuid", "langcode", "uid", "filename", "uri", "filemime", "filesize", "status", "created", "changed") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9); Array
> (
>     [:db_insert_placeholder_0] => dd314086-b582-41e7-ad19-06a6c0ea8c63
>     [:db_insert_placeholder_1] => en
>     [:db_insert_placeholder_2] => 
>     [:db_insert_placeholder_3] => 
>     [:db_insert_placeholder_4] => 
>     [:db_insert_placeholder_5] => application/zip
>     [:db_insert_placeholder_6] => 
>     [:db_insert_placeholder_7] => 1
>     [:db_insert_placeholder_8] => 1763517661
>     [:db_insert_placeholder_9] => 1763517661
> )
>  in Drupal\mysql\Driver\Database\mysql\ExceptionHandler->handleExecutionException() (line 45 of /var/www/html/docroot/core/modules/mysql/src/Driver/Database/mysql/ExceptionHandler.php). 
>  [error]  Error processing queue item: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'uri' cannot be null: INSERT INTO "file_managed" ("uuid", "langcode", "uid", "filename", "uri", "filemime", "filesize", "status", "created", "changed") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9); Array
> (
>     [:db_insert_placeholder_0] => dd314086-b582-41e7-ad19-06a6c0ea8c63
>     [:db_insert_placeholder_1] => en
>     [:db_insert_placeholder_2] => 
>     [:db_insert_placeholder_3] => 
>     [:db_insert_placeholder_4] => 
>     [:db_insert_placeholder_5] => application/zip
>     [:db_insert_placeholder_6] => 
>     [:db_insert_placeholder_7] => 1
>     [:db_insert_placeholder_8] => 1763517661
>     [:db_insert_placeholder_9] => 1763517661
> )
>  
>  [error]  Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'uri' cannot be null: INSERT INTO "file_managed" ("uuid", "langcode", "uid", "filename", "uri", "filemime", "filesize", "status", "created", "changed") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9); Array
> (
>     [:db_insert_placeholder_0] => dd314086-b582-41e7-ad19-06a6c0ea8c63
>     [:db_insert_placeholder_1] => en
>     [:db_insert_placeholder_2] => 
>     [:db_insert_placeholder_3] => 
>     [:db_insert_placeholder_4] => 
>     [:db_insert_placeholder_5] => application/zip
>     [:db_insert_placeholder_6] => 
>     [:db_insert_placeholder_7] => 1
>     [:db_insert_placeholder_8] => 1763517661
>     [:db_insert_placeholder_9] => 1763517661
> )
>  in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save() (line 817 of /var/www/html/docroot/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php). 
>  [warning] ZipArchive::close(): Failure to create temporary file: No such file or directory ArchiveService.php:634
>  [error]  Failed to create zip file on aggregated archive for current: home-health-services - dataset-archives/current/theme/theme_home-health-services_current.zip. 
>  [warning] Undefined array key "drupal_file_uri" ArchiveService.php:278
>  [warning] Undefined array key "file_url" ArchiveService.php:279

Acceptance Criteria

Testing steps

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

swirt created an issue. See original summary.

  • swirt committed 34a3dd44 on 1.0.x
    feat: #3558640 Prevent Mysql error if fail to create zip
    
swirt’s picture

This has been fixed. If the archiver encounters a dataset that has no file or is orphaned, it will more gracefully log an error but keep moving.

swirt’s picture

Status: Active » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

swirt’s picture

Status: Fixed » Closed (fixed)

Released in Beta 6