Code Monkey home page Code Monkey logo

Comments (9)

freeekanayaka avatar freeekanayaka commented on September 13, 2024 2

What about dropping support for external linking to libraft altogether? Not sure what it is needed for, but it seems to mostly just bring confusion.

from dqlite.

freeekanayaka avatar freeekanayaka commented on September 13, 2024 1

@freeekanayaka

What about dropping support for external linking to libraft altogether? Not sure what it is needed for, but it seems to mostly just bring confusion.

I wanted to give users of dqlite a transition period to switch over to the new build configuration. We will definititely remove the option to link a libraft eventually.

Yeah, I gathered that, but I don't quite see why a user would want to stick to the old configuration.

If you just make the new configuration the default, that will be virtually transparent to users, because you're removing a dependency, not adding one. And on the plus side people won't be confused, it should just work afaict.

from dqlite.

cole-miller avatar cole-miller commented on September 13, 2024 1

If you just make the new configuration the default, that will be virtually transparent to users, because you're removing a dependency, not adding one.

I agree this is convenient, but it seems like a potential violation of expectations that code from libraft.so no longer runs after an upgrade in this case. What if someone has installed a patched libraft and is relying on dqlite to call into that patched code? The transition period gives people a chance to explicitly turn on --enable-build-raft and simultaneously update how they build and install dqlite to reflect that libraft is no longer in the loop.

That said, we've had three releases now featuring --enable-build-raft, so it's probably a good idea to retire it with the next release. Thanks to you both for pointing out the potential confusion.

from dqlite.

cole-miller avatar cole-miller commented on September 13, 2024

Duplicate of #650, #594, and #549, and the answer is the same. Please don't open additional issues about this.

from dqlite.

kloczek avatar kloczek commented on September 13, 2024

Two of those tickets are about to the same issue.

I'm using raft from https://github.com/cowsql/raft/ (0.22.1).

Just checked raft 0.22.1 source code.

[tkloczko@pers-jacek raft-0.22.1]$ grep -r raft_register_state_cb
[tkloczko@pers-jacek raft-0.22.1]$

from dqlite.

kloczek avatar kloczek commented on September 13, 2024

https://github.com/canonical/raft/ is at the moment archived so it is no longer maintained.
Q: where is raft which I should use? 🤔

from dqlite.

kloczek avatar kloczek commented on September 13, 2024

From https://github.com/canonical/raft/

The dqlite team is no longer maintaining our raft implementation as an independent project. Instead, the raft source code has been incorporated into canonical/dqlite as a private implementation detail

and looks like just released new version wants to use system installed raft

checking pkg-config is at least version 0.9.0... yes
checking for SQLITE... yes
checking for UV... yes
checking for RAFT... no
configure: error: Package requirements (raft >= 0.18.1) were not met:

Package 'raft', required by 'virtual:world', not found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

So I'm now puzzled a bit 🤔

from dqlite.

cole-miller avatar cole-miller commented on September 13, 2024

@kloczek Apologize for the confusion, I thought I'd explained this fully elsewhere but maybe I left some key details out. The following are all true:

  • --enable-build-raft is now the preferred way to build dqlite.
  • canonical/raft is archived and not receiving new releases (past v0.18.1).
  • The dqlite build system continues to support linking to a separately-build libraft.so. This is the default (if you don't pass --enable-build-raft) to maintain backward compatibility.
  • When using the "separately-built libraft" configuration, dqlite depends on canonical/raft, not cowsql/raft. You should use the last release of canonical/raft, v0.18.1. If you install cowsql/raft and try to build dqlite against it, our configure script will find the library (since it's installed under the same pkg-config name as canonical/raft), but then the actual build will fail because cowsql/raft doesn't implement all features of canonical/raft v0.18.1. The dqlite team can't do anything about this.
  • Eventually, the "separately-built libraft" build configuration for dqlite will go away, and --enable-build-raft will be the default and only choice. This is why you should switch to --enable-build-raft as soon as possible.

I hope that covers everything!

from dqlite.

cole-miller avatar cole-miller commented on September 13, 2024

@freeekanayaka

What about dropping support for external linking to libraft altogether? Not sure what it is needed for, but it seems to mostly just bring confusion.

I wanted to give users of dqlite a transition period to switch over to the new build configuration. We will definititely remove the option to link a libraft eventually.

from dqlite.

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.