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
[JUJU-210] DQLITE scaffolding work #13530
Conversation
569d00c
to
a57fda7
Compare
When enabling HA mode, you will get errors such as this in the machine-0 logs:
I have tracked this down to $GOPATH/deps/libraft/src/configuration.c:133 (RAFT_DUPLICATEID) but I have no idea how that value is selected. The Here are the contents of $ cat info.yaml
Address: 10.67.242.248:17069
ID: 3297041220608546238
Role: 0 Interestingly, I can also see the $ cat cluster.yaml
- Address: 10.67.242.248:17069 <--- this is controller-0
ID: 3297041220608546238
Role: 0
- Address: 10.67.242.193:17069 <--- this is controller-1
ID: 825241142
Role: 2 However, the dbaccessor worker keeps restarting due to the error reported by libraft. |
a57fda7
to
3801c3a
Compare
I worked with @SimonRichardson and we identified a better approach for assembling the dqlite cluster which got the PR changes working in HA mode (caveat: we must manually remove dead nodes from the cluster). We also tried dialing up the level to TRACE and deploying charmed-kubernetes to the controller model (on lxd). It seems to be working as expected:
Under load(?) we managed to get one of the controllers into a weird state where it suddenly started appending its logs to its own database (verified by connecting the repl to the node and running queries) whereas the other two nodes would happily keep streaming their logs to the original database. After bouncing jujud on the machine with the issue, it reconnected to the original cluster and started streaming logs again. We didn't see anything suspicious in the logs and are currently trying to reproduce and debug. |
@@ -58,6 +59,11 @@ var logger = loggo.GetLogger("juju.apiserver") | |||
|
|||
var defaultHTTPMethods = []string{"GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS"} | |||
|
|||
// SQLDBGetter provides access to model-scoped SQL databases. | |||
type SQLDBGetter interface { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I prefer nouns over {verb}-er. DBFactory
would by my choice.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No particular preference here; just wanted to use the idiomatic naming conventions for interfaces (io.Reader/Writer etc.).
In this case in particular, perhaps a DBResolver
would be a better name compared to the term "factory"
3801c3a
to
36bb0a6
Compare
36bb0a6
to
f070eda
Compare
Closing this because of no activity, please reopen if you want to move this forward. |
Caveats:
QA steps
Prepare juju 2.9 binaries for initial bootstrap
Spin up cross-compilation environment
Singe node test
HA mode
First, get the singular dqlite-enabled node up and running.