Commit 4e0fc992 authored by Jakob P's avatar Jakob P
Browse files

Issue #3288536 by japerry: Drupal 10 compatibility. Update minimum version to Drupal 9.1.

parent b0448788
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ the 7.x-1.x version of this module!
- One of the two PECL memcache packages:
  - http://pecl.php.net/package/memcache (recommended)
  - http://pecl.php.net/package/memcached
- Using the submodule, memcache_admin, requires Drupal 9.1 or later.

For more detailed instructions on installing a memcached daemon or either of the
memcache PECL extensions, please see the documentation online at
+1 −1
Original line number Diff line number Diff line
@@ -2,4 +2,4 @@ name: Memcache
description: 'High performance integration with memcache.'
type: module
package: 'Performance and scalability'
core_version_requirement: ^8.9 || ^9
core_version_requirement: '^9.1 || ^10'
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ services:
    arguments: ['@memcache.factory', 'memcache_bin_timestamps', 0.001]
  cache.backend.memcache:
    class: Drupal\memcache\MemcacheBackendFactory
    arguments: ['@memcache.factory', '@cache_tags.invalidator.checksum', '@memcache.timestamp.invalidator.bin']
    arguments: ['@memcache.factory', '@cache_tags.invalidator.checksum', '@memcache.timestamp.invalidator.bin', '@datetime.time']
  memcache.lock.factory:
    class: Drupal\memcache\Lock\MemcacheLockFactory
    arguments: ['@memcache.factory']
+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ name: Memcache Admin
description: Adds a User Interface to monitor the Memcache for this site.
package: Performance and scalability
type: module
core_version_requirement: ^8.9 || ^9
core_version_requirement: '^9.1 || ^10'

configure: memcache_admin.settings

+72 −11
Original line number Diff line number Diff line
@@ -2,12 +2,17 @@

namespace Drupal\memcache_admin\Controller;

use Drupal\Component\Datetime\Time;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Datetime\DateFormatterInterface;
use Drupal\Core\Link;
use Drupal\Core\Messenger\MessengerTrait;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\Url;
use Drupal\memcache\Driver\MemcacheDriverFactory;
use Drupal\memcache_admin\Event\MemcacheStatsEvent;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventDispatcher;

