add --test argument to server, fix segfault due to scans with empty c0_mergeable
git-svn-id: svn+ssh://svn.corp.yahoo.com/yahoo/yrl/labs/pnuts/code/logstore@699 8dad8b1f-cf64-0410-95b6-bcf113ffbcfe
This commit is contained in:
parent
e1c937a602
commit
ead6207f86
3 changed files with 32 additions and 31 deletions
|
@ -44,7 +44,11 @@ class diskTreeComponent {
|
||||||
return new iterator(ltree);
|
return new iterator(ltree);
|
||||||
}
|
}
|
||||||
iterator * open_iterator(datatuple * key) {
|
iterator * open_iterator(datatuple * key) {
|
||||||
return new iterator(ltree, key);
|
if(key != NULL) {
|
||||||
|
return new iterator(ltree, key);
|
||||||
|
} else {
|
||||||
|
return new iterator(ltree);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void force(int xid);
|
void force(int xid);
|
||||||
|
|
32
logstore.h
32
logstore.h
|
@ -142,7 +142,7 @@ public:
|
||||||
current_[0] = first_iter_->getnext();
|
current_[0] = first_iter_->getnext();
|
||||||
for(int i = 1; i < num_iters_; i++) {
|
for(int i = 1; i < num_iters_; i++) {
|
||||||
iters_[i-1] = iters[i-1];
|
iters_[i-1] = iters[i-1];
|
||||||
current_[i] = iters_[i-1]->next_callerFrees();
|
current_[i] = iters_[i-1] ? iters_[i-1]->next_callerFrees() : NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
~mergeManyIterator() {
|
~mergeManyIterator() {
|
||||||
|
@ -338,26 +338,26 @@ public:
|
||||||
typename memTreeComponent<TUPLE>::iterator *c0_mergeable_it[1];
|
typename memTreeComponent<TUPLE>::iterator *c0_mergeable_it[1];
|
||||||
diskTreeComponent::iterator * disk_it[3];
|
diskTreeComponent::iterator * disk_it[3];
|
||||||
epoch = ltable->get_epoch();
|
epoch = ltable->get_epoch();
|
||||||
|
|
||||||
|
datatuple *t;
|
||||||
if(last_returned) {
|
if(last_returned) {
|
||||||
c0_it = new typename memTreeComponent<TUPLE>::revalidatingIterator(ltable->get_tree_c0(), ltable->getMergeData()->rbtree_mut, last_returned);
|
t = last_returned;
|
||||||
c0_mergeable_it[0] = new typename memTreeComponent<TUPLE>::iterator (ltable->get_tree_c0_mergeable(), last_returned);
|
|
||||||
disk_it[0] = ltable->get_tree_c1()->open_iterator(last_returned);
|
|
||||||
disk_it[1] = ltable->get_tree_c1_mergeable()->open_iterator(last_returned);
|
|
||||||
disk_it[2] = ltable->get_tree_c2()->open_iterator(last_returned);
|
|
||||||
} else if(key) {
|
} else if(key) {
|
||||||
c0_it = new typename memTreeComponent<TUPLE>::revalidatingIterator(ltable->get_tree_c0(), ltable->getMergeData()->rbtree_mut, key);
|
t = key;
|
||||||
c0_mergeable_it[0] = new typename memTreeComponent<TUPLE>::iterator (ltable->get_tree_c0_mergeable(), key);
|
|
||||||
disk_it[0] = ltable->get_tree_c1()->open_iterator(key);
|
|
||||||
disk_it[1] = ltable->get_tree_c1_mergeable()->open_iterator(key);
|
|
||||||
disk_it[2] = ltable->get_tree_c2()->open_iterator(key);
|
|
||||||
} else {
|
} else {
|
||||||
c0_it = new typename memTreeComponent<TUPLE>::revalidatingIterator(ltable->get_tree_c0(), ltable->getMergeData()->rbtree_mut );
|
t = NULL;
|
||||||
c0_mergeable_it[0] = new typename memTreeComponent<TUPLE>::iterator (ltable->get_tree_c0_mergeable() );
|
|
||||||
disk_it[0] = ltable->get_tree_c1()->open_iterator();
|
|
||||||
disk_it[1] = ltable->get_tree_c1_mergeable()->open_iterator();
|
|
||||||
disk_it[2] = ltable->get_tree_c2()->open_iterator();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c0_it = new typename memTreeComponent<TUPLE>::revalidatingIterator(ltable->get_tree_c0(), ltable->getMergeData()->rbtree_mut, t);
|
||||||
|
c0_mergeable_it[0] = new typename memTreeComponent<TUPLE>::iterator (ltable->get_tree_c0_mergeable(), t);
|
||||||
|
disk_it[0] = ltable->get_tree_c1()->open_iterator(t);
|
||||||
|
if(ltable->get_tree_c1_mergeable()) {
|
||||||
|
disk_it[1] = ltable->get_tree_c1_mergeable()->open_iterator(t);
|
||||||
|
} else {
|
||||||
|
disk_it[1] = NULL;
|
||||||
|
}
|
||||||
|
disk_it[2] = ltable->get_tree_c2()->open_iterator(t);
|
||||||
|
|
||||||
inner_merge_it_t * inner_merge_it =
|
inner_merge_it_t * inner_merge_it =
|
||||||
new inner_merge_it_t(c0_it, c0_mergeable_it, 1, NULL, TUPLE::compare_obj);
|
new inner_merge_it_t(c0_it, c0_mergeable_it, 1, NULL, TUPLE::compare_obj);
|
||||||
merge_it_ = new merge_it_t(inner_merge_it, disk_it, 3, NULL, TUPLE::compare_obj); // XXX Hardcodes comparator, and does not handle merges
|
merge_it_ = new merge_it_t(inner_merge_it, disk_it, 3, NULL, TUPLE::compare_obj); // XXX Hardcodes comparator, and does not handle merges
|
||||||
|
|
25
server.cpp
25
server.cpp
|
@ -42,7 +42,7 @@ void terminate (int param)
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void initialize_server()
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
//signal handling
|
//signal handling
|
||||||
void (*prev_fn)(int);
|
void (*prev_fn)(int);
|
||||||
|
@ -77,8 +77,14 @@ void initialize_server()
|
||||||
int lindex = mscheduler->addlogtable(<able);
|
int lindex = mscheduler->addlogtable(<able);
|
||||||
ltable.setMergeData(mscheduler->getMergeData(lindex));
|
ltable.setMergeData(mscheduler->getMergeData(lindex));
|
||||||
|
|
||||||
int64_t c0_size = 1024 * 1024 * 10;
|
int64_t c0_size = 1024 * 1024 * 1024 * 1;
|
||||||
printf("warning: running w/ tiny c0 for testing"); // XXX build a separate test server and deployment server?
|
|
||||||
|
if(argc == 2 && !strcmp(argv[0], "--test")) {
|
||||||
|
|
||||||
|
c0_size = 1024 * 1024 * 10;
|
||||||
|
printf("warning: running w/ tiny c0 for testing"); // XXX build a separate test server and deployment server?
|
||||||
|
}
|
||||||
|
|
||||||
mscheduler->startlogtable(lindex, c0_size);
|
mscheduler->startlogtable(lindex, c0_size);
|
||||||
|
|
||||||
unlock(ltable.header_lock);
|
unlock(ltable.header_lock);
|
||||||
|
@ -86,15 +92,6 @@ void initialize_server()
|
||||||
lserver = new logserver(10, 32432);
|
lserver = new logserver(10, 32432);
|
||||||
|
|
||||||
lserver->startserver(<able);
|
lserver->startserver(<able);
|
||||||
|
|
||||||
|
abort(); // can't get here.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @test
|
|
||||||
*/
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
initialize_server();
|
|
||||||
abort(); // can't get here.
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue