snapshot assumes too much about a CacheProtocol implementation


  • Type: Defect Defect
  • Status: Resolved Resolved
  • Priority: Major Major
  • Resolution: Completed
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: None
  • Labels:
  • Patch:
    Code and Test
  • Approval:


I believe this line assumes too much about implementations of CacheProtocol, namely that they have a field named 'cache'.

The first call to .cache makes sense, since PluggableMemoization has a 'cache' field, but the second call to .cache assumes that any implementation of CacheProtocol that PluggableMemoization wraps will have a 'cache' field.

I ran into this issue when I desired to have a cache that ignores nils, so I attempted to wrap the TTLCache with an implementation of CacheProtocol that would not cache nil values. Calls to snapshot failed since it was trying to access a 'cache' field on my NoNilCache.

I suspect that the outer call to .cache could be replaced with a call to seq, since defcache adds an implementation of seq to each cache implementation which should pull out the keys/values from the cache.

I'd be glad to work up a patch given that I'm not off base in my assumptions.


Paul Stadig made changes -
Field Original Value New Value
Attachment 3-fix-snapshot-assumptions.diff [ 10743 ]
Paul Stadig made changes -
Fogus made changes -
Status Open [ 1 ] Resolved [ 5 ]
Assignee Fogus [ fogus ]
Approval Accepted [ 10005 ]
Resolution Completed [ 1 ]
Patch Code and Test [ 10002 ]


Vote (0)
Watch (0)


  • Created: