Skip to content

Set() and remove() methods behaves unreliably on play 2.5 and older because of race conditions  #70

@hanzki

Description

@hanzki

I noticed that the set() and remove() implementation of CacheAPI call async methods on spy.memcached.MemcachedClient which return futures but the futures are ignored. The default cache in play (prior to version 2.6) is synchronous and any replacement of the default implementation should conform to the same interface.

I ran into this problem when a value that was just saved with set() wasn't found with the following get() call. Because the CacheAPI interface uses Unit as the return type for set() and remove() the implementation of play2-memcached should await the futures returned by spy.memcached.MemcachedClient. The async methods could still be provided by explicitly calling the plugin with for example:

play.api.Play.current.plugin[MemcachedPlugin].get.asyncSet(...)

I can create a pull request for this but I'm not sure on which branch/commit should I base it on and to which branch should I target the PR such that this fix can be introduced to the versions meant for older play versions?

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