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.
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: []