From cd95c32a86dfc47cd23dd1e5c2bc198c20f6b62b Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Thu, 24 Oct 2019 13:29:08 +0800 Subject: [PATCH] fix bug #645 --- src/system/inc/mgmt.h | 1 - src/system/src/mgmtMeter.c | 5 +++++ src/system/src/mgmtShell.c | 11 +++++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) mode change 100644 => 100755 src/system/src/mgmtMeter.c diff --git a/src/system/inc/mgmt.h b/src/system/inc/mgmt.h index 7d0a2fd03a..995ba2ecb5 100644 --- a/src/system/inc/mgmt.h +++ b/src/system/inc/mgmt.h @@ -228,7 +228,6 @@ typedef struct _connObj { SDbObj * pDb; SUserObj * pUser; char user[TSDB_USER_LEN]; - char db[TSDB_METER_ID_LEN]; uint64_t stime; // login time char superAuth : 1; // super user flag char writeAuth : 1; // write flag diff --git a/src/system/src/mgmtMeter.c b/src/system/src/mgmtMeter.c old mode 100644 new mode 100755 index ffc267f559..9656ca66a6 --- a/src/system/src/mgmtMeter.c +++ b/src/system/src/mgmtMeter.c @@ -655,6 +655,9 @@ int mgmtCreateMeter(SDbObj *pDb, SCreateTableMsg *pCreate) { pMeter->gid.vgId = pVgroup->vgId; pMeter->uid = (((uint64_t)pMeter->gid.vgId) << 40) + ((((uint64_t)pMeter->gid.sid) & ((1ul << 24) - 1ul)) << 16) + ((uint64_t)sdbVersion & ((1ul << 16) - 1ul)); + + mTrace("meter:%s, create meter in vgroup, vgId:%d, sid:%d, vnode:%d, uid:%d", + pMeter->meterId, pVgroup->vgId, sid, pVgroup->vnodeGid[0].vnode, pMeter->uid); } else { pMeter->uid = (((uint64_t)pMeter->createdTime) << 16) + ((uint64_t)sdbVersion & ((1ul << 16) - 1ul)); } @@ -665,6 +668,8 @@ int mgmtCreateMeter(SDbObj *pDb, SCreateTableMsg *pCreate) { // send create message to the selected vnode servers if (pCreate->numOfTags == 0) { + mTrace("meter:%s, send msg to dnode, vgId:%d, sid:%d, vnode:%d, dbname:%s", + pMeter->meterId, pMeter->gid.vgId, pMeter->gid.sid, pVgroup->vnodeGid[0].vnode, pDb->name); mgmtSendCreateMsgToVnode(pMeter, pVgroup->vnodeGid[0].vnode); } diff --git a/src/system/src/mgmtShell.c b/src/system/src/mgmtShell.c index 6a3b59288d..19f706f4a8 100644 --- a/src/system/src/mgmtShell.c +++ b/src/system/src/mgmtShell.c @@ -177,6 +177,11 @@ int mgmtProcessMeterMetaMsg(char *pMsg, int msgLen, SConnObj *pConn) { memcpy(pCreateMsg->schema, pInfo->tags, sizeof(STagData)); strcpy(pCreateMsg->meterId, pInfo->meterId); + SDbObj* pMeterDb = mgmtGetDbByMeterId(pCreateMsg->meterId); + mTrace("meter:%s, pConnDb:%p, pConnDbName:%s, pMeterDb:%p, pMeterDbName:%s", + pCreateMsg->meterId, pConn->pDb, pConn->pDb->name, pMeterDb, pMeterDb->name); + assert(pConn->pDb == pMeterDb); + int32_t code = mgmtCreateMeter(pConn->pDb, pCreateMsg); char stableName[TSDB_METER_ID_LEN] = {0}; @@ -877,7 +882,6 @@ int mgmtProcessConnectMsg(char *pMsg, int msgLen, SConnObj *pConn) { code = TSDB_CODE_INVALID_DB; goto _rsp; } - strcpy(pConn->db, dbName); } if (pConn->pAcct) { @@ -962,7 +966,10 @@ void *mgmtProcessMsgFromShell(char *msg, void *ahandle, void *thandle) { } if (pConn->pAcct) { - if (strcmp(pConn->db, pHead->db) != 0) pConn->pDb = mgmtGetDb(pHead->db); + if (pConn->pDb == NULL || + strncmp(pConn->pDb->name, pHead->db, tListLen(pConn->pDb->name)) != 0) { + pConn->pDb = mgmtGetDb(pHead->db); + } char *cont = (char *)pMsg->content + sizeof(SMgmtHead); int contLen = pMsg->msgLen - sizeof(SIntMsg) - sizeof(SMgmtHead); -- GitLab