8000 Persistence · Issue #30 · cache2k/cache2k · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Persistence #30

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
cruftex opened this issue Jan 5, 2016 · 5 comments
Closed

Persistence #30

cruftex opened this issue Jan 5, 2016 · 5 comments
Labels

Comments

@cruftex
Copy link
Member
cruftex commented Jan 5, 2016

The current code base contains support for persistence. However it is not yet production ready. Heavy stress tests show concurrency issues, especially with the iterator() and clear().

Actually I was quite convinced to take persistence out again for 1.0 and first make sure that everything is ship shape and well documented, which is still a lot of work.

Some more thoughts and background:

The clear() implementation actually does some fancy stuff. For the clear() operation to complete in an instant and not produce any delay (a couple of seconds could bring an application down), it switched to an asynchronous buffer and later reconnects the physical storage. Maybe this could be simplified for the first step.

The JSR107 support introduced the CacheWriter and also will need event listeners. This also yields consistency issues that we won't have without them. E.g. the writes to the cache writer need to be partially ordered, so that always the cached value represents the last written value. So, the hard problems, do not necessarily go away by removing the storage....

Meanwhile I also discovered that the internal entry states do not completely support the JSR107 methods. So the next step is to do a make over of the entry locking (the third one). After that maybe some issues are gone already and we can reevaluate what we do with persistence support.

Please do comment here if you have had success or failures with the persistence support.

@cruftex cruftex added this to the V1 milestone Jan 5, 2016
@cruftex cruftex added the feature label Jan 7, 2016
@cruftex cruftex changed the title Finalize persistence for 1.0?! Persistence (in 1.0?!) Jan 7, 2016
@cruftex
Copy link
Member Author
cruftex commented Jan 7, 2016

List of needed / missing parts (incomplete, gets update):

  • automatic purge / purge interval: Expired entries need to be purged automatically
  • limit capacity by bytes
  • marshaller configuration
  • global default configuration
  • documentation in general
  • JavaDoc for implementations
  • heap capacity, storage capacity, total capacity configuration
  • simple off heap implementation
  • storage combinations/topologies: heap -> off heap -> file system -> s3 !?
  • dirty flag with passivation

@cruftex cruftex changed the title Persistence (in 1.0?!) Persistence Feb 17, 2016
@cruftex cruftex modified the milestones: v1.4, v1 Mar 29, 2016
@cruftex
Copy link
Member Author
cruftex commented Mar 29, 2016

Decided to let that slip. Will concentrate in 1.0 on documentation and basic features first. I will remove the storage related classed from the implementation, they will reappear later in the year.

@cruftex cruftex modified the milestones: v1.6, v1.4 Apr 8, 2016
@cruftex
Copy link
Member Author
cruftex commented May 18, 2016

Targeting for 1.6, since we need to look at bulk ops (1.2) and async (1.4) first.

@DALDEI
Copy link
DALDEI commented Aug 14, 2019

Consider integration with redisson -- a java redis front-end that provides object binding to backend persistent cache (redis). Example: redisson exposes an API where you can associate any (simple) java object's methods with redis data, and use said object concurrently on different clients, with or without local caching. I belive there is great value in merging these L1 + L2 caches into a 'user friendly' hybrid cache.

@cruftex cruftex modified the milestones: v1.6, v2.x Sep 18, 2020
7F91
@cruftex cruftex removed this from the v2.x milestone Nov 5, 2021
@cruftex
Copy link
Member Author
cruftex commented Nov 5, 2021

Closing for the moment. Although its still on the "wish list", I don't see that we will get to it in the next months and it will most likely take a need a lot of time to complete also. I don't want to make hope that it will come some time soon by keeping the issue open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants
0