Pune
Account created on 21 March 2016, over 9 years ago
#

Merge Requests

More

Recent comments

🇮🇳India rajeshreeputra Pune

The default view mode in CKEditor is configured for Drupal local media but does not apply to Acquia DAM media. This distinction arises because Drupal media utilizes view displays, whereas Acquia DAM media relies on embed codes (similar to image styles used for image media types in Drupal).

I hope this clarifies the your concern.

🇮🇳India rajeshreeputra Pune

Missed to remove queueAssets() method removal from processQueue(). Requesting review.

🇮🇳India rajeshreeputra Pune

The Acquia DAM asset rendering from local functions operates as expected. However, the challenge arises with the Site Studio templates. We will address this issue in Acquia DAM, particularly for the custom templates created by users.

🇮🇳India rajeshreeputra Pune

rajeshreeputra changed the visibility of the branch 3476376-provide-local-file to hidden.

🇮🇳India rajeshreeputra Pune

Hello @ankitv18 - test coverage will be added once the discussion from #7 Support Drush Command for Bulk Import Feature Active gets resolved.

🇮🇳India rajeshreeputra Pune

I would like to propose a discussion regarding the implementation of the commands acquiadam:queue-assets and acquiadam:import-assets. Specifically, we need to consider whether these should be implemented as two separate commands or combined into a single command that handles both queuing and processing of assets.

Additionally, I suggest we introduce an option to limit the asset import process. For instance, we could allow users to specify a limit on the number of assets imported from the queue. An example:
./vendor/bin/drush acquiadam:import-assets --batch-size=50 --item-limit=500

This command would process 10 batches to import a total of 500 assets and then stop, even if there are remaining items in the queue. I believe this feature would enhance the flexibility and usability of the asset import process, especially for users dealing with large datasets.

Looking forward to your thoughts on this!

🇮🇳India rajeshreeputra Pune

rajeshreeputra changed the visibility of the branch 3415947-whats-the-difference to hidden.

🇮🇳India rajeshreeputra Pune

Updated MR with necessary changes, requesting review.

🇮🇳India rajeshreeputra Pune

Hello @byrond,

You are correct — version_id and external_id are not required during the migration process. After migration, the cron in the Acquia DAM module should handle updating version_id and external_id regularly and automatically.

Thank you for bringing this up!

🇮🇳India rajeshreeputra Pune

rajeshreeputra changed the visibility of the branch 3527397-allow-subcategories-bulk-import to hidden.

🇮🇳India rajeshreeputra Pune

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

🇮🇳India rajeshreeputra Pune

Updated MR with database operations instead of media entity resave, resulting in reduced CPU overhead and improved memory efficiency. This change has led to faster execution times, which should significantly enhance the migration process.

Please review the changes and share your feedback.

🇮🇳India rajeshreeputra Pune

The code is needed, if but need to move below the queue create item call.
If the code is removed then the assets will always show the media item status as outdated.

🇮🇳India rajeshreeputra Pune

Most probably issue introduced because of the AvailabilityPublishingStatusCompare.php.

The AvailabilityPublishingStatusCompare field is calling $this->assetUpdateChecker->checkAssets($values->_entity) for every single row in the media library view during the render() method.

The Problem

N+1 Performance Issue:

  • Media library loads: 12 assets per page
  • Each asset triggers: checkAssets() call in render()
  • Result: 12 individual API calls to Acquia DAM

Why this happens

  • The render() method is called for every row when the view is displayed.

Solution

  • Remove the "Availability/Publishing status" field from Media library.
🇮🇳India rajeshreeputra Pune

@rlhawk this need to cherry pick into 4.0.x branch as well.

🇮🇳India rajeshreeputra Pune

Major Performance Improvements

  • Chunked Processing: Instead of loading all media items at once, the code now processes them in smaller batches of 100 items.
  • Proper Batch API Usage: The batch operations are now structured to handle each chunk separately, preventing memory exhaustion and timeouts.
  • Improved Progress Tracking: Added detailed progress tracking using Drupal's state API, making the process more robust and providing better user feedback.
  • Optimized Resource Usage: Service instances like time and current user are now retrieved once at the beginning of each batch operation rather than for each media item.

