From 000399d5e83fcd52e841afd6568edd4aaf6fb5a5 Mon Sep 17 00:00:00 2001 From: QinZuoyan Date: Tue, 13 Nov 2018 18:03:21 +0800 Subject: [PATCH] logging: validate table name and print log for problem diagnosis (#20) --- .../infra/pegasus/rpc/async/TableHandler.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/xiaomi/infra/pegasus/rpc/async/TableHandler.java b/src/main/java/com/xiaomi/infra/pegasus/rpc/async/TableHandler.java index d4b06f2e..8aa67d77 100644 --- a/src/main/java/com/xiaomi/infra/pegasus/rpc/async/TableHandler.java +++ b/src/main/java/com/xiaomi/infra/pegasus/rpc/async/TableHandler.java @@ -15,6 +15,7 @@ import com.xiaomi.infra.pegasus.replication.query_cfg_response; import com.xiaomi.infra.pegasus.rpc.Table; import io.netty.util.concurrent.*; +import org.apache.commons.lang3.StringEscapeUtils; import org.slf4j.Logger; import java.util.ArrayList; @@ -47,7 +48,21 @@ final static class TableConfiguration { long lastQueryTime_; public TableHandler(ClusterManager mgr, String name, KeyHasher h) throws ReplicationException { - logger.debug("initialize table handler, table_name({})", name); + int i = 0; + for (; i < name.length(); i++) { + char c = name.charAt(i); + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') + || c == '_' || c == '.' || c == ':') + continue; + else + break; + } + if (name.length() > 0 && i == name.length()) { + logger.info("initialize table handler, table name is \"{}\"", StringEscapeUtils.escapeJava(name)); + } else { + logger.warn("initialize table handler, maybe invalid table name \"{}\"", StringEscapeUtils.escapeJava(name)); + } + query_cfg_request req = new query_cfg_request(name, new ArrayList()); query_cfg_operator op = new query_cfg_operator(new gpid(-1, -1), req);