raft 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/raft.rb +7 -7
  3. metadata +2 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8fb71b1c5a8ec7d92e83aa96fbf5dcd50e1e1618
4
- data.tar.gz: 6a68f46a38f513a37f719f449f1c6465942a355d
3
+ metadata.gz: be1fe056a60bdef6345f99106b94f56c6198c72b
4
+ data.tar.gz: 98422a40d2f4636076e88f6db833a0b2b66ad908
5
5
  SHA512:
6
- metadata.gz: 962aa0264a180e89e09d4473d5dd8cee8c9d3e8e7ad99a36d784381abe757fa4f6b484aa265516c3a67e3b112b003448b1bb6a8954de6f3456925107d2916eba
7
- data.tar.gz: b2d783f93630ca150a6b8cebb77c21a5251775d28862665e768f780ed3bd92cedb5593332f2c46c9ac6be7d1a9ae35bba4b69b722333cca6904c3c207720569a
6
+ metadata.gz: c8a2ce6ed2719bfc5cddef9fee47d098c9c68c045c5ebc98904cb31e942276cb9b69f9ded5faf55cd64ae9ffc0ef3f455aded2ce56097ba8fa1fdd687467ee07
7
+ data.tar.gz: 0ae4654f3392bafd48510b6605c72334c1a36f72bbf1bdd052694f4aeef3bddc5bc473535a67d7e093c614b357ee6569b9250a9b3c14dd093ba0363ca411efc3
@@ -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 |_, request, response|
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 && request.last_log_index < @persistent_state.log.last.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 && request.last_log_term < @persistent_state.log.last.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.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-16 00:00:00.000000000 Z
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: []