/**
 * Memcache Statistics.
@@ -17,6 +22,64 @@ class MemcacheStatisticsController extends ControllerBase {
  use MessengerTrait;
  use StringTranslationTrait;

  /**
   * Memcache Driver Factory.
   * 
   * @var \Drupal\memcache\Driver\MemcacheDriverFactory
   */
  protected $memcacheDriverFactory;

  /**
   * Event Dispatcher Service.
   * 
   * @var \Symfony\Component\EventDispatcher\EventDispatcher
   */
  protected $dispatcher;

  /**
   * Core Date Formatter Service.
   * 
   * @var \Drupal\Core\Datetime\DateFormatterInterface
   */
  protected $dateFormatter;

  /**
   * Core DateTime Service.
   * 
   * @var \Drupal\Component\Datetime\Time
   */
  protected $time;

  /**
   * ModalFormContactController constructor.
   *
   * @param \Drupal\Core\Form\FormBuilder $form_builder
   *   The form builder.
   */
  public function __construct(MemcacheDriverFactory $memcacheDriverFactory, EventDispatcher $dispatcher, DateFormatterInterface $dateFormatter, Time $time) {
    $this->memcacheDriverFactory = $memcacheDriverFactory;
    $this->dispatcher = $dispatcher;
    $this->dateFormatter = $dateFormatter;
    $this->time = $time;
  }

  /**
   * {@inheritdoc}
   *
   * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
   *   The Drupal service container.
   *
   * @return static
   */
  public static function create(ContainerInterface $container) {
    return new static(
      $container->get('memcache.factory'),
      $container->get('event_dispatcher'),
      $container->get('date.formatter'),
      $container->get('datetime.time'),
    );
  }

  /**
   * Callback for the Memcache Stats page.
   *
@@ -29,14 +92,13 @@ class MemcacheStatisticsController extends ControllerBase {
  public function statsTable($bin = 'default') {
    $bin = $this->getBinMapping($bin);
    /** @var $memcache \Drupal\memcache\DrupalMemcacheInterface */
    $memcache = \Drupal::service('memcache.factory')->get($bin, TRUE);
    $memcache = $this->memcacheDriverFactory->get($bin, TRUE);

    // Instantiate our event.
    $event = new MemcacheStatsEvent($memcache, $bin);

    // Get the event_dispatcher service and dispatch the event.
    $event_dispatcher = \Drupal::service('event_dispatcher');
    $event_dispatcher->dispatch(MemcacheStatsEvent::BUILD_MEMCACHE_STATS, $event);
    $this->dispatcher->dispatch($event, MemcacheStatsEvent::BUILD_MEMCACHE_STATS);

    // Report the PHP Memcache(d) driver version.
    if ($memcache->getMemcache() instanceof \Memcached) {
@@ -47,8 +109,7 @@ class MemcacheStatisticsController extends ControllerBase {
    }

    // Get the event_dispatcher service and dispatch the event.
    $event_dispatcher = \Drupal::service('event_dispatcher');
    $event_dispatcher->dispatch(MemcacheStatsEvent::REPORT_MEMCACHE_STATS, $event);
    $this->dispatcher->dispatch($event, MemcacheStatsEvent::REPORT_MEMCACHE_STATS);

    $output = ['#markup' => '<p>' . $raw_stats['driver_version']];
    $output[] = $this->statsTablesOutput($bin, $event->getServers(), $event->getReport());
@@ -74,7 +135,7 @@ class MemcacheStatisticsController extends ControllerBase {
    $server = str_replace('!', '/', $server);

    $slab = \Drupal::routeMatch()->getParameter('slab');
    $memcache = \Drupal::service('memcache.factory')->get($cluster, TRUE);
    $memcache = $this->memcacheDriverFactory->get($cluster, TRUE);
    if ($type == 'slabs' && !empty($slab)) {
      $stats = $memcache->stats($cluster, $slab, FALSE);
    }
@@ -115,7 +176,7 @@ class MemcacheStatisticsController extends ControllerBase {
   * Helper function, reverse map the memcache_bins variable.
   */
  private function binMapping($bin = 'cache') {
    $memcache      = \Drupal::service('memcache.factory')->get(NULL, TRUE);
    $memcache      = $this->memcacheDriverFactory->get(NULL, TRUE);
    $memcache_bins = $memcache->getBins();

    $bins = array_flip($memcache_bins);
@@ -168,7 +229,7 @@ class MemcacheStatisticsController extends ControllerBase {
   * Generates render array for output.
   */
  private function statsTablesOutput($bin, $servers, $stats) {
    $memcache      = \Drupal::service('memcache.factory')->get(NULL, TRUE);
    $memcache      = $this->memcacheDriverFactory->get(NULL, TRUE);
    $memcache_bins = $memcache->getBins();

    $links = [];
@@ -220,7 +281,7 @@ class MemcacheStatisticsController extends ControllerBase {
  private function statsTablesRawOutput($cluster, $server, $stats, $type) {
    $user          = \Drupal::currentUser();
    $current_type  = isset($type) ? $type : 'default';
    $memcache      = \Drupal::service('memcache.factory')->get(NULL, TRUE);
    $memcache      = $this->memcacheDriverFactory->get(NULL, TRUE);
    $memcache_bins = $memcache->getBins();
    $bin           = isset($memcache_bins[$cluster]) ? $memcache_bins[$cluster] : 'default';
    $slab = \Drupal::routeMatch()->getParameter('slab');
@@ -293,7 +354,7 @@ class MemcacheStatisticsController extends ControllerBase {
              $v = $this->t('infinite');
            }
            else {
              $v = $this->t('in @time', ['@time' => \Drupal::service('date.formatter')->formatInterval($v - \Drupal::time()->getRequestTime())]);
              $v = $this->t('in @time', ['@time' => $this->dateFormatter->formatInterval($v - $this->time->getRequestTime())]);
            }
          }
          $build['table'][$row]['value'][$subrow] = [
@@ -316,7 +377,7 @@ class MemcacheStatisticsController extends ControllerBase {
   * Helper function, reverse map the memcache_bins variable.
   */
  protected function getBinMapping($bin = 'cache') {
    $memcache      = \Drupal::service('memcache.factory')->get(NULL, TRUE);
    $memcache      = $this->memcacheDriverFactory->get(NULL, TRUE);
    $memcache_bins = $memcache->getBins();

    $bins = array_flip($memcache_bins);
Loading