Skip to content
Snippets Groups Projects
Commit 83e1aa9d authored by catch's avatar catch
Browse files

Issue #3469792 by amateescu, antonnavi, smustgrave, djdevin, quietone:...

Issue #3469792 by amateescu, antonnavi, smustgrave, djdevin, quietone: Workspaces with thousands of items can't be published
parent 4548e070
No related branches found
No related tags found
15 merge requests!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2964Issue #2865710 : Dependencies from only one instance of a widget are used in display modes,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2062Issue #3246454: Add weekly granularity to views date sort,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
Pipeline #306053 passed with warnings
Pipeline: drupal

#306080

    Pipeline: drupal

    #306065

      Pipeline: drupal

      #306060

        ......@@ -4,6 +4,7 @@
        use Drupal\Core\Database\Connection;
        use Drupal\Core\Entity\EntityTypeManagerInterface;
        use Drupal\Core\Site\Settings;
        use Drupal\Core\Utility\Error;
        use Psr\Log\LoggerInterface;
        ......@@ -31,6 +32,10 @@ public function merge() {
        try {
        $transaction = $this->database->startTransaction();
        $max_execution_time = ini_get('max_execution_time');
        $step_size = Settings::get('entity_update_batch_size', 50);
        $counter = 0;
        foreach ($this->getDifferringRevisionIdsOnSource() as $entity_type_id => $revision_difference) {
        $entity_type = $this->entityTypeManager->getDefinition($entity_type_id);
        $revisions_on_source = $this->entityTypeManager->getStorage($entity_type_id)
        ......@@ -48,6 +53,14 @@ public function merge() {
        $revision->{$field_name}->target_id = $this->targetWorkspace->id();
        $revision->setSyncing(TRUE);
        $revision->save();
        $counter++;
        // Extend the execution time in order to allow processing workspaces
        // that contain a large number of items.
        if ((int) ($counter / $step_size) >= 1) {
        set_time_limit($max_execution_time);
        $counter = 0;
        }
        }
        }
        }
        ......
        ......@@ -4,6 +4,7 @@
        use Drupal\Core\Database\Connection;
        use Drupal\Core\Entity\EntityTypeManagerInterface;
        use Drupal\Core\Site\Settings;
        use Drupal\Core\StringTranslation\StringTranslationTrait;
        use Drupal\Core\Utility\Error;
        use Drupal\workspaces\Event\WorkspacePostPublishEvent;
        ......@@ -45,9 +46,11 @@ public function publish() {
        try {
        $transaction = $this->database->startTransaction();
        // @todo Handle the publishing of a workspace with a batch operation in
        // https://www.drupal.org/node/2958752.
        $this->workspaceManager->executeOutsideWorkspace(function () use ($tracked_entities) {
        $max_execution_time = ini_get('max_execution_time');
        $step_size = Settings::get('entity_update_batch_size', 50);
        $counter = 0;
        foreach ($tracked_entities as $entity_type_id => $revision_difference) {
        $entity_revisions = $this->entityTypeManager->getStorage($entity_type_id)
        ->loadMultipleRevisions(array_keys($revision_difference));
        ......@@ -68,6 +71,14 @@ public function publish() {
        $entity->original = $default_revisions[$entity->id()];
        $entity->save();
        $counter++;
        // Extend the execution time in order to allow processing workspaces
        // that contain a large number of items.
        if ((int) ($counter / $step_size) >= 1) {
        set_time_limit($max_execution_time);
        $counter = 0;
        }
        }
        }
        });
        ......
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Finish editing this message first!
        Please register or to comment