Commit 43bb53585e6c00c60bd89c5db988f0cfaff57d4d

Minor fix to Chunk#find_next_node (SkiplistStore-specific check is extracted back to SkiplistStore)

Commit diff

strokedb-ruby/lib/stores/skiplist_store/chunk.rb

 
4242 chunk_node = chunk_node.next
4343 if chunk_node.is_a?(Skiplist::TailNode)
4444 chunk = chunk.next_chunk
45 unless chunk.nil? && chunk.uuid[0,uuid.length] != uuid
45 unless chunk.nil?
4646 chunk_node = chunk.first_node
4747 else
4848 chunk_node = nil
toggle raw diff

strokedb-ruby/lib/stores/skiplist_store/skiplist_store.rb

 
3030 when /^0000000000000000#{UUID_RE}/ # first version
3131 return nil unless chunk_node = chunk.find_node(uuid)
3232 chunk_node = chunk.find_next_node(chunk_node)
33 return nil if chunk_node.key[0,uuid.length] != uuid
3334 raw_doc = chunk_node.value
3435 when /^#{VERSION_RE}/, nil # any other or no version
3536 raw_doc = chunk.find(uuid_version)
toggle raw diff

strokedb-ruby/spec/stores/skiplist_store/chunk_spec.rb

 
7979describe "Chunks" do
8080
8181 before(:each) do
82 head_chunk = Chunk.new(3)
82 @head_chunk = Chunk.new(3)
8383 @docs_by_uuid = {}
8484 @all_chunks = {} # uuid => chunk
8585 20.times do |i|
8686 uuid = "K#{100+i}"
8787 doc = {:i => i, :text => "Text."}
8888 @docs_by_uuid[uuid] = doc
89 a, b = head_chunk.insert(uuid, doc)
89 a, b = @head_chunk.insert(uuid, doc)
9090 head_chunk = b || a
9191 [a, b].each do |c|
9292 @all_chunks[c.uuid] = c if c
9494 end
9595 end
9696
97 it "should find next chunk node to given node" do
98 pending
99 @head_chunk.find_next_node(@head_chunk.find_node("K100")).key.should == "K101"
100 end
101
102 it "should find next chunk node to given node if that node is just before tail node" do
103 pending
104 node = @head_chunk.find_node("K100")
105 node = node.next until node.next.is_a?(Skiplist::TailNode)
106 node.next.should be_a_kind_of(Skiplist::TailNode)
107 @head_chunk.find_next_node(node).key.should == "K#{node.key[1,3].to_i+1}"
108 end
109
97110 it "should be serialized well" do
98111 @all_chunks.each do |k,v|
99112 rawv = v.to_raw
128128 end
129129
130130end
131
toggle raw diff