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

nsqd: fix the issue of deferred data persistence #1454

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

qaqhy
Copy link

@qaqhy qaqhy commented Jun 20, 2023

Fix the issue of deferred data persistence loss(Note: Incompatible with old data storage methods)
This is a new data structure storage method, perhaps the method with flag bits below is easier to expand
image

For disk persistence we can perhaps try to do forward compatible iterative updates using flag bits

image

The later updates refer to the mode of PR 1137, which is Forward compatibility with the old data

image

@mreiferson mreiferson changed the title Fix the issue of deferred data persistence loss nsqd: fix the issue of deferred data persistence Jul 16, 2023
@mreiferson
Copy link
Member

Thanks for submitting this @qaqhy. I've got to refresh my memory on where #1170 left off to be able to provide feedback here.

@qaqhy
Copy link
Author

qaqhy commented Apr 27, 2024

Thanks for submitting this @qaqhy. I've got to refresh my memory on where #1170 left off to be able to provide feedback here.

In this commit, I merged the latest code and fixed the data race issue

@qaqhy
Copy link
Author

qaqhy commented May 5, 2024

@mreiferson Hello, do you think this restart retention delay time plan is feasible? Or do you have any better suggestions?

@mreiferson
Copy link
Member

Hi, thanks for submitting this.

I looked back over #1170. While it had some issues in terms of the specific implementation, I think overall it has a more generic forward compatible design, rather than specifically modifying the on-disk format to support just the issue of deferred persistence.

In other words, if we're going to change the on-disk format, since this will be the first time we've basically ever done that, we should establish a new format that allows us to properly version and expand capabilities while being able to better preserve forward and backward compatibility.

@qaqhy
Copy link
Author

qaqhy commented Jul 1, 2024

Hi, thanks for submitting this.

I looked back over #1170. While it had some issues in terms of the specific implementation, I think overall it has a more generic forward compatible design, rather than specifically modifying the on-disk format to support just the issue of deferred persistence.

In other words, if we're going to change the on-disk format, since this will be the first time we've basically ever done that, we should establish a new format that allows us to properly version and expand capabilities while being able to better preserve forward and backward compatibility.

Another issue is that when we read tasks from a topic and are unable to consume them and throw them back into the queue, it slows down the loading speed of tasks from the disk into memory. We only read the disk when there are no tasks in memory. Do we need to change it to automatically load tasks from the disk into memory when the memory queue is not full.

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

Successfully merging this pull request may close these issues.

2 participants