Skip to content
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

[Manifest] About Expiration #43

Open
imclint21 opened this issue Dec 31, 2019 · 4 comments
Open

[Manifest] About Expiration #43

imclint21 opened this issue Dec 31, 2019 · 4 comments
Assignees
Labels
core Core development manifest Some project outline
Milestone

Comments

@imclint21
Copy link
Member

Hi,

About object expirations, what do you think @CephalonRho? We have two ways to proceed:

  1. Make a loop in a separated thread and drop items when the time is due.
  2. Check the expiration date when a GET is called and drop the object if it's expired.

Best regards

@imclint21 imclint21 added the core Core development label Dec 31, 2019
@shuni64
Copy link
Contributor

shuni64 commented Dec 31, 2019

I think the second option should be the first step of implementing this. Regardless of any other optimizations such as dropping them in the background, a client should never be able to access an entry after it has expired, so there should be a check every time the entry is accessed.

Shouldn't be a big problem to implement the actual expiration part of this, I'm more concerned about how we want to set the expiration time. A way to set individual lifetimes on entry creation would be good, but we probably also want to have default lifetimes for everything and a way to change entry lifetimes after creation (probably with PATCH when that happens).

@imclint21 imclint21 added the manifest Some project outline label Dec 31, 2019
@imclint21
Copy link
Member Author

imclint21 commented Dec 31, 2019

Happy new year! 🍾

Something like this is a possiblity, but it's also possible with an http header like X-Expiration.

curl -X PATCH -d 'ttl=3600' https://localhost:7021/api/kv/hello_world/

I also think that a way to specify expiration at the creation is a good and needed things!

Anyway we need to achieve the PATCH part and also determine if we use JSON or other.

@shuni64
Copy link
Contributor

shuni64 commented Dec 31, 2019

Didn't think about http headers, definitely a good option here. Discussion about the PATCH method belongs in #44, but it's not a requirement for entry expiration anyway as long as there is another way to set them. I would use headers to set the TTL when creating entries and keep PATCH completely separate with it's own format, whatever that will be.

@imclint21
Copy link
Member Author

TTL and expiration is not really the same things, I mean we also need to define if we use TTL or an absolute expiration datetime (by example with a timestamp) or maybe the both?

The expiration will be also a problem for the persistence, but we will see that in the proper issue (#17)

@imclint21 imclint21 added this to the alpha milestone Jan 2, 2020
@imclint21 imclint21 mentioned this issue Feb 1, 2020
3 tasks
@imclint21 imclint21 pinned this issue Apr 21, 2020
@imclint21 imclint21 modified the milestones: alpha, beta Apr 26, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Core development manifest Some project outline
Projects
None yet
Development

No branches or pull requests

2 participants