add rpc update interface
This commit is contained in:
parent
e539eebaa2
commit
6f6c517342
|
@ -164,6 +164,12 @@ static SIpWhiteList *createDefaultIpWhiteList() {
|
||||||
}
|
}
|
||||||
return pWhiteList;
|
return pWhiteList;
|
||||||
}
|
}
|
||||||
|
static SIpWhiteList *cloneIpWhiteList(SIpWhiteList *pIpWhiteList) {
|
||||||
|
int32_t sz = sizeof(SIpWhiteList) + pIpWhiteList->num * sizeof(SIpV4Range);
|
||||||
|
SIpWhiteList *pNew = taosMemoryCalloc(1, sz);
|
||||||
|
memcpy(pNew, pIpWhiteList, sz);
|
||||||
|
return pNew;
|
||||||
|
}
|
||||||
static bool isRangeInIpWhiteList(SIpWhiteList *pList, SIpV4Range *tgt) {
|
static bool isRangeInIpWhiteList(SIpWhiteList *pList, SIpV4Range *tgt) {
|
||||||
for (int i = 0; i < pList->num; i++) {
|
for (int i = 0; i < pList->num; i++) {
|
||||||
SIpV4Range *el = &pList->pIpRange[i];
|
SIpV4Range *el = &pList->pIpRange[i];
|
||||||
|
@ -184,13 +190,12 @@ static int32_t mndCreateDefaultUser(SMnode *pMnode, char *acct, char *user, char
|
||||||
userObj.sysInfo = 1;
|
userObj.sysInfo = 1;
|
||||||
userObj.enable = 1;
|
userObj.enable = 1;
|
||||||
userObj.pIpWhiteList = createDefaultIpWhiteList();
|
userObj.pIpWhiteList = createDefaultIpWhiteList();
|
||||||
|
|
||||||
if (strcmp(user, TSDB_DEFAULT_USER) == 0) {
|
if (strcmp(user, TSDB_DEFAULT_USER) == 0) {
|
||||||
userObj.superUser = 1;
|
userObj.superUser = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SSdbRaw *pRaw = mndUserActionEncode(&userObj);
|
SSdbRaw *pRaw = mndUserActionEncode(&userObj);
|
||||||
if (pRaw == NULL) return -1;
|
if (pRaw == NULL) goto _ERROR;
|
||||||
(void)sdbSetRawStatus(pRaw, SDB_STATUS_READY);
|
(void)sdbSetRawStatus(pRaw, SDB_STATUS_READY);
|
||||||
|
|
||||||
mInfo("user:%s, will be created when deploying, raw:%p", userObj.user, pRaw);
|
mInfo("user:%s, will be created when deploying, raw:%p", userObj.user, pRaw);
|
||||||
|
@ -199,25 +204,29 @@ static int32_t mndCreateDefaultUser(SMnode *pMnode, char *acct, char *user, char
|
||||||
if (pTrans == NULL) {
|
if (pTrans == NULL) {
|
||||||
sdbFreeRaw(pRaw);
|
sdbFreeRaw(pRaw);
|
||||||
mError("user:%s, failed to create since %s", userObj.user, terrstr());
|
mError("user:%s, failed to create since %s", userObj.user, terrstr());
|
||||||
return -1;
|
goto _ERROR;
|
||||||
}
|
}
|
||||||
mInfo("trans:%d, used to create user:%s", pTrans->id, userObj.user);
|
mInfo("trans:%d, used to create user:%s", pTrans->id, userObj.user);
|
||||||
|
|
||||||
if (mndTransAppendCommitlog(pTrans, pRaw) != 0) {
|
if (mndTransAppendCommitlog(pTrans, pRaw) != 0) {
|
||||||
mError("trans:%d, failed to commit redo log since %s", pTrans->id, terrstr());
|
mError("trans:%d, failed to commit redo log since %s", pTrans->id, terrstr());
|
||||||
mndTransDrop(pTrans);
|
mndTransDrop(pTrans);
|
||||||
return -1;
|
goto _ERROR;
|
||||||
}
|
}
|
||||||
(void)sdbSetRawStatus(pRaw, SDB_STATUS_READY);
|
(void)sdbSetRawStatus(pRaw, SDB_STATUS_READY);
|
||||||
|
|
||||||
if (mndTransPrepare(pMnode, pTrans) != 0) {
|
if (mndTransPrepare(pMnode, pTrans) != 0) {
|
||||||
mError("trans:%d, failed to prepare since %s", pTrans->id, terrstr());
|
mError("trans:%d, failed to prepare since %s", pTrans->id, terrstr());
|
||||||
mndTransDrop(pTrans);
|
mndTransDrop(pTrans);
|
||||||
return -1;
|
goto _ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
mndTransDrop(pTrans);
|
mndTransDrop(pTrans);
|
||||||
|
taosMemoryFree(userObj.pIpWhiteList);
|
||||||
return 0;
|
return 0;
|
||||||
|
_ERROR:
|
||||||
|
taosMemoryFree(userObj.pIpWhiteList);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mndCreateDefaultUsers(SMnode *pMnode) {
|
static int32_t mndCreateDefaultUsers(SMnode *pMnode) {
|
||||||
|
@ -523,11 +532,12 @@ static SSdbRow *mndUserActionDecode(SSdbRaw *pRaw) {
|
||||||
int32_t len = 0;
|
int32_t len = 0;
|
||||||
SDB_GET_INT32(pRaw, dataPos, &len, _OVER);
|
SDB_GET_INT32(pRaw, dataPos, &len, _OVER);
|
||||||
|
|
||||||
char *buf = buf = taosMemoryMalloc(len);
|
char *buf = taosMemoryMalloc(len);
|
||||||
if (buf == NULL) goto _OVER;
|
if (buf == NULL) goto _OVER;
|
||||||
SDB_GET_BINARY(pRaw, dataPos, buf, len, _OVER);
|
SDB_GET_BINARY(pRaw, dataPos, buf, len, _OVER);
|
||||||
|
|
||||||
pUser->pIpWhiteList = createIpWhiteList(buf, len);
|
pUser->pIpWhiteList = createIpWhiteList(buf, len);
|
||||||
|
taosMemoryFree(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pUser->pIpWhiteList == NULL) {
|
if (pUser->pIpWhiteList == NULL) {
|
||||||
|
@ -550,7 +560,6 @@ _OVER:
|
||||||
taosHashCleanup(pUser->writeTbs);
|
taosHashCleanup(pUser->writeTbs);
|
||||||
taosHashCleanup(pUser->useDbs);
|
taosHashCleanup(pUser->useDbs);
|
||||||
taosMemoryFree(pUser->pIpWhiteList);
|
taosMemoryFree(pUser->pIpWhiteList);
|
||||||
// taosMemoryFree(pUser->pWhiteIpList);
|
|
||||||
}
|
}
|
||||||
taosMemoryFreeClear(pRow);
|
taosMemoryFreeClear(pRow);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -638,6 +647,8 @@ int32_t mndUserDupObj(SUserObj *pUser, SUserObj *pNew) {
|
||||||
pNew->writeTbs = mndDupTableHash(pUser->writeTbs);
|
pNew->writeTbs = mndDupTableHash(pUser->writeTbs);
|
||||||
pNew->topics = mndDupTopicHash(pUser->topics);
|
pNew->topics = mndDupTopicHash(pUser->topics);
|
||||||
pNew->useDbs = mndDupUseDbHash(pUser->useDbs);
|
pNew->useDbs = mndDupUseDbHash(pUser->useDbs);
|
||||||
|
pNew->pIpWhiteList = cloneIpWhiteList(pUser->pIpWhiteList);
|
||||||
|
|
||||||
taosRUnLockLatch(&pUser->lock);
|
taosRUnLockLatch(&pUser->lock);
|
||||||
|
|
||||||
if (pNew->readDbs == NULL || pNew->writeDbs == NULL || pNew->topics == NULL) {
|
if (pNew->readDbs == NULL || pNew->writeDbs == NULL || pNew->topics == NULL) {
|
||||||
|
@ -653,7 +664,7 @@ void mndUserFreeObj(SUserObj *pUser) {
|
||||||
taosHashCleanup(pUser->readTbs);
|
taosHashCleanup(pUser->readTbs);
|
||||||
taosHashCleanup(pUser->writeTbs);
|
taosHashCleanup(pUser->writeTbs);
|
||||||
taosHashCleanup(pUser->useDbs);
|
taosHashCleanup(pUser->useDbs);
|
||||||
// taosMemoryFree(pUser->pWhiteIpList);
|
taosMemoryFree(pUser->pIpWhiteList);
|
||||||
pUser->readDbs = NULL;
|
pUser->readDbs = NULL;
|
||||||
pUser->writeDbs = NULL;
|
pUser->writeDbs = NULL;
|
||||||
pUser->topics = NULL;
|
pUser->topics = NULL;
|
||||||
|
|
Loading…
Reference in New Issue