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)

Reply via email to