Problem/Motivation

Database drivers that extend another database driver have to add the line with something like: include_once dirname(__DIR__, 8) . '/mysql/src/Driver/Database/mysql/Connection.php';. When this line is not added, the database driver will fail the installation proces. The extending database driver is then using a class that is not autoloaded and therefor does not exist.
The include_once only works when the module with the extending database driver is in the same level in the directory structure. This is not very practical for sitebuilders. It is also not to the standard Drupal Core would like its code to be.
Example database drivers that extend another database driver are: https://www.drupal.org/project/mysql56 and https://www.drupal.org/project/pgsql_fallback.

Proposed resolution

Improve the autoloading for database drivers that are dependent on another database driver. Add extension for database drivers and lists of database drivers.

Improve the autoloading for the parent database driver during installation.

Remaining tasks

TBD

User interface changes

None

API changes

The function drupal_get_database_types() has been deprecated and is being replaced by \Drupal::service('extension.list.database_driver')->getInstallableList();.

The function drupal_detect_database_types() has been deprecated and is being replaced by \Drupal::service('extension.list.database_driver')->getInstallableList();.

The method Drupal\Core\Database\Database::findDriverAutoloadDirectory() has been deprecated and is being replaced by \Drupal::service('extension.list.database_driver')->get($namespace)->getAutoloadInfo().

Extensions for database drivers have been added.

The service for getting a database driver or a list of database drivers is \Drupal::service('extension.list.database_driver').

Data model changes

None

Release notes snippet

TBD

Issue fork drupal-3256642

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

daffie created an issue. See original summary.

daffie’s picture

Status: Active » Needs review
StatusFileSize
new18.5 KB

The fix.

mondrake’s picture

Ouch… I have been bitten by this too. Yes we need to be able to add additional namespaces to the class loader very early. What I am afraid of in this patch is performance… scanning the directory to find the module at every request is not very fancy. Need to think about it.

daffie’s picture

@mondrake: If you a better and/or more performant solution, then please say so.

mondrake’s picture

Just thinking. We have this comment in Drupal\Core\Site\Settings:

        // If the database driver is provided by a module, then its code may
        // need to be instantiated prior to when the module's root namespace
        // is added to the autoloader, because that happens during service
        // container initialization but the container definition is likely in
        // the database. Therefore, allow the connection info to specify an
        // autoload directory for the driver.

So, if a db driver module is dependent on some other modules, the same as above applies to the dependencies too.

I am wondering if, as part of installation, we could stash the 'additional autoloads' in the $databases array in settings.php, by looking at the dependencies set in {module}.info.yml. Then at every request we'll just pick those without parsing the directories.

Something like, to illustrate the idea:

$databases['default']['default'] = array (
  'database' => '/var/www/d91/sites/default/files/sqlite-drudbal',
  'username' => NULL,
  'password' => NULL,
  ...
  'dependencies' => array(
    'mysql' => array(
      'namespace' => 'Drupal\\mysql\\Driver\\Database\\mysql',
      'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/',
    ),
    'sqlite' => array(
      'namespace' => 'Drupal\\sqlite\\Driver\\Database\\sqlite',
      'autoload' => 'core/modules/sqlite/src/Driver/Database/sqlite/',
    ),
  ),
);
daffie’s picture

StatusFileSize
new35.2 KB

@mondrake: Thank you for the alternative solution. The current patch uses your solution.

To make it work I have added the requirement for database drivers that extend another that their connection URLs add "&parent=true". Only then will Drupal look for the parent infomation. Which should not be done for the vast majority of sites. Hopefully is this good enough from a performance standpoint.

I will create a CR when you think the patch is RTBC.

mondrake’s picture

Issue tags: +Needs change record

Nice, and even nicer the tests.

