-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
storage did not release memory #3601
Comments
|
I'm not sure if |
It's stateful. Expression will store the evaluate result to get performance improvement. |
In addition, if the schema is updated and reloaded during the use of the default value, there will be a concurrency safety problem. The memory pointed to by |
So, clone is needed. Multi thread may be evaluate expression at same time |
Describe the bug (required)
All of the
Expression
are allocated inObjectPool
. And, when creating a tag/edge who contain a prop with adefault value
, thedefault value
is stored as anExpressoin
in Schema.In graphd, the
ObjectPool
is created in every query, and released after query. But, inMetaClient
, the pool is created when load schema, and released when reload schema if there is any update about schema. So, if schema is never never updated, the pool will never be released.When writing any data who has a
default value
and ngql not fill it, storaged will computedefault value
. But, theExpression
aboutdefault value
will be clone and allocated inMetaClient
's pool. This causes the pool to take up more and more memory, and it will never be released unless the schema is changed.The text was updated successfully, but these errors were encountered: