add --trace flag
git-svn-id: svn+ssh://svn.corp.yahoo.com/yahoo/yrl/labs/pnuts/code/logstore@3741 8dad8b1f-cf64-0410-95b6-bcf113ffbcfe
This commit is contained in:
parent
725f6f8279
commit
0b1d9dd236
1 changed files with 44 additions and 3 deletions
|
@ -28,6 +28,8 @@
|
||||||
|
|
||||||
int blind_update = 0; // updates check preimage by default.
|
int blind_update = 0; // updates check preimage by default.
|
||||||
|
|
||||||
|
FILE* trace = 0;
|
||||||
|
|
||||||
LSMServerHandler::
|
LSMServerHandler::
|
||||||
LSMServerHandler(int argc, char **argv)
|
LSMServerHandler(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -42,7 +44,7 @@ LSMServerHandler(int argc, char **argv)
|
||||||
int log_mode = 0; // do not log by default.
|
int log_mode = 0; // do not log by default.
|
||||||
int64_t expiry_delta = 0; // do not gc by default
|
int64_t expiry_delta = 0; // do not gc by default
|
||||||
port = 9090;
|
port = 9090;
|
||||||
|
char * tracefile = 0;
|
||||||
stasis_buffer_manager_size = 1 * 1024 * 1024 * 1024 / PAGE_SIZE; // 1.5GB total
|
stasis_buffer_manager_size = 1 * 1024 * 1024 * 1024 / PAGE_SIZE; // 1.5GB total
|
||||||
|
|
||||||
for(int i = 1; i < argc; i++) {
|
for(int i = 1; i < argc; i++) {
|
||||||
|
@ -64,6 +66,9 @@ LSMServerHandler(int argc, char **argv)
|
||||||
} else if(!strcmp(argv[i], "--port")) {
|
} else if(!strcmp(argv[i], "--port")) {
|
||||||
i++;
|
i++;
|
||||||
port = atoi(argv[i]);
|
port = atoi(argv[i]);
|
||||||
|
} else if(!strcmp(argv[i], "--trace")) {
|
||||||
|
i++;
|
||||||
|
tracefile = argv[i];
|
||||||
} else if(!strcmp(argv[i], "--blind-update")) {
|
} else if(!strcmp(argv[i], "--blind-update")) {
|
||||||
blind_update = 1;
|
blind_update = 1;
|
||||||
} else if(!strcmp(argv[i], "--expiry-delta")) {
|
} else if(!strcmp(argv[i], "--expiry-delta")) {
|
||||||
|
@ -75,6 +80,14 @@ LSMServerHandler(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(tracefile) {
|
||||||
|
trace = fopen(tracefile, "w");
|
||||||
|
if(trace == 0) {
|
||||||
|
perror("Couldn't open trace file!");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pthread_mutex_init(&mutex_, 0);
|
pthread_mutex_init(&mutex_, 0);
|
||||||
logtable::init_stasis();
|
logtable::init_stasis();
|
||||||
|
|
||||||
|
@ -154,16 +167,21 @@ nextDatabaseId()
|
||||||
ResponseCode::type LSMServerHandler::
|
ResponseCode::type LSMServerHandler::
|
||||||
ping()
|
ping()
|
||||||
{
|
{
|
||||||
|
if(trace) { fprintf(trace, "Success = ping()\n"); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::Success;
|
return mapkeeper::ResponseCode::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResponseCode::type LSMServerHandler::
|
ResponseCode::type LSMServerHandler::
|
||||||
shutdown()
|
shutdown()
|
||||||
{
|
{
|
||||||
|
if(trace) { fprintf(trace, "Success = shutdown()\n"); fflush(trace); }
|
||||||
exit(0); // xxx hack
|
exit(0); // xxx hack
|
||||||
return mapkeeper::ResponseCode::Success;
|
return mapkeeper::ResponseCode::Success;
|
||||||
}
|
}
|
||||||
|
std::string pp_tuple(datatuple * tuple) {
|
||||||
|
std::string key((const char*)tuple->rawkey(), (size_t)tuple->rawkeylen());
|
||||||
|
return key;
|
||||||
|
}
|
||||||
ResponseCode::type LSMServerHandler::
|
ResponseCode::type LSMServerHandler::
|
||||||
insert(datatuple* tuple)
|
insert(datatuple* tuple)
|
||||||
{
|
{
|
||||||
|
@ -180,8 +198,10 @@ addMap(const std::string& databaseName)
|
||||||
datatuple* ret = get(tup);
|
datatuple* ret = get(tup);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
datatuple::freetuple(ret);
|
datatuple::freetuple(ret);
|
||||||
|
if(trace) { fprintf(trace, "MapExists = addMap(%s)\n", databaseName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::MapExists;
|
return mapkeeper::ResponseCode::MapExists;
|
||||||
}
|
}
|
||||||
|
if(trace) { fprintf(trace, "Success = addMap(%s)\n", databaseName.c_str()); fflush(trace); }
|
||||||
return insert(tup);
|
return insert(tup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,6 +210,7 @@ dropMap(const std::string& databaseName)
|
||||||
{
|
{
|
||||||
uint32_t id = getDatabaseId(databaseName);
|
uint32_t id = getDatabaseId(databaseName);
|
||||||
if(id == 0) {
|
if(id == 0) {
|
||||||
|
if(trace) { fprintf(trace, "MapNotFound = dropMap(%s)\n", databaseName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::MapNotFound;
|
return mapkeeper::ResponseCode::MapNotFound;
|
||||||
}
|
}
|
||||||
datatuple * tup = buildTuple(0, databaseName);
|
datatuple * tup = buildTuple(0, databaseName);
|
||||||
|
@ -217,9 +238,11 @@ dropMap(const std::string& databaseName)
|
||||||
datatuple::freetuple(current);
|
datatuple::freetuple(current);
|
||||||
}
|
}
|
||||||
delete itr;
|
delete itr;
|
||||||
|
if(trace) { fprintf(trace, "Success = dropMap(%s)\n", databaseName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::Success;
|
return mapkeeper::ResponseCode::Success;
|
||||||
} else {
|
} else {
|
||||||
datatuple::freetuple(tup);
|
datatuple::freetuple(tup);
|
||||||
|
if(trace) { fprintf(trace, "MapNotFound = dropMap(%s)\n", databaseName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::MapNotFound;
|
return mapkeeper::ResponseCode::MapNotFound;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -242,7 +265,7 @@ listMaps(StringListResponse& _return)
|
||||||
datatuple::freetuple(current);
|
datatuple::freetuple(current);
|
||||||
}
|
}
|
||||||
delete itr;
|
delete itr;
|
||||||
|
if(trace) { fprintf(trace, "... = listMaps()\n"); fflush(trace); }
|
||||||
_return.responseCode = mapkeeper::ResponseCode::Success;
|
_return.responseCode = mapkeeper::ResponseCode::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,6 +278,7 @@ scan(RecordListResponse& _return, const std::string& databaseName, const ScanOrd
|
||||||
uint32_t id = getDatabaseId(databaseName);
|
uint32_t id = getDatabaseId(databaseName);
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
// database not found
|
// database not found
|
||||||
|
if(trace) { fprintf(trace, "MapNotFound = scan(...)\n"); fflush(trace); }
|
||||||
_return.responseCode = mapkeeper::ResponseCode::MapNotFound;
|
_return.responseCode = mapkeeper::ResponseCode::MapNotFound;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -275,6 +299,7 @@ scan(RecordListResponse& _return, const std::string& databaseName, const ScanOrd
|
||||||
datatuple* current = itr->getnext();
|
datatuple* current = itr->getnext();
|
||||||
if (current == NULL) {
|
if (current == NULL) {
|
||||||
_return.responseCode = mapkeeper::ResponseCode::ScanEnded;
|
_return.responseCode = mapkeeper::ResponseCode::ScanEnded;
|
||||||
|
if(trace) { fprintf(trace, "ScanEnded = scan(...)\n"); fflush(trace); }
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,6 +315,7 @@ scan(RecordListResponse& _return, const std::string& databaseName, const ScanOrd
|
||||||
(endKeyIncluded && cmp > 0)) {
|
(endKeyIncluded && cmp > 0)) {
|
||||||
datatuple::freetuple(current);
|
datatuple::freetuple(current);
|
||||||
_return.responseCode = mapkeeper::ResponseCode::ScanEnded;
|
_return.responseCode = mapkeeper::ResponseCode::ScanEnded;
|
||||||
|
if(trace) { fprintf(trace, "ScanEnded = scan(...)\n"); fflush(trace); }
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,6 +346,7 @@ get(BinaryResponse& _return, const std::string& databaseName, const std::string&
|
||||||
uint32_t id = getDatabaseId(databaseName);
|
uint32_t id = getDatabaseId(databaseName);
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
// database not found
|
// database not found
|
||||||
|
if(trace) { fprintf(trace, "MapNotFound = get(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
_return.responseCode = mapkeeper::ResponseCode::MapNotFound;
|
_return.responseCode = mapkeeper::ResponseCode::MapNotFound;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -327,9 +354,11 @@ get(BinaryResponse& _return, const std::string& databaseName, const std::string&
|
||||||
datatuple* recordBody = get(id, recordName);
|
datatuple* recordBody = get(id, recordName);
|
||||||
if (recordBody == NULL) {
|
if (recordBody == NULL) {
|
||||||
// record not found
|
// record not found
|
||||||
|
if(trace) { fprintf(trace, "RecordNotFound = get(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
_return.responseCode = mapkeeper::ResponseCode::RecordNotFound;
|
_return.responseCode = mapkeeper::ResponseCode::RecordNotFound;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(trace) { fprintf(trace, "Success = get(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
_return.responseCode = mapkeeper::ResponseCode::Success;
|
_return.responseCode = mapkeeper::ResponseCode::Success;
|
||||||
_return.value.assign((const char*)(recordBody->data()), recordBody->datalen());
|
_return.value.assign((const char*)(recordBody->data()), recordBody->datalen());
|
||||||
datatuple::freetuple(recordBody);
|
datatuple::freetuple(recordBody);
|
||||||
|
@ -368,9 +397,11 @@ put(const std::string& databaseName,
|
||||||
{
|
{
|
||||||
uint32_t id = getDatabaseId(databaseName);
|
uint32_t id = getDatabaseId(databaseName);
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
|
if(trace) { fprintf(trace, "MapNotFound = put(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::MapNotFound;
|
return mapkeeper::ResponseCode::MapNotFound;
|
||||||
}
|
}
|
||||||
datatuple* tup = buildTuple(id, recordName, recordBody);
|
datatuple* tup = buildTuple(id, recordName, recordBody);
|
||||||
|
if(trace) { fprintf(trace, "Success = put(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return insert(tup);
|
return insert(tup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -381,6 +412,7 @@ insert(const std::string& databaseName,
|
||||||
{
|
{
|
||||||
uint32_t id = getDatabaseId(databaseName);
|
uint32_t id = getDatabaseId(databaseName);
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
|
if(trace) { fprintf(trace, "MapNotFound = insert(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::MapNotFound;
|
return mapkeeper::ResponseCode::MapNotFound;
|
||||||
}
|
}
|
||||||
if(!blind_update) {
|
if(!blind_update) {
|
||||||
|
@ -390,18 +422,21 @@ insert(const std::string& databaseName,
|
||||||
datatuple::freetuple(oldRecordBody);
|
datatuple::freetuple(oldRecordBody);
|
||||||
} else {
|
} else {
|
||||||
datatuple::freetuple(oldRecordBody);
|
datatuple::freetuple(oldRecordBody);
|
||||||
|
if(trace) { fprintf(trace, "RecordExists = insert(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::RecordExists;
|
return mapkeeper::ResponseCode::RecordExists;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
datatuple* tup = buildTuple(id, recordName, recordBody);
|
datatuple* tup = buildTuple(id, recordName, recordBody);
|
||||||
|
if(trace) { fprintf(trace, "Success = insert(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return insert(tup);
|
return insert(tup);
|
||||||
}
|
}
|
||||||
|
|
||||||
ResponseCode::type LSMServerHandler::
|
ResponseCode::type LSMServerHandler::
|
||||||
insertMany(const std::string& databaseName, const std::vector<Record> & records)
|
insertMany(const std::string& databaseName, const std::vector<Record> & records)
|
||||||
{
|
{
|
||||||
|
if(trace) { fprintf(trace, "Error = insertMany(%s, ...) (not supported)\n", databaseName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::Error;
|
return mapkeeper::ResponseCode::Error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,16 +447,19 @@ update(const std::string& databaseName,
|
||||||
{
|
{
|
||||||
uint32_t id = getDatabaseId(databaseName);
|
uint32_t id = getDatabaseId(databaseName);
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
|
if(trace) { fprintf(trace, "MapNotFound = update(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::MapNotFound;
|
return mapkeeper::ResponseCode::MapNotFound;
|
||||||
}
|
}
|
||||||
if(!blind_update) {
|
if(!blind_update) {
|
||||||
datatuple* oldRecordBody = get(id, recordName);
|
datatuple* oldRecordBody = get(id, recordName);
|
||||||
if (oldRecordBody == NULL) {
|
if (oldRecordBody == NULL) {
|
||||||
|
if(trace) { fprintf(trace, "RecordNotFound = update(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::RecordNotFound;
|
return mapkeeper::ResponseCode::RecordNotFound;
|
||||||
}
|
}
|
||||||
datatuple::freetuple(oldRecordBody);
|
datatuple::freetuple(oldRecordBody);
|
||||||
}
|
}
|
||||||
datatuple* tup = buildTuple(id, recordName, recordBody);
|
datatuple* tup = buildTuple(id, recordName, recordBody);
|
||||||
|
if(trace) { fprintf(trace, "Success = update(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return insert(tup);
|
return insert(tup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,14 +468,17 @@ remove(const std::string& databaseName, const std::string& recordName)
|
||||||
{
|
{
|
||||||
uint32_t id = getDatabaseId(databaseName);
|
uint32_t id = getDatabaseId(databaseName);
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
|
if(trace) { fprintf(trace, "MapNotFound = remove(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::MapNotFound;
|
return mapkeeper::ResponseCode::MapNotFound;
|
||||||
}
|
}
|
||||||
datatuple* oldRecordBody = get(id, recordName);
|
datatuple* oldRecordBody = get(id, recordName);
|
||||||
if (oldRecordBody == NULL) {
|
if (oldRecordBody == NULL) {
|
||||||
|
if(trace) { fprintf(trace, "RecordNotFound = remove(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return mapkeeper::ResponseCode::RecordNotFound;
|
return mapkeeper::ResponseCode::RecordNotFound;
|
||||||
}
|
}
|
||||||
datatuple::freetuple(oldRecordBody);
|
datatuple::freetuple(oldRecordBody);
|
||||||
datatuple* tup = buildTuple(id, recordName);
|
datatuple* tup = buildTuple(id, recordName);
|
||||||
|
if(trace) { fprintf(trace, "Success = remove(%s, %s)\n", databaseName.c_str(), recordName.c_str()); fflush(trace); }
|
||||||
return insert(tup);
|
return insert(tup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue