Jesus Camacho Rodriguez created CALCITE-1808:
------------------------------------------------
Summary: JaninoRelMetadataProvider loading cache might cause OOM
error
Key: CALCITE-1808
URL: https://issues.apache.org/jira/browse/CALCITE-1808
Project: Calcite
Issue Type: Bug
Components: core
Reporter: Jagruti Varia
Assignee: Julian Hyde
JaninoRelMetadataProvider has a static handler cache with size increasing over
time for long running HS2, ending up causing OOM errors.
{code:java}
/** Cache of pre-generated handlers by provider and kind of metadata.
* For the cache to be effective, providers should implement identity
* correctly. */
private static final LoadingCache<Key, MetadataHandler> HANDLERS =
CacheBuilder.newBuilder().build(
new CacheLoader<Key, MetadataHandler>() {
public MetadataHandler load(@Nonnull Key key) {
//noinspection unchecked
return load3(key.def, key.provider.handlers(key.def),
key.relClasses);
}
});
...
/** Key for the cache. */
private static class Key {
public final MetadataDef def;
public final RelMetadataProvider provider;
public final ImmutableList<Class<? extends RelNode>> relClasses;
...
{code}
The lifecycle for providers is per query and we have multiple providers
instantiated on the lifecycle of a query. The entries are retained in the cache
even when query planning has finished.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)