Project

General

Profile

Actions

Bug #96984

open

Duplicate data imports with typo3/cms-composer-installers v4

Added by Alexander Vogt about 2 years ago. Updated about 2 years ago.

Status:
Accepted
Priority:
Should have
Assignee:
-
Category:
composer
Target version:
-
Start date:
2022-02-21
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
11
PHP Version:
Tags:
Complexity:
hard
Is Regression:
Sprint Focus:

Description

I have tried the upcoming composer installer v4 ("typo3/cms-composer-installers:4.0.x@dev"). This leads to a duplicate execution of data imports and in my case to a duplicate tree in the backend (duplicate "Initialisation/" import execution).

sys_registry entry before upgrade:
  • entry_namespace: extensionDataImport
  • entry_key: typo3conf/ext/extension/Initialisation/dataImported
new sys_registry entry after upgrade:
  • entry_namespace: extensionDataImport
  • entry_key: or/company/extension/Initialisation/dataImported

This occurs because of the changed package path https://github.com/TYPO3/typo3/blob/v11.5.6/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php#L450
Composer Installer v3: /var/www/app/www/typo3conf/ext/extension/ -> typo3conf/ext/extension/
Composer Installer v4: /var/www/app/vendor/company/extension/ -> or/company/extension/

Is this issue already known?

Actions #1

Updated by Helmut Hummel about 2 years ago

  • Status changed from New to Accepted
  • Complexity set to hard

Thanks! Looks valid.

Any idea and help to fix this is appreciated.

Actions #2

Updated by Alexander Vogt about 2 years ago

In our case we have entry keys like "or/company/extension/Initialisation/dataImported". We have a "or" prefix because we use the web-dir name "www" instead of "public" in this project. So the key with the default web-dir "public" is "company/extension/Initialisation/dataImported". That looks better :). But it is maybe better to fully ignore the package path and only use the extension name in the future.

I'm not sure about the best solution. Maybe there should be a upgrade wizard which migrates the previous "typo3conf/ext/extension/Initialisation/dataImported" keys to the new key "company/extension/Initialisation/dataImported". But the issue in our case would be the "extension:setup" command in our composer.json. A Upgrade wizard will always be too late because this command executes the extension setup (InstallUtility->processExtensionSetup) after the composer update and thereby leads to the duplicate import execution.

A temporary workaround is possible via the event "TYPO3\CMS\Core\Package\Event\PackagesMayHaveChangedEvent". This is executed before the "processExtensionSetup" call and allows the correction of the entry keys.

Actions

Also available in: Atom PDF