[
https://issues.apache.org/jira/browse/CALCITE-1808?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Julian Hyde resolved CALCITE-1808.
----------------------------------
Resolution: Fixed
Fixed in
[3763abfa|http://git-wip-us.apache.org/repos/asf/calcite/commit/3763abfa].
> 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)