Merge pull request #22922 from taosdata/fix/TD-26325

fix race crash and add log
This commit is contained in:
Haojun Liao 2023-09-15 17:49:22 +08:00 committed by GitHub
commit e20c8b39f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 6 deletions

View File

@ -1731,25 +1731,23 @@ int streamStateGetCfIdx(SStreamState* pState, const char* funcName) {
if (pState != NULL && idx != -1) { if (pState != NULL && idx != -1) {
SBackendCfWrapper* wrapper = pState->pTdbState->pBackendCfWrapper; SBackendCfWrapper* wrapper = pState->pTdbState->pBackendCfWrapper;
rocksdb_column_family_handle_t* cf = NULL; rocksdb_column_family_handle_t* cf = NULL;
taosThreadRwlockRdlock(&wrapper->rwLock); taosThreadRwlockWrlock(&wrapper->rwLock);
cf = wrapper->pHandle[idx]; cf = wrapper->pHandle[idx];
taosThreadRwlockUnlock(&wrapper->rwLock);
if (cf == NULL) { if (cf == NULL) {
char buf[128] = {0}; char buf[128] = {0};
GEN_COLUMN_FAMILY_NAME(buf, wrapper->idstr, ginitDict[idx].key); GEN_COLUMN_FAMILY_NAME(buf, wrapper->idstr, ginitDict[idx].key);
char* err = NULL; char* err = NULL;
taosThreadRwlockWrlock(&wrapper->rwLock);
cf = rocksdb_create_column_family(wrapper->rocksdb, wrapper->cfOpts[idx], buf, &err); cf = rocksdb_create_column_family(wrapper->rocksdb, wrapper->cfOpts[idx], buf, &err);
if (err != NULL) { if (err != NULL) {
idx = -1; idx = -1;
qError("failed to to open cf, %p %s_%s, reason:%s", pState, wrapper->idstr, funcName, err); qError("failed to open cf, %p %s_%s, reason:%s", pState, wrapper->idstr, funcName, err);
taosMemoryFree(err); taosMemoryFree(err);
} else { } else {
qDebug("succ to to open cf, %p %s_%s", pState, wrapper->idstr, funcName);
wrapper->pHandle[idx] = cf; wrapper->pHandle[idx] = cf;
} }
taosThreadRwlockUnlock(&wrapper->rwLock);
} }
taosThreadRwlockUnlock(&wrapper->rwLock);
} }
return idx; return idx;