v3.4.138
Fix revoked entitlement rows permanently blocking resource backfill.
get_existing_entitlement() has no status filter, and backfill_new_resources()
treated any existing row for the (order_item_id, cloud_asset_id, recipient_email)
key as "already handled" regardless of grant_status, including 'revoked'.
Failure scenario: a product's Drive file is removed (revoking recipients'
entitlements for it), then later re-added, triggering the automatic backfill
job. For any recipient who previously had the file, the backfill loop finds
their old revoked row and skips creating a new one - nothing else reactivates
it, so the recipient never gets access to a file that is now validly
configured on the product.
Fix: when the existing row is revoked, reactivate it (matching the same
pattern create_entitlements_for_recipient() already uses for its
reuse_revoked path) instead of skipping.