Skip to content

Using the current_user data producer makes response uncacheable #1351

Open
@dulnan

Description

@dulnan

When using the current_user data producer the response becomes uncacheable. This is because of this line:

$field_context->addCacheableDependency($this->currentUser);

As $this->currentUser is not an instance of CacheableDependencyInterface, the addCacheableDependency() method in RefinableCacheableDependencyTrait will fall back to setting the max age to 0:

https://git.drupalcode.org/project/drupal/-/blob/11.x/core/lib/Drupal/Core/Cache/RefinableCacheableDependencyTrait.php#L23

One option to fix this would be to not set any cacheability at all and leave this up to the consumers of the producer. But that would introduce quite a breaking change, as queries would suddenly become cacheable.

An alternative fix would be to implement a default behaviour that adds the user context (or sets the max age to 0), but introduces a new argument on the producer to prevent this from being done. That way existing implementation still work as before, while making it possible to customise the cacheability when needed.

Happy to do a merge request once the best approach has been found!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions