From 9ddeeb20137dad8075cfa87b6179e714320d191a Mon Sep 17 00:00:00 2001 From: Konstantin Osipov <kostja@tarantool.org> Date: Thu, 15 Jan 2015 18:28:48 +0300 Subject: [PATCH] call-refactoring: minor post-merge fixes. --- src/box/box.cc | 25 +++++-------------------- src/box/box.h | 4 +--- src/box/iproto.cc | 2 +- src/box/lua/call.cc | 12 ++++++------ src/box/request.cc | 15 ++++++++++++--- src/box/request.h | 4 ++-- 6 files changed, 27 insertions(+), 35 deletions(-) diff --git a/src/box/box.cc b/src/box/box.cc index 7fa92e0af0..2371de06a2 100644 --- a/src/box/box.cc +++ b/src/box/box.cc @@ -52,13 +52,11 @@ #include "cfg.h" #include "iobuf.h" -static void process_ro(struct port *port, struct request *request); -static void process_rw(struct port *port, struct request *request); +static void process_ro(struct request *request, struct port *port); box_process_func box_process = process_ro; struct recovery_state *recovery; -int stat_base; int snapshot_pid = 0; /* snapshot processes pid */ static void @@ -74,24 +72,11 @@ struct request_replace_body { } __attribute__((packed)); static void -process_rw(struct port *port, struct request *request) -{ - try { - stat_collect(stat_base, request->type, 1); - request_execute(request, port); - port_eof(port); - } catch (Exception *e) { - txn_rollback_stmt(); - throw; - } -} - -static void -process_ro(struct port *port, struct request *request) +process_ro(struct request *request, struct port *port) { if (!iproto_type_is_select(request->type)) tnt_raise(LoggedError, ER_READONLY); - return process_rw(port, request); + return process_rw(request, port); } void @@ -118,7 +103,7 @@ recover_row(struct recovery_state *r, void *param, struct xrow_header *row) request_decode(&request, (const char *) row->body[0].iov_base, row->body[0].iov_len); request.header = row; - process_rw(&null_port, &request); + process_rw(&request, &null_port); } /* {{{ configuration bindings */ @@ -299,7 +284,7 @@ boxk(enum iproto_type type, uint32_t space_id, const char *format, ...) assert(data <= buf + sizeof(buf)); req.tuple = buf; req.tuple_end = data; - process_rw(&null_port, &req); + process_rw(&req, &null_port); } /** diff --git a/src/box/box.h b/src/box/box.h index bba7df512f..4729c99d10 100644 --- a/src/box/box.h +++ b/src/box/box.h @@ -63,7 +63,7 @@ box_atfork(); * change when entering/leaving read-only mode * (master->slave propagation). */ -typedef void (*box_process_func)(struct port *port, struct request *request); +typedef void (*box_process_func)(struct request *request, struct port *port); /** For read-write operations. */ extern box_process_func box_process; @@ -127,8 +127,6 @@ void box_set_too_long_threshold(double threshold); extern struct recovery_state *recovery; -extern int stat_base; - #if defined(__cplusplus) } #endif /* defined(__cplusplus) */ diff --git a/src/box/iproto.cc b/src/box/iproto.cc index 57084d6853..814ad86818 100644 --- a/src/box/iproto.cc +++ b/src/box/iproto.cc @@ -663,7 +663,7 @@ iproto_process(struct iproto_request *ireq) case IPROTO_DELETE: struct iproto_port port; iproto_port_init(&port, out, ireq->header.sync); - box_process((struct port *) &port, &ireq->request); + box_process(&ireq->request, (struct port *) &port); break; case IPROTO_CALL: stat_collect(stat_base, ireq->request.type, 1); diff --git a/src/box/lua/call.cc b/src/box/lua/call.cc index 7b1da1085f..eb661774c1 100644 --- a/src/box/lua/call.cc +++ b/src/box/lua/call.cc @@ -183,7 +183,7 @@ lbox_process(lua_State *L) struct request request; request_create(&request, op); request_decode(&request, req, sz); - box_process(port_lua, &request); + box_process(&request, port_lua); return 1; } @@ -266,7 +266,7 @@ boxffi_select(struct port *port, uint32_t space_id, uint32_t index_id, request.key_end = key_end; try { - box_process(port, &request); + box_process(&request, port); return 0; } catch (Exception *e) { /* will be hanled by box.error() in Lua */ @@ -284,7 +284,7 @@ lbox_insert(lua_State *L) struct port_lua port; lbox_request_create(&request, L, IPROTO_INSERT, -1, 2); port_lua_create(&port, L); - box_process((struct port *) &port, &request); + box_process(&request, (struct port *) &port); return lua_gettop(L) - 2; } @@ -298,7 +298,7 @@ lbox_replace(lua_State *L) struct port_lua port; lbox_request_create(&request, L, IPROTO_REPLACE, -1, 2); port_lua_create(&port, L); - box_process((struct port *) &port, &request); + box_process(&request, (struct port *) &port); return lua_gettop(L) - 2; } @@ -314,7 +314,7 @@ lbox_update(lua_State *L) request.field_base = 1; /* field ids are one-indexed */ port_lua_create(&port, L); /* Ignore index_id for now */ - box_process((struct port *) &port, &request); + box_process(&request, (struct port *) &port); return lua_gettop(L) - 4; } @@ -329,7 +329,7 @@ lbox_delete(lua_State *L) lbox_request_create(&request, L, IPROTO_DELETE, 3, -1); port_lua_create(&port, L); /* Ignore index_id for now */ - box_process((struct port *) &port, &request); + box_process(&request, (struct port *) &port); return lua_gettop(L) - 3; } diff --git a/src/box/request.cc b/src/box/request.cc index c8fc74aea5..8e1cb396fd 100644 --- a/src/box/request.cc +++ b/src/box/request.cc @@ -40,6 +40,9 @@ #include <scoped_guard.h> #include "user_def.h" #include "iproto_constants.h" +#include "stat.h" + +int stat_base; enum dup_replace_mode dup_replace_mode(uint32_t op) @@ -171,17 +174,23 @@ request_create(struct request *request, uint32_t type) typedef void (*request_execute_f)(struct request *, struct port *); void -request_execute(struct request *request, struct port *port) +process_rw(struct request *request, struct port *port) { assert(iproto_type_is_dml(request->type)); static const request_execute_f execute_map[] = { NULL, execute_select, execute_replace, execute_replace, execute_update, execute_delete }; - request_execute_f fun = execute_map[request->type]; assert(fun != NULL); - fun(request, port); + stat_collect(stat_base, request->type, 1); + try { + fun(request, port); + port_eof(port); + } catch (Exception *e) { + txn_rollback_stmt(); + throw; + } } void diff --git a/src/box/request.h b/src/box/request.h index eed53bcb20..b63f3dd74d 100644 --- a/src/box/request.h +++ b/src/box/request.h @@ -33,7 +33,7 @@ struct txn; struct port; - +extern int stat_base; struct request { @@ -66,7 +66,7 @@ void request_create(struct request *request, uint32_t code); void -request_execute(struct request *request, struct port *port); +process_rw(struct request *request, struct port *port); void request_decode(struct request *request, const char *data, uint32_t len); -- GitLab