[ https://issues.apache.org/jira/browse/CALCITE-1808?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16275301#comment-16275301 ]
Julian Hyde commented on CALCITE-1808: -------------------------------------- I forgot to merge this for 1.15 RC0; adding for 1.15 RC1. Will commit to master shortly. > 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 > Fix For: 1.15.0 > > Attachments: calcite-retained-strong-refs.png > > > 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.4.14#64029)