+++ b/core/lib/Drupal/Core/Database/Database.php
@@ -510,6 +510,25 @@ public static function convertDbUrlToConnectionInfo($url, $root) {
+        $parent_class = $namespace . '\\ParentDatabaseDriver';

maybe we do not need a separate class for that, just a static array (or better a public static method) on the Connection class

[
 $provider => $namespace,
]

then also you won't need to pass array $dependencies to Connection::createConnectionOptionsFromUrl, Connection could know it by itself.

Also this will work for 'one level' of dependencies only - i.e. driver B extends from driver A, not for driver C that extends from B that extends from A, but that would seem overkill to me, so fine.

We also need to reflect this in the settings.php docs...

daffie’s picture

StatusFileSize
new2.12 KB
new37.32 KB

@mondrake: Thank you for the review.

Moving it to the Connection class is not possible. The extending Connection class cannot be loaded until its parent class has been loaded. And we need the data from the extending Connection class to load its parent driver.

then also you won't need to pass array $dependencies to Connection::createConnectionOptionsFromUrl, Connection could know it by itself.

I do this, because when I do not do it in Connection::createConnectionOptionsFromUrl(), then I will need to call Database::findDriverAutoloadDirectory($parent_namespace, $root, TRUE); again. To me, that is a bit much.

I have added documentation to default.settings.php.

mondrake’s picture

Aha... need to think if we could have alternatives here. Need some time...

mondrake’s picture

Assigned: daffie » mondrake

working on this

mondrake’s picture

Assigned: mondrake » Unassigned
StatusFileSize
new30.17 KB
new30.35 KB

This changes the approach a bit to rely on the dependencies set in module.info.yml to determine the autoload dependencies for the db driver, so we do not need a new class. PSR4 allows specifying only the base namespace of a module and autodetermine the driver code in the subnamespace so we are fine without needing to change anything in the db URI.

Needs more tuning and fixing a unit test that is failing on DrupalCI but locally works fine - no idea why.

mondrake’s picture

Status: Needs review » Needs work
mondrake’s picture

StatusFileSize
new29.9 KB
new2.47 KB
mondrake’s picture

Status: Needs work » Needs review
StatusFileSize
new32.49 KB
new10.55 KB

Streamlined a bit.

mondrake’s picture

StatusFileSize
new2.43 KB
new32.17 KB

CS fixes

mondrake’s picture

mondrake’s picture

Changed to MR and deprecated Database::findDriverAutoloadDirectory()

mondrake’s picture

Title: Make life better for database drivers that extend another database driver » Autoload classes of database drivers modules' dependencies
daffie’s picture

Status: Needs review » Needs work

It looks good, using the module dependencies for the dependency info.
I did a first quick review. I will do a second one soon (probably tomorrow).

mondrake’s picture

Status: Needs work » Needs review
mondrake’s picture

Title: Autoload classes of database drivers modules' dependencies » [PP-1] Autoload classes of database drivers modules' dependencies
Status: Needs review » Postponed
Related issues: +#3257714: Remove loading from the Drupal\Drivers namespace from drupal_get_database_types()

Let's postpone on #3257714: Remove loading from the Drupal\Drivers namespace from drupal_get_database_types() that would help further cleanup in install.inc.

mondrake’s picture

Title: [PP-1] Autoload classes of database drivers modules' dependencies » Autoload classes of database drivers modules' dependencies
Status: Postponed » Needs review

Actually the MR fully incorporates #3257714: Remove loading from the Drupal\Drivers namespace from drupal_get_database_types(), so this can be reviewed independently

daffie’s picture

Issue summary: View changes
Status: Needs review » Needs work
Issue tags: -Needs change record

The MR looks good! I am really happy with it.
The naming of the variables in determineDriversAutoloading() is a bit confusing.
I have create a CR and updated the IS.

@mondrake: Thank you for working on this.

daffie’s picture

mondrake’s picture

Status: Needs work » Needs review

Thank you @daffie. Now we only have to add a test for the case a driver module specifies a dependency that does not exist. We need another test module with a fake driver and a missing dependency.

daffie’s picture

Status: Needs review » Needs work

The testbot is not happy with the new test.

mondrake’s picture

Status: Needs work » Needs review

Let's see this, we need to ensure the broken test module does not get caught in the middle of a normal extension discovery.

mondrake’s picture

I made a small edit to the CR

daffie’s picture

Status: Needs review » Reviewed & tested by the community

All code changes look good to me.
All threads on the MR are resolved.
The IS and the CR are in order.
For me it is RTBC.

For the committer: Could user @tmaiochi get a commit credit on this issue for his work on #3257714: Remove loading from the Drupal\Drivers namespace from drupal_get_database_types(). I think it is going to be his first core commit credit and I have closed the other issue as it has become part of this issue.

mondrake’s picture

Rerolled

yogeshmpawar made their first commit to this issue’s fork.

mondrake’s picture

rerolled

mondrake’s picture

rebased

mondrake’s picture

rebased

mondrake’s picture

Rebased.

quietone credited tmaiochi.

quietone’s picture

Per #30 I am moving credit from the other issue to here.

mondrake’s picture

Version: 10.0.x-dev » 10.1.x-dev
Category: Task » Feature request

I doubt this will make 10.0. Repurposing for 10.1.

mondrake’s picture

Rebased

alexpott’s picture

Status: Reviewed & tested by the community » Needs work

There's a fail test.

daffie’s picture

I think the fail might have something to do with #3294695: Drupal 8 BC for database driver namespace fails for replicas.

mondrake’s picture

Assigned: Unassigned » mondrake

Yeah, something new was added that the MR is not reflecting. Looking into it.

mondrake’s picture

mondrake’s picture

Assigned: mondrake » Unassigned
Status: Needs work » Needs review
daffie’s picture

Status: Needs review » Reviewed & tested by the community
Related issues: +#3293446: Create less static cache in ExtensionDiscovery during KernelTests

All the change necessary to fix the failures for #3293446: Create less static cache in ExtensionDiscovery during KernelTests look good to me.
Back to RTBC.

@mondrake: Thank for fixing this.

alexpott’s picture

Status: Reviewed & tested by the community » Needs work

I've added some questions to MR code review.

The biggest thing is should we take this as an opportunity to introduce a DatabaseDriverList object extending from ExtensionList and DatabaseDriver extending from Extension.

mondrake’s picture

Status: Needs work » Needs review

Made the easy changes. Do we need to try

to introduce a DatabaseDriverList object extending from ExtensionList and DatabaseDriver extending from Extension

here or it would be ok as a follow-up? I agree it makes sense, but I'd rather explore it independently, so that if we end up with ripples we can iron them out there.

daffie’s picture

Issue summary: View changes
Status: Needs review » Reviewed & tested by the community

All points of @alexpott have been addressed.
For one point is a followup suggested.
All code changes look good to me.
I have updated the IS and the CR.
Back to RTBC.

alexpott’s picture

Status: Reviewed & tested by the community » Needs review

@mondrake @daffie I'm not sure about leave new API for a follow-up. We're already adding new API for a feature request here. If we going to rework that in a follow-up that doesn't make much sense to me.

mondrake’s picture

Assigned: Unassigned » mondrake
Status: Needs review » Needs work

so we need doing it here. pity we find that out after 8 months in RTBC.

looking into it.

alexpott’s picture

@mondrake that's really fair. I'm sorry I had got round to a deep review and trying to think about the architectural implications. I will try to keep the reviews coming to help get this across the line asap.

mondrake’s picture

Closed MR 1626, and opened a new MR to introduce the new extension objects. Very first go, not for review, wanted to see how much this fails.

mondrake’s picture

Assigned: mondrake » Unassigned
Status: Needs work » Needs review

Net of the FunctionalJavascript test failure that are bogging the bots today, this should be working now.

Points:

  • Database::convertDbUrlToConnectionInfo() should be working also outside of container context - for kernel tests but also for any third party script that needs to determine drivers (e.g. cli installation etc). Here I added an helper that returns the service or instantiates directly a DatabaseDriverList class depending on whether the container is available or not.
  • because of the above, I tried limiting as much as possible other injected classes
  • because of the above, I'm not sure it makes sense to extend from ExtensionList and Extension. For now I did, but throwing \LogicExcpetion for all methods that are not implemented and that would not makes sense to inherit.
  • I think we could now think about deprecating drupal_get_database_types() and drupal_detect_database_types(), too.
  • Not really sure how the DatabaseDriverList class should interact with the cache.
daffie’s picture

Status: Needs review » Needs work
Issue tags: +Needs issue summary update, +Needs change record updates

Lets wait for the review of @alexpott, before we/I update the IS and the CR

mondrake’s picture

Status: Needs work » Needs review

Following on #57, deprecated drupal_get_database_types () and drupal_detect_database_types().

daffie’s picture

Status: Needs review » Needs work
mondrake’s picture

Thanks for reviews,

please add a comment to the d.o. issue after commenting in the MR, unfortunately MR comments do not update timestamps at the moment and there’s risk to miss progress.

mondrake’s picture

Assigned: Unassigned » mondrake

I am addressing some of these review points.

mondrake’s picture

Assigned: mondrake » Unassigned

Freeing assignment.

mondrake’s picture

Status: Needs work » Needs review

Added a deprecation test for the deprecated install.inc functions.

daffie’s picture

Status: Needs review » Needs work
mondrake’s picture

Changes and comments on the MR.

mondrake’s picture

Interesting reading about the Extension class, #2959989: Deprecate Extension::__call() magic

mondrake’s picture

Rerolled. Would be lovely to have some input as how to progress here.

mondrake’s picture

How bad it is that MR comments do not bump the timestamp of the d.o. issue...

mondrake’s picture

Status: Needs work » Needs review
StatusFileSize
new71.75 KB
new1.58 KB

Let's see what happens with your suggestion @daffie - a patch for the moment so not to pollute the MR

mondrake’s picture

StatusFileSize
new1.36 KB
new71.46 KB

Now use module\driverName as the key for the list of drivers.

mondrake’s picture

StatusFileSize
new73.05 KB
mondrake’s picture

StatusFileSize
new73.37 KB
new6.11 KB
mondrake’s picture

StatusFileSize
new73.38 KB

Status: Needs review » Needs work

The last submitted patch, 74: 3256642-74.patch, failed testing. View results

mondrake’s picture

StatusFileSize
new75.42 KB
mondrake’s picture

Assigned: Unassigned » mondrake

It's complicated... but I think it's feasible. We need to change all internals to use the module\driver convention, and change install_get_form() to swap calls without the module name to add the module name, so that scripts can still use legacy logic.

mondrake’s picture

StatusFileSize
new78.17 KB
mondrake’s picture

StatusFileSize
new78.12 KB
mondrake’s picture

StatusFileSize
new81.54 KB
mondrake’s picture

StatusFileSize
new81.17 KB
mondrake’s picture

StatusFileSize
new82.3 KB
mondrake’s picture

StatusFileSize
new82.3 KB
mondrake’s picture

StatusFileSize
new82.92 KB
mondrake’s picture

StatusFileSize
new85.4 KB
mondrake’s picture

StatusFileSize
new85.59 KB
daffie’s picture

@mondrake: The patch looks really great. Thank you for working on this. I have some remarks:

  1. +++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerExistingDatabaseSettingsTest.php
    @@ -26,6 +26,9 @@ protected function prepareEnvironment() {
    +    $connection_info['default']['driver'] = $driverExtensionName;
    

    This change is something we cannot do. Existing connection info will have the driver set to "mysql" and not "mysql\\mysql". If we do not make this change and exception for "Passing a database driver name 'mysql' to Drupal\Core\Extension\DatabaseDriverList::get() is deprecated". Therefor we unfortunatly cannot add that deprecation. I would very much like to do so, only it will result in a BC break. :(

  2. +++ b/core/lib/Drupal/Core/Extension/DatabaseDriver.php
    @@ -0,0 +1,235 @@
    +  private ClassLoader $classLoader;
    +  private Tasks $installTasks;
    

    These 2 class properties need a docblock.

  3. +++ b/core/lib/Drupal/Core/Extension/DatabaseDriverList.php
    @@ -0,0 +1,236 @@
    +  /**
    +   * @todo
    +   */
    +  public function getFromDriverName(string $driverName): DatabaseDriver {
    

    Needs to be fixed.

  4. +++ b/core/lib/Drupal/Core/Extension/DatabaseDriverList.php
    @@ -0,0 +1,236 @@
    +   * @param bool|null $includeTestDrivers
    +   *   (Optional) whether test drivers shall be included in the discovery.
    ...
    +  public function includeTestDrivers(?bool $includeTestDrivers): self {
    

    The parameter is optional, only it does not get a default value.

  5. +++ b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php
    @@ -228,6 +228,9 @@ public function scan($type, $include_tests = NULL) {
    +    if (!\Drupal::hasContainer() || !\Drupal::getContainer()->hasParameter('install_profile')) {
    +      return $this;
    +    }
    

    Maybe add a comment with why this check is necessary.

  6. +++ b/core/tests/Drupal/Tests/Core/Database/UrlConversionTest.php
    @@ -274,11 +303,11 @@ public function providerInvalidArgumentsUrlConversion() {
    -      ['foo://', 'bar', "Can not convert 'foo://' to a database connection, class 'Drupal\\Driver\\Database\\foo\\Connection' does not exist"],
    -      ['foo://bar', 'baz', "Can not convert 'foo://bar' to a database connection, class 'Drupal\\Driver\\Database\\foo\\Connection' does not exist"],
    -      ['foo://bar:port', 'baz', "Can not convert 'foo://bar:port' to a database connection, class 'Drupal\\Driver\\Database\\foo\\Connection' does not exist"],
    +      ['foo://', 'bar', "Can not convert 'foo://' to a database connection, the module providing the driver 'foo' is not specified"],
    +      ['foo://bar', 'baz', "Can not convert 'foo://bar' to a database connection, the module providing the driver 'foo' is not specified"],
    +      ['foo://bar:port', 'baz', "Can not convert 'foo://bar:port' to a database connection, the module providing the driver 'foo' is not specified"],
    ...
    -      ['foo://bar:baz@test1', 'test2', "Can not convert 'foo://bar:baz@test1' to a database connection, class 'Drupal\\Driver\\Database\\foo\\Connection' does not exist"],
    +      ['foo://bar:baz@test1', 'test2', "Can not convert 'foo://bar:baz@test1' to a database connection, the module providing the driver 'foo' is not specified"],
    

    The only problem with this change is that we are losing testing for the other thrown exception. Now we need a database driver without a Connection class.

  7. +++ b/core/lib/Drupal/Core/Extension/DatabaseDriver.php
    @@ -0,0 +1,235 @@
    +        throw new \RuntimeException(sprintf("Cannot find the module '%s' that is required by module '%s'", $dependencyName, $this->getModule()->getName()));
    

    Can we add testing for this exception?

  8. +++ b/core/lib/Drupal/Core/Installer/Form/SiteSettingsForm.php
    @@ -88,6 +79,9 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    +      if (!str_contains($default_driver, "\\")) {
    +        throw new \Exception("Invalid driver '{$default_driver}' passed to " . __METHOD__);
    +      }
    

    We are missing testing for this exception.

  9. +++ b/core/tests/Drupal/FunctionalTests/Installer/InstallerExistingBrokenDatabaseSettingsTest.php
    @@ -32,10 +32,11 @@ protected function prepareEnvironment() {
    -    $connection_info['default']['driver'] = 'DrivertestMysqlDeprecatedVersion';
    +    $connection_info['default']['driver'] = 'driver_test\\DrivertestMysqlDeprecatedVersion';
    

    This is to me the wrong change. Can we instead add:

    $connection_info['default']['module'] = 'driver_test';
    
mondrake’s picture

StatusFileSize
new32.69 KB
new89.14 KB

Let's see if this one gets green, then I'll comment and address #87.

Interdiff is vs. MR2844, For some reason I cannot open a separate branch as I would like: https://drupal.slack.com/archives/C51GNJG91/p1672150197341309

mondrake’s picture

Assigned: mondrake » Unassigned
Status: Needs work » Needs review
mondrake’s picture

StatusFileSize
new32.87 KB
new89.32 KB

mondrake’s picture

Title: Autoload classes of database drivers modules' dependencies » Introduce database driver extensions and autoload database drivers' dependencies

Opened MR 3169 (thanks @drumm) and fixed #87.2 and #87.3.

mondrake’s picture

Tested MR3169 on the DruDbal experimental driver, it passes ok https://github.com/mondrake/drudbal/pull/315

mondrake’s picture

mondrake’s picture

#87.1 and .7 - in fact here we are only preparing values for the database selection form submission, not for settings.php directly. Tried to clarify in last commint on the MR.

daffie’s picture

Assigned: Unassigned » alexpott
Status: Needs review » Needs work

The testbot is not happy.

daffie’s picture

Assigned: alexpott » Unassigned

I did not want to assign this to @alexpott.

daffie’s picture

Bump for posting thread on MR.

mondrake’s picture

Assigned: Unassigned » mondrake

Thanks @daffie for reviews and input.

I start thinking to make another step, and instead of using 'module\driver' as the internal name of the extension and of the list keys, use the driver namespace instead (e.g. 'Drupal\mysql\Driver\Database\mysql').

Like that, we would anyway ensure uniqueness and avoid introducing another convention. And btw that has the benefit of being explicitly written to settings.php as such in the 'namespace' database connection info array, whereas 'module\driver' will have to be always determined programmatically.

In the end, we're making the 'driver' key in the database connection info array redundant, but that could be for another future issue.

mondrake’s picture

Last commit in the MR is essentially implementing #99, bar the test adjustments.

mondrake’s picture

Status: Needs work » Needs review
daffie’s picture

Status: Needs review » Needs work

The MR looks good. With the requested change to SiteSettingsForm and a bit more testing it is RTBC for me.

mondrake’s picture

Status: Needs work » Needs review
daffie’s picture

Status: Needs review » Needs work

On Monday I will update the IS and the CR. The MR looks great!

mondrake’s picture

Status: Needs work » Needs review

mondrake’s picture

Assigned: mondrake » Unassigned
daffie’s picture

Assigned: Unassigned » alexpott
Status: Needs review » Needs work

Looks good. Just 1 thread open.

daffie’s picture

Assigned: alexpott » Unassigned

I did not want to assign the issue to @alexpott.

mondrake’s picture

So, where PHP doesn't get to, PHPStan to the rescue:

10:54:03 Running PHPStan on *all* files.
10:54:03  ------ ----------------------------------------------------------------------- 
10:54:03   Line   core/tests/Drupal/FunctionalTests/Installer/InstallerExistingBrokenDa  
10:54:03          tabaseSettingsTest.php                                                 
10:54:03  ------ ----------------------------------------------------------------------- 
10:54:03   37     Class                                                                  
10:54:03          Drupal\driver_test\Driver\Database\DrivertestMysqlDeprecatedVersion    
10:54:03          not found.                                                             
10:54:03          💡 Learn more at https://phpstan.org/user-guide/discovering-symbols    
10:54:03   39     Class                                                                  
10:54:03          Drupal\driver_test\Driver\Database\DrivertestMysqlDeprecatedVersion    
10:54:03          not found.                                                             
10:54:03          💡 Learn more at https://phpstan.org/user-guide/discovering-symbols    
10:54:03  ------ ----------------------------------------------------------------------- 
10:54:03 
10:54:03 
10:54:03  [ERROR] Found 2 errors                                                         
10:54:03 
10:54:03 
10:54:03 PHPStan: failed
mondrake’s picture

Status: Needs work » Needs review
daffie’s picture

The MR is for me RTBC. I will update the IS and the CR tomorrow.

@mondrake: Thank you for working on this issue!

daffie’s picture

Issue summary: View changes
Status: Needs review » Reviewed & tested by the community
Issue tags: -Needs issue summary update, -Needs change record updates

All the code changes look good to me.
Testing has been added.
I have updated the IS and the CR.
For me it is RTBC.

mondrake’s picture

Thanks for the housekeeping of IS and CR, @daffie!

Manoj Raj.R’s picture

The latest changes looks good to me.

mondrake’s picture

Status: Reviewed & tested by the community » Needs review

Found an issue with InstallerTestBase while working on the mysqli driver, fixed.

daffie’s picture

Status: Needs review » Reviewed & tested by the community

The test change looks good to me.
Back to RTBC.

catch’s picture

Status: Reviewed & tested by the community » Needs work

I'm concerned about the number of low level changes we're having to make after making database drivers modules, it feels a bit like all the special casing we've had over the years for install profiles. Having said that the code here seems OK in itself. I think this should be a target for early in the 10.2.x cycle so it has time to bed in. We should resolve @quietone's recent comment though so marking needs work for that.

mondrake’s picture

Status: Needs work » Reviewed & tested by the community

I have tried @quietone suggestion, but removing the line tests still fail. Reverted and reset to RTBC. Deprecations now are for 10.2.x.

mondrake’s picture

Version: 10.1.x-dev » 11.x-dev
larowlan’s picture

Status: Reviewed & tested by the community » Needs review

Left some comments on the MR, huge effort here folks 💪

mondrake’s picture

Status: Needs review » Needs work

Thank for the review @larowlan! NW to go through the points.

mondrake’s picture

Status: Needs work » Needs review

Removed code from Database::findDriverAutoloadDirectory to use the new API. It's OK but had an impact on a test. Can I get a review of latest changes before continuing with the rest of the points.

mondrake’s picture

I have addressed all points from @larowlan.

daffie’s picture

Status: Needs review » Reviewed & tested by the community

All points of @larowlan have been addressed.
A couple of followups have been created.
Back to RTBC.

larowlan’s picture

Status: Reviewed & tested by the community » Fixed

I took this for a spin locally, and tested that I could install with drush
Was able to install with `drush si demo_umami` and the site looked good with a click about.

I agree with @catch in #112 that its best to get this into 10.2.x early and let any issues shake out.

So in line with that, committed to 11.x - thanks all!

💃

  • larowlan committed 6c1e7b07 on 11.x
    Issue #3256642 by mondrake, daffie, yogeshmpawar, alexpott, tmaiochi,...
mondrake’s picture

Adjusted CR for branch, and published it.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

poker10’s picture