You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Jesus Camacho Rodriguez (JIRA)" <ji...@apache.org> on 2017/05/26 10:47:04 UTC
[jira] [Created] (CALCITE-1808) JaninoRelMetadataProvider loading
cache might cause OOM error
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)