I have created a custom module with an .install file, which includes some hook_update_N() and hook_update_N(&$sandbox) update hooks.

These are used to update a collection of existing nodes.

Whenever I run drush updb the site automatically enters maintenance mode (anonymous requests get a 503), and if the update is successful, the site goes back online. All by itself.

I couldn't find any resources on the web about this situation. Is it normal? Is there a way to disable this behavior?

up vote 6 down vote accepted

It does look to be normal, yes. Drush's UpdateDBCommands::updateBatch, which is responsible for processing the updates, contains this:

batch_set($batch);

// See updateFinished() for the restore of maint mode.
$this->maintenanceModeOriginalState = \Drupal::service('state')->get('system.maintenance_mode');
\Drupal::service('state')->set('system.maintenance_mode', true);
drush_backend_batch_process();

The code deliberately sets maintenance mode to true before processing the batch, and then restores the original state when it's done.

Running drush help updb lists the following options:

  • --cache-clear[=CACHE-CLEAR] Clear caches upon completion. [default: "true"]
  • --entity-updates Run automatic entity schema updates at the end of any update hooks.
  • --post-updates[=POST-UPDATES] Run post updates after hook_update_n and entity updates. [default: "true"]
  • --no-cache-clear Negate --cache-clear option.
  • --no-post-updates Negate --post-updates option.

So there doesn't seem to be an obvious way to disable the behaviour. But if you're updating the database you probably don't want people to be able to access the site at the same time. There's a good explanation for that here.

  • Thank you. So I suppose if I use update.php instead of drush, I can avoid having the site enter maintenance mode, as it provides you an option there. – atwixtor Oct 11 at 19:22
  • 2
    Yes that's the way to get around it, but be sure to read my last edit and Greg's explanation in the linked post as to why that might not be the best idea – Clive Oct 11 at 19:23

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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