Implementation Details

  • Added new batch operation methods (initializeMediaBatch, batchUpdateMediaItems, finalizeMediaBatch) to handle different phases of the migration process.
  • Implemented paged database queries to fetch only the media items needed for each batch operation.
  • Added proper progress tracking that persists between batch operations.
  • Maintained all the existing functionality while making the process much more efficient.

Expected Results
With these changes, the migration should:

  • Complete without timing out.
  • Use significantly less memory.
  • Provide better progress information to users.
  • Likely reduce the total processing time.
🇮🇳India rajeshreeputra Pune

Removed #3483550 from list as it depends on #3306506 & #3524922

🇮🇳India rajeshreeputra Pune

Keeping this intact instead created separate issue for dropping support of Drupal core below 10.3 version.
💬 Drop support of Drupal core below 10.3 version. Active

🇮🇳India rajeshreeputra Pune

Update ticket to Drop support of Drupal core version below 10.3.

🇮🇳India rajeshreeputra Pune

Removed 📌 Modernize the Drush commands Needs review from list as it depends on 📌 Remove support for Drupal < 9.1 Needs review .

🇮🇳India rajeshreeputra Pune

@ptmkenny, we should update the title, description and MR accordingly to support Drupal core >=10.3 version in 4.x version.

🇮🇳India rajeshreeputra Pune

Hello @ptmkenny,

Why is the list an ordered list? Are the issues dependent on one another? (I'm guessing no because some of the later issues have already been committed.)

The issues are not dependent on one another, and it is not necessary for the list to be ordered. We can remove the serial number column from the table.

The big question is should Key drop support for Drupal 8 and/or 9.

The decision to drop this support has already been considered, and it will be removed in the next major version. For more details, please refer to the discussions in the key channel here.

If support for Drupal 8/9 is dropped, I think we should not just "require Drupal 10" but actually take the opportunity to modernize the code and use some of the new features of Drupal 10.

I agree that we should not only require Drupal 10 but also take the opportunity to modernize the code and utilize some of the new features available in Drupal 10. This will be taken into account as part of the next major release, but I will defer to @rlhawk regarding the decision to drop support for Drupal 8 and/or 9 in the 1.x or 2.x.

🇮🇳India rajeshreeputra Pune

Need to resolve the conflits.

🇮🇳India rajeshreeputra Pune

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

🇮🇳India rajeshreeputra Pune

Sorry for the confusion caused by previous comment.

I would like to share a use case to clarify the expected behavior regarding configuration overrides with the Key module.

For example, let's say we have the following configuration:

my_module.settings:
  key1: value1
  secret: secret_value
  • We override the secret value using the Key module.
  • When we access the configuration value in code as:
    $config = \Drupal::config('my_module.settings')->get('secret'); the returned value should be the overridden secret from the Key module, i.e., secret_value from the key configuration.
  • When we access the configuration value in CLI:
    ./vendor/bin/drush cget my_module.settings secret the returned value should be null.
  • Even when accessing via configuration export it should be null, in my_module.settings.yml file.
🇮🇳India rajeshreeputra Pune

But should $config = \Drupal::config('my_module.settings')->get('my_setting'); give me my setting value when this module is in place?

This should not give the value, as value in config now cleared by the override.

Or should I use $config = \Drupal::service('key.repository')->getKey('my_key')->getKeyValue();?

This should give the value from the key.

🇮🇳India rajeshreeputra Pune

I think we can make things a bit clearer for users by updating the label.
Right now, "Clear overridden value" might leave some people unsure about what it actually does. I suggest changing it to "Clear overridden value from the configuration item." This way, it’s more specific and helps users understand exactly what will happen when they click it.

🇮🇳India rajeshreeputra Pune

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

🇮🇳India rajeshreeputra Pune

rajeshreeputra changed the visibility of the branch 2972436-ability-to-map to hidden.

🇮🇳India rajeshreeputra Pune

Agree with @lind101; this requires significant changes and a thorough refactor.


Production build 0.71.5 2024