Giter Site home page Giter Site logo

Adjustable Commit Timeout about raft HOT 7 CLOSED

goraft avatar goraft commented on September 28, 2024
Adjustable Commit Timeout

from raft.

Comments (7)

xiang90 avatar xiang90 commented on September 28, 2024

@benbjohnson Actually, raft use a false negative approach about the command commits. But I agree we should make this a application decision. I can make the change.

from raft.

benbjohnson avatar benbjohnson commented on September 28, 2024

@xiangli-cmu Thanks. I was adding the issue so I wouldn't forget about it. :)

from raft.

jvshahid avatar jvshahid commented on September 28, 2024

Well I don't think waiting indefinitely is an option. We run into this case when a leader lose leadership while there are uncommited log entries in its logs. The next truncate operation will get rid of the log entry and it will never commit causing the command to timeout, if there were no timeout then the command will hang indefinitely, unless we added some sort of timeout+retry logic.

from raft.

jvshahid avatar jvshahid commented on September 28, 2024

I actually wanted to comment on this issue, because i don't know what's the right way to handle this case and it's not apparent from the paper what's the standard behavior. Although the paper say that the state machine should keep track of commands that were processed in case the client reissued a command. So maybe in this case the retry logic should live in the client. What do you guys think ?

from raft.

benbjohnson avatar benbjohnson commented on September 28, 2024

@jvshahid Hmmm... the uncommitted logs shouldn't be getting lost just because leadership is lost. They should only get removed if another leader has a different log history. That's a bug that should be fixed.

Removing the timeout should make it hang until either a) the command is committed by that leader, or b) another leader causes the log entry to be removed.

As for retries, I think that should live on the client. If a command fails for some reason, the client is probably the only one with the knowledge to check the current state of the system and optional resubmit the command.

from raft.

xiang90 avatar xiang90 commented on September 28, 2024

@benbjohnson I am going to work on this. I will remove the timeout related stuff and let the application make its own decision.

from raft.

xiang90 avatar xiang90 commented on September 28, 2024

@benbjohnson BTW, can you review https://github.com/goraft/raft/pull/136/files? The only actual changes is making asnycSend a real one.

from raft.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.