fix: change bugs related to expired udf

This commit is contained in:
slzhou 2023-04-06 13:13:54 +08:00
parent adec92b0b2
commit 8ab1aa4ac9
1 changed files with 15 additions and 14 deletions

View File

@ -589,18 +589,19 @@ SUdf *udfdGetOrCreateUdf(const char *udfName) {
uv_mutex_lock(&global.udfsMutex); uv_mutex_lock(&global.udfsMutex);
SUdf **pUdfHash = taosHashGet(global.udfsHash, udfName, strlen(udfName)); SUdf **pUdfHash = taosHashGet(global.udfsHash, udfName, strlen(udfName));
int64_t currTime = taosGetTimestampSec(); int64_t currTime = taosGetTimestampSec();
bool expired = currTime - (*pUdfHash)->lastFetchTime > 10 * 1000; bool expired = false;
if (pUdfHash && !expired) { if (pUdfHash) {
expired = currTime - (*pUdfHash)->lastFetchTime > 10 * 1000;
if (!expired) {
++(*pUdfHash)->refCount; ++(*pUdfHash)->refCount;
SUdf *udf = *pUdfHash; SUdf *udf = *pUdfHash;
uv_mutex_unlock(&global.udfsMutex); uv_mutex_unlock(&global.udfsMutex);
return udf; return udf;
} } else {
if (pUdfHash && expired) {
(*pUdfHash)->expired = true; (*pUdfHash)->expired = true;
taosHashRemove(global.udfsHash, udfName, strlen(udfName)); taosHashRemove(global.udfsHash, udfName, strlen(udfName));
} }
}
SUdf *udf = udfdNewUdf(udfName); SUdf *udf = udfdNewUdf(udfName);
SUdf **pUdf = &udf; SUdf **pUdf = &udf;