From b43769f5b4f3b78cd161be3cb285b9cb0a29ab2d Mon Sep 17 00:00:00 2001 From: "zhaozhao.zz" Date: Wed, 16 Aug 2023 15:42:15 +0800 Subject: [PATCH] record user name in slowlog --- src/slowlog.c | 5 ++++- src/slowlog.h | 1 + tests/unit/slowlog.tcl | 14 +++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/slowlog.c b/src/slowlog.c index 4c31917bb..665b9b34f 100644 --- a/src/slowlog.c +++ b/src/slowlog.c @@ -90,6 +90,7 @@ slowlogEntry *slowlogCreateEntry(client *c, robj **argv, int argc, long long dur se->id = server.slowlog_entry_id++; se->peerid = sdsnew(getClientPeerId(c)); se->cname = c->name ? sdsnew(c->name->ptr) : sdsempty(); + se->uname = c->user ? sdsdup(c->user->name) : sdsnew("(superuser)"); return se; } @@ -106,6 +107,7 @@ void slowlogFreeEntry(void *septr) { zfree(se->argv); sdsfree(se->peerid); sdsfree(se->cname); + sdsfree(se->uname); zfree(se); } @@ -190,7 +192,7 @@ NULL ln = listNext(&li); se = ln->value; - addReplyArrayLen(c,6); + addReplyArrayLen(c,7); addReplyLongLong(c,se->id); addReplyLongLong(c,se->time); addReplyLongLong(c,se->duration); @@ -199,6 +201,7 @@ NULL addReplyBulk(c,se->argv[j]); addReplyBulkCBuffer(c,se->peerid,sdslen(se->peerid)); addReplyBulkCBuffer(c,se->cname,sdslen(se->cname)); + addReplyBulkCBuffer(c,se->uname,sdslen(se->uname)); } } else { addReplySubcommandSyntaxError(c); diff --git a/src/slowlog.h b/src/slowlog.h index 6a00d1202..15da5e2f3 100644 --- a/src/slowlog.h +++ b/src/slowlog.h @@ -42,6 +42,7 @@ typedef struct slowlogEntry { time_t time; /* Unix time at which the query was executed. */ sds cname; /* Client name. */ sds peerid; /* Client network address. */ + sds uname; /* User name. */ } slowlogEntry; /* Exported API */ diff --git a/tests/unit/slowlog.tcl b/tests/unit/slowlog.tcl index 3c547b924..8abf569e7 100644 --- a/tests/unit/slowlog.tcl +++ b/tests/unit/slowlog.tcl @@ -40,13 +40,14 @@ start_server {tags {"slowlog"} overrides {slowlog-log-slower-than 1000000}} { r client setname foobar r debug sleep 0.2 set e [lindex [r slowlog get] 0] - assert_equal [llength $e] 6 + assert_equal [llength $e] 7 if {!$::external} { assert_equal [lindex $e 0] 107 } assert_equal [expr {[lindex $e 2] > 100000}] 1 assert_equal [lindex $e 3] {debug sleep 0.2} assert_equal {foobar} [lindex $e 5] + assert_equal {default} [lindex $e 6] } {} {needs:debug} test {SLOWLOG - Certain commands are omitted that contain sensitive information} { @@ -170,6 +171,17 @@ start_server {tags {"slowlog"} overrides {slowlog-log-slower-than 1000000}} { assert_equal {lastentry_client} [lindex $e 5] } {} {needs:debug} + test {SLOWLOG - can log new user name} { + r config set slowlog-max-len 1 + r ACL setuser slowlog_user on nopass +debug + r auth slowlog_user x + r debug sleep 0.2 + r auth default x + assert {[llength [r slowlog get]] == 1} + set e [lindex [r slowlog get] 0] + assert_equal {slowlog_user} [lindex $e 6] + } {} {needs:debug} + test {SLOWLOG - can be disabled} { r config set slowlog-max-len 1 r config set slowlog-log-slower-than 1