940a6da6fe
The tests now pass, except that check_merge never terminates (it takes too long) and check_mergelarge still is not passing. For better luck running this version of the code, turn off stasis' concurrent buffer manager. We're doing something bad that leads to deadlocks with the concurrent buffer manager. Another (the same?) bug less-frequently leads to page corruption with the old stasis buffer manager. git-svn-id: svn+ssh://svn.corp.yahoo.com/yahoo/yrl/labs/pnuts/code/logstore@556 8dad8b1f-cf64-0410-95b6-bcf113ffbcfe
86 lines
1.5 KiB
C++
86 lines
1.5 KiB
C++
#include <string>
|
|
#include <vector>
|
|
#include <iostream>
|
|
#include <sstream>
|
|
#include "logstore.h"
|
|
#include "datapage.h"
|
|
#include "logiterators.h"
|
|
#include "merger.h"
|
|
#include <assert.h>
|
|
#include <limits.h>
|
|
#include <math.h>
|
|
#include <pthread.h>
|
|
#include <sys/time.h>
|
|
#include <time.h>
|
|
|
|
#include <csignal>
|
|
|
|
#undef begin
|
|
#undef end
|
|
|
|
logserver *lserver=0;
|
|
merge_scheduler *mscheduler=0;
|
|
|
|
void terminate (int param)
|
|
{
|
|
printf ("Stopping server...\n");
|
|
lserver->stopserver();
|
|
delete lserver;
|
|
|
|
printf("Stopping merge threads...\n");
|
|
mscheduler->shutdown();
|
|
delete mscheduler;
|
|
|
|
printf("Deinitializing stasis...\n");
|
|
fflush(stdout);
|
|
Tdeinit();
|
|
|
|
exit(0);
|
|
}
|
|
|
|
void initialize_server()
|
|
{
|
|
//signal handling
|
|
void (*prev_fn)(int);
|
|
|
|
prev_fn = signal (SIGINT,terminate);
|
|
|
|
bufferManagerFileHandleType = BUFFER_MANAGER_FILE_HANDLE_PFILE;
|
|
|
|
Tinit();
|
|
|
|
int xid = Tbegin();
|
|
|
|
mscheduler = new merge_scheduler;
|
|
logtable ltable;
|
|
|
|
int pcount = 40;
|
|
ltable.set_fixed_page_count(pcount);
|
|
|
|
recordid table_root = ltable.allocTable(xid);
|
|
|
|
Tcommit(xid);
|
|
|
|
int lindex = mscheduler->addlogtable(<able);
|
|
ltable.setMergeData(mscheduler->getMergeData(lindex));
|
|
|
|
int64_t c0_size = 1024 * 1024 * 10;
|
|
printf("warning: running w/ tiny c0 for testing"); // XXX
|
|
mscheduler->startlogtable(lindex, c0_size);
|
|
|
|
lserver = new logserver(10, 32432);
|
|
|
|
lserver->startserver(<able);
|
|
|
|
}
|
|
|
|
|
|
|
|
/** @test
|
|
*/
|
|
int main()
|
|
{
|
|
initialize_server();
|
|
abort(); // can't get here.
|
|
}
|
|
|