#25840 closed Bug (fixed)
cache.get_or_set() works incorrectly with DummyCache backend
Reported by: | Oleksiy Ivanenko | Owned by: | nobody |
---|---|---|---|
Component: | Core (Cache system) | Version: | 1.9 |
Severity: | Normal | Keywords: | get_or_set dummycache |
Cc: | oleksiy.ivanenko@… | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
There is some issue when you use django.core.cache.cache.get_or_set with DummyCache backend.
from django.core.cache import cache cache.get_or_set('some_key', 'my_val') # Always returns None. Not a default value
This thing brakes tests.
I think it will be better to return default value from dummy cache.
Attachments (1)
Change History (8)
by , 9 years ago
Attachment: | get_or_set_dummycache.path added |
---|
comment:1 by , 9 years ago
Needs tests: | set |
---|---|
Summary: | cache.get_or_set works incorrectly with DummyCache backend → cache.get_or_set() works incorrectly with DummyCache backend |
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 9 years ago
one might argue that this is a bug in the BaseCache
implementation of get_or_set
:
def get_or_set(...) # [snip] val = self.add(key, default, timeout=timeout, version=version) if val: # unlikely, but we might have been added, and evicted again by the time we get here, # should we not call `get` with the default? return self.get(key, version=version)
comment:4 by , 9 years ago
Missed the above PR, but here is my approach. (different solution and missing unit tests included,)
comment:5 by , 9 years ago
Needs tests: | unset |
---|
Note:
See TracTickets
for help on using tickets.
A regression test is also required. If you can submit your patch as a pull request, that's ideal. Thanks!