Closed (fixed)
Project:
Acquia DAM
Version:
1.1.x-dev
Component:
Code
Priority:
Normal
Category:
Task
Assigned:
Unassigned
Reporter:
Created:
16 Jul 2026 at 03:29 UTC
Updated:
20 Aug 2026 at 12:05 UTC
Jump to comment: Most recent
As a developer, I want a DamExceptionHandler shared service and AssetMediaSyncService in the parent acquia_dam module. This makes DAM exception translation reusable by any API client and shares media sync logic between the cron queue worker and the webhook controller without duplication.
DamExceptionHandler and AssetMediaSyncService live in the parent acquia_dam module. They cost nothing when the webhook submodule is disabled.
This story extracts existing exception handling into a standalone service and creates a new shared sync service.
DamExceptionHandler::handle(\Exception $exception): never
AcquiaDamClient::throwDamException()GuzzleHttp\Exception\ClientException → DamClientExceptionConnectException → DamConnectExceptionDamServerExceptionLoggerInterfacenever return typeDamExceptionHandler registered as acquia_dam.exception_handler with @logger.channel.acquia_damAcquiaDamClient
DamExceptionHandler as constructor param 7, before optional $domain$this->exceptionHandler->handle($e)throwDamException() method removedAcquiaDamClientFactory
@acquia_dam.exception_handlernew AcquiaDamClient(...)acquia_dam_update_9025()
\Drupal::service('kernel')->invalidateContainer()AssetMediaSyncService::syncAsset(string $asset_id, int|string $media_id, int $user_id = 0): bool
MediaItemUpdater::processItem()NewAssetVersionEvent dispatchAssetMediaSyncService registered as acquia_dam.asset_media_sync in acquia_dam.services.ymlMediaItemUpdater::processItem()
AssetMediaSyncService::syncAsset()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
Comment #3
rajeshreeputraRequesting review.
Comment #5
rajeshreeputraMR merged!