raft 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/raft.rb +7 -7
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be1fe056a60bdef6345f99106b94f56c6198c72b
|
4
|
+
data.tar.gz: 98422a40d2f4636076e88f6db833a0b2b66ad908
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8a2ce6ed2719bfc5cddef9fee47d098c9c68c045c5ebc98904cb31e942276cb9b69f9ded5faf55cd64ae9ffc0ef3f455aded2ce56097ba8fa1fdd687467ee07
|
7
|
+
data.tar.gz: 0ae4654f3392bafd48510b6605c72334c1a36f72bbf1bdd052694f4aeef3bddc5bc473535a67d7e093c614b357ee6569b9250a9b3c14dd093ba0363ca411efc3
|
data/lib/raft.rb
CHANGED
@@ -6,8 +6,8 @@ module Raft
|
|
6
6
|
class Cluster
|
7
7
|
attr_reader :node_ids
|
8
8
|
|
9
|
-
def initialize
|
10
|
-
@node_ids =
|
9
|
+
def initialize(*node_ids)
|
10
|
+
@node_ids = node_ids
|
11
11
|
end
|
12
12
|
|
13
13
|
def quorum
|
@@ -234,8 +234,8 @@ module Raft
|
|
234
234
|
votes_against = 0
|
235
235
|
quorum = @cluster.quorum
|
236
236
|
#STDOUT.write("\n\t\t#{@id} requests votes for term #{@persistent_state.current_term}\n\n")
|
237
|
-
@config.rpc_provider.request_votes(request, @cluster) do |
|
238
|
-
#STDOUT.write("\n\t\t#{@id} receives vote #{response.vote_granted}\n\n")
|
237
|
+
@config.rpc_provider.request_votes(request, @cluster) do |voter_id, request, response|
|
238
|
+
#STDOUT.write("\n\t\t#{@id} receives vote #{response.vote_granted} from #{voter_id}\n\n")
|
239
239
|
elected = nil # no majority result yet
|
240
240
|
if request.term != @persistent_state.current_term
|
241
241
|
# this is a response to an out-of-date request, just ignore it
|
@@ -371,7 +371,7 @@ module Raft
|
|
371
371
|
protected :append_entries_to_follower
|
372
372
|
|
373
373
|
def handle_request_vote(request)
|
374
|
-
#STDOUT.write("\nnode #{@id} handling vote request from #{request.candidate_id}\n")
|
374
|
+
#STDOUT.write("\nnode #{@id} handling vote request from #{request.candidate_id} (request.last_log_index: #{request.last_log_index}, vs #{@persistent_state.log.last.index}\n")
|
375
375
|
response = RequestVoteResponse.new
|
376
376
|
response.term = @persistent_state.current_term
|
377
377
|
response.vote_granted = false
|
@@ -391,9 +391,9 @@ module Raft
|
|
391
391
|
@persistent_state.voted_for = request.candidate_id
|
392
392
|
response.vote_granted = true
|
393
393
|
elsif request.last_log_term == @persistent_state.log.last.term &&
|
394
|
-
request.last_log_index
|
394
|
+
(request.last_log_index || -1) < @persistent_state.log.last.index
|
395
395
|
# candidate's log is incomplete compared to this node
|
396
|
-
elsif request.last_log_term
|
396
|
+
elsif (request.last_log_term || -1) < @persistent_state.log.last.term
|
397
397
|
# candidate's log is incomplete compared to this node
|
398
398
|
else
|
399
399
|
@persistent_state.voted_for = request.candidate_id
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harry Wilkinson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: goliath
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: oj
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ~>
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '2.0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ~>
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '2.0'
|
97
83
|
description: A simple Raft distributed consensus implementation
|
98
84
|
email: hwilkinson@mdsol.com
|
99
85
|
executables: []
|