diff --git a/src/Commands.cc b/src/Commands.cc index 7db769722d70b3a4e786dcf7235c44945cae25ad..b07fe1295491f45f04e4e5ac3f200182c9f8a015 100644 --- a/src/Commands.cc +++ b/src/Commands.cc @@ -32,6 +32,7 @@ std::map<std::string, struct cmdMapInit { cmdMapInit() { redis_cmd_map["ping"] = {RedisCommand::PING, CommandType::CONTROL}; + redis_cmd_map["debug"] = {RedisCommand::DEBUG, CommandType::CONTROL}; redis_cmd_map["get"] = {RedisCommand::GET, CommandType::READ}; redis_cmd_map["exists"] = {RedisCommand::EXISTS, CommandType::READ}; diff --git a/src/Commands.hh b/src/Commands.hh index f2a0e363e45a074ab747ed8decd23b6b3328d7f2..16893769aeb68574f10be0118bf835e5e7b53be4 100644 --- a/src/Commands.hh +++ b/src/Commands.hh @@ -30,6 +30,8 @@ namespace quarkdb { enum class RedisCommand { PING, + DEBUG, + FLUSHALL, GET, diff --git a/src/Dispatcher.cc b/src/Dispatcher.cc index 9675f18b1a440dbb70fdb85f65b48ddd77070796..a4fb6e50700752abe1e33bc5bb617bde9d154cb0 100644 --- a/src/Dispatcher.cc +++ b/src/Dispatcher.cc @@ -45,6 +45,14 @@ LinkStatus RedisDispatcher::dispatch(Connection *conn, RedisRequest &request, Re return conn->string(request[1]); } + case RedisCommand::DEBUG: { + if(request.size() != 2) return conn->errArgs(request[0]); + if(request[1] == "segfault" || request[1] == "SEGFAULT") { + *( (int*) nullptr) = 5; // bye bye + } + + return conn->err(SSTR("unknown argument '" << request[1] << "'")); + } case RedisCommand::FLUSHALL: { if(request.size() != 1) return conn->errArgs(request[0]); rocksdb::Status st = store.flushall();