From 2e1148789cc2408c732e9f8d12841eb8f56a713c Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 1 May 2021 10:23:21 -0400 Subject: [PATCH 01/10] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..f1fe3bb6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,14 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**What did you do?** + +**What did you expect to happen?** + +**What happened instead?** From 5378282a521c4a833c594a2b786e0dda40672f89 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 1 May 2021 10:34:52 -0400 Subject: [PATCH 02/10] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index f1fe3bb6..3893e29d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -7,8 +7,14 @@ assignees: '' --- +**What version are you running?** + **What did you do?** **What did you expect to happen?** **What happened instead?** + +**Please include the Status and Expvar output from each node** + +See https://github.com/rqlite/rqlite/blob/master/DOC/DIAGNOSTICS.md From 2040c58ccc042437de4cd2e8937351f6a1cc830a Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 1 May 2021 10:35:33 -0400 Subject: [PATCH 03/10] Update bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 3893e29d..8b09eb96 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: Bug report -about: Create a report to help us improve +about: Create a report to help improve rqlite title: '' labels: '' assignees: '' From 6fc61c10c9e14f9e6b202faa6b14e05b551ab382 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 1 May 2021 10:42:42 -0400 Subject: [PATCH 04/10] Update issue templates --- .github/ISSUE_TEMPLATE/feature_request.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..b28df125 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for rqlite +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 0eff310fe62f0640edd497a9311fe321d47bd875 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 1 May 2021 10:43:34 -0400 Subject: [PATCH 05/10] Update issue templates --- .github/ISSUE_TEMPLATE/question-about-rqlite.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/question-about-rqlite.md diff --git a/.github/ISSUE_TEMPLATE/question-about-rqlite.md b/.github/ISSUE_TEMPLATE/question-about-rqlite.md new file mode 100644 index 00000000..5b68b41e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question-about-rqlite.md @@ -0,0 +1,10 @@ +--- +name: Question about rqlite +about: Ask a question about rqlite and its use +title: '' +labels: '' +assignees: '' + +--- + + From e038339d5c635e030ea6dc051ef35c31eccb6b24 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 1 May 2021 10:45:17 -0400 Subject: [PATCH 06/10] Update question-about-rqlite.md --- .github/ISSUE_TEMPLATE/question-about-rqlite.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/question-about-rqlite.md b/.github/ISSUE_TEMPLATE/question-about-rqlite.md index 5b68b41e..cbc0de47 100644 --- a/.github/ISSUE_TEMPLATE/question-about-rqlite.md +++ b/.github/ISSUE_TEMPLATE/question-about-rqlite.md @@ -6,5 +6,11 @@ labels: '' assignees: '' --- +Before you ask a question here about rqlite, consider instead posting your question to the rqlite Google Group. That way you can benefit from that larger community's expertise. +https://groups.google.com/g/rqlite + +You can also start a discussion on the rqlite GitHub discussion page. + +https://github.com/rqlite/rqlite/discussions From 9e3bc8964eee13d2d6531063564f832460952035 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Sat, 1 May 2021 10:50:51 -0400 Subject: [PATCH 07/10] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6ee7673..c74ffe40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ This release implements a significant design change, which improves rqlite clust In the 5.0 series, _Follower_ nodes learned the HTTP API address of the cluster Leader via information - known as _Metadata_ - that each node wrote to the Raft log. This Metadata was then available to each node in the cluster, if that node needed to redirect queries to the cluster Leader (assuming that node wasn't the Leader at that time). However that design was somewhat complex, and required the tracking of extra state, in addition to the SQLite database. It also meant that if the Metadata got out of sync with the Raft state, the cluster could be in a degraded state. -In this new design, a node now queries the Leader as needed, when that node needs to learn the Leader's HTTP API address. As a result, the Metadata component has been removed from rqlite, since it is no longer needed. And without any possibility of discrepancy between Metadata and Raft state, a whole class of potential bugs is removed. Any request for the Leader HTTP API address means a node connects to the TCP port already open (and required) for Raft connections, so does not introduce any new failure modes. This multiplexing of the Raft connection is performed via the `mux` package. +In this new design, a node now queries the Leader as needed, when that node needs to learn the Leader's HTTP API address. As a result, the Metadata component has been removed from rqlite, since it is no longer needed. And without any possibility of discrepancy between Metadata and Raft state, a whole class of potential bugs is removed. Any request for the Leader HTTP API address means the requesting node node connects to a TCP port already open on the Leader for Raft connections, so does not introduce any new failure modes. This multiplexing of the Raft TCP port is performed via the `mux` package. This new design does mean that nodes running earlier software cannot communicate with 6.0 nodes, as 6.0 software no longer performs Metadata updates. As a result, **rqlite clusters running 5.x software or earlier must be explicitly upgraded**. To upgrade from an earlier version to this release you should [backup your Leader node](https://github.com/rqlite/rqlite/blob/master/DOC/BACKUPS.md), and [restore the database dump](https://github.com/rqlite/rqlite/blob/master/DOC/RESTORE_FROM_SQLITE.md) into a new 6.0 cluster. From dbd1c0a2541a3a2feb37180adebc690c473e0b31 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Mon, 3 May 2021 08:50:00 -0400 Subject: [PATCH 08/10] Remove 'redirect' from HTTP status Getting the redirect information requires accessing other nodes, which could block if those nodes are not up. --- http/service.go | 5 ++--- system_test/full_system_test.py | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/http/service.go b/http/service.go index eb6560ba..cebf3de2 100644 --- a/http/service.go +++ b/http/service.go @@ -532,9 +532,8 @@ func (s *Service) handleStatus(w http.ResponseWriter, r *http.Request) { } httpStatus := map[string]interface{}{ - "addr": s.Addr().String(), - "auth": prettyEnabled(s.credentialStore != nil), - "redirect": s.LeaderAPIAddr(), + "addr": s.Addr().String(), + "auth": prettyEnabled(s.credentialStore != nil), } nodeStatus := map[string]interface{}{ diff --git a/system_test/full_system_test.py b/system_test/full_system_test.py index f4397223..d19d471f 100755 --- a/system_test/full_system_test.py +++ b/system_test/full_system_test.py @@ -353,6 +353,7 @@ class TestSingleNode(unittest.TestCase): t+=1 class TestIdempotentJoin(unittest.TestCase): + '''Test that a node performing two join requests works fine''' def tearDown(self): deprovision_node(self.n0) deprovision_node(self.n1) From e5c80faa0cc1c90237adc953af953e307af46487 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Mon, 3 May 2021 08:55:35 -0400 Subject: [PATCH 09/10] Fix pydoc --- system_test/full_system_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system_test/full_system_test.py b/system_test/full_system_test.py index d19d471f..6548d4dd 100755 --- a/system_test/full_system_test.py +++ b/system_test/full_system_test.py @@ -353,12 +353,12 @@ class TestSingleNode(unittest.TestCase): t+=1 class TestIdempotentJoin(unittest.TestCase): - '''Test that a node performing two join requests works fine''' def tearDown(self): deprovision_node(self.n0) deprovision_node(self.n1) def test(self): + '''Test that a node performing two join requests works fine''' self.n0 = Node(RQLITED_PATH, '0') self.n0.start() self.n0.wait_for_leader() From 213902ef823bafa99a337d2e82f29fec62472fbe Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Mon, 3 May 2021 09:09:45 -0400 Subject: [PATCH 10/10] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c74ffe40..df742618 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The data API and cluster-management API remain unchanged however, so client code ### Implementation changes and bug fixes - [PR #792](https://github.com/rqlite/rqlite/pull/792): Fetch leader HTTP API addresses on demand. + - [PR #797](https://github.com/rqlite/rqlite/pull/797): Remove `redirect` key from HTTP status output. ## 5.12.1 (April 29th 2021)