1

I have a new Drupal 8 site, where I installed few minor modules and Commerce 2.0 beta3, but the site has only 2 nodes so far, even the commerce tables are empty.

However even with PHP memory limit set to 2048M it exhausts it all giving me this message:

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 10464376 bytes) in /var/www/website/public_html/modules/backup_migrate/vendor/backupmigrate/core/src/Source/MySQLiSource.php on line 347

For this example the PHP memory limit was 1024M, I tried database only backup with cashe tables excluded.

I remember being able to run B&M with 256M allocation on D7 and hundreds of nodes, loads of modules and content types.

As I don't see this issue anywhere on the internet or reported as an issue on the module page, I'm left to believe there has to be something specific to what I may have done wrong?

In the log I also find the following (with full error reporting on):

Notice: Undefined index: settings_profile_id in Drupal\backup_migrate\Form\BackupMigrateQuickBackupForm->submitForm() (line 84 of /var/www/website/public_html/modules/backup_migrate/src/Form/BackupMigrateQuickBackupForm.php)

System specs:

Ubuntu server 16.04

Running Apache server

With PHP7

Drupal version 8.2.3

EDIT:

I found a few extra errors on different tests:

Notice: Undefined index: groups in BackupMigrate\Drupal\Config\DrupalConfigHelper::addFieldsFromSchema() (line 91 of /var/www/website/public_html/modules/backup_migrate/src/Config/DrupalConfigHelper.php)

Warning: Invalid argument supplied for foreach() in BackupMigrate\Drupal\Config\DrupalConfigHelper::addFieldsFromSchema() (line 91 of /var/www/website/public_html/modules/backup_migrate/src/Config/DrupalConfigHelper.php)

Notice: Undefined index: #description in BackupMigrate\Drupal\Config\DrupalConfigHelper::addFieldsFromSchema() (line 116 of /var/www/website/public_html/modules/backup_migrate/src/Config/DrupalConfigHelper.php)

Where the last one appears twice in a row every error sequence.

Appreciate all help!

Alari

1 Answer 1

0

I managed to reduce the memory exhaustion with remedying the last edit's errors in the following matter:

I added a not empty check for the "groups" index in the array around the foreach function on the 91-st line of code in DrupalConfigHelper.php

static public function addFieldsFromSchema(&$form, $schema, ConfigInterface $config, $parents = []) {
// Add the specified groups.
// Temp fix for "Undefined index: groups..."
if(isset($schema['groups']) && !empty($schema['groups'])){
  foreach ($schema['groups'] as $group_key => $item) {
    // If the group is just called 'default' then use the key from the plugin as the group key.
    // @TODO: make this less ugly.
    if ($group_key == 'default' && $parents) {
      $group_key = end($parents);
    }
    if (!isset($form[$group_key])) {
      $form[$group_key] = [
        '#type' => 'fieldset',
        '#title' => $item['title'],
        '#tree' => FALSE,
      ];
    }
  }
}

And fixed the "undefined index #description" error on line 116 by checking if the "#description" index exists, and if not create it with empty value to be processed on the initial 116 line.

switch ($item['type']) {
    case 'text':
      $form_item['#type'] = 'textfield';
      if (!empty($item['multiple'])) {
        $form_item['#type'] = 'textarea';
        // Temp fix for "Undefined index #description..."
        if (!isset($form_item['##description'])) {
          $form_item['##description'] = '';
        }
        $form_item['#description'] .= ' ' . t('Add one item per line.');
        $form_item['#element_validate'] = ['BackupMigrate\Drupal\Config\DrupalConfigHelper::validateMultiText'];
        $value  = implode("\n", $value);
      }
      if (!empty($item['multiline'])) {
        $form_item['#type'] = 'textarea';
      }
...

Now backup works nicely.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.