You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@impala.apache.org by "Alexander Behm (JIRA)" <ji...@apache.org> on 2017/06/13 06:27:00 UTC

[jira] [Resolved] (IMPALA-3568) Possible Impala hangs and leak current catalog cache when state store sends full update

     [ https://issues.apache.org/jira/browse/IMPALA-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexander Behm resolved IMPALA-3568.
------------------------------------
    Resolution: Duplicate
      Assignee: Henry Robinson  (was: Huaisi Xu)

Already fixed in IMPALA-5056

> Possible Impala hangs and leak current catalog cache when state store sends full update
> ---------------------------------------------------------------------------------------
>
>                 Key: IMPALA-3568
>                 URL: https://issues.apache.org/jira/browse/IMPALA-3568
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Catalog
>    Affects Versions: Impala 2.5.0
>            Reporter: Huaisi Xu
>            Assignee: Henry Robinson
>              Labels: usability
>
> In Frontend.java:
> {code:java}
>   public TUpdateCatalogCacheResponse updateCatalogCache(
>       TUpdateCatalogCacheRequest req) throws CatalogException {
>     ImpaladCatalog catalog = impaladCatalog_;
>     // If this is not a delta, this update should replace the current
>     // Catalog contents so create a new catalog and populate it.
>     if (!req.is_delta) catalog = new ImpaladCatalog();
>     TUpdateCatalogCacheResponse response = catalog.updateCatalog(req);
>     if (!req.is_delta) {
>       // This was not a delta update. Now that the catalog has been updated,
>       // replace the references to impaladCatalog_/authzChecker_ ensure
>       // clients continue don't see the catalog disappear.
>       impaladCatalog_ = catalog;
>       authzChecker_.set(new AuthorizationChecker(authzConfig_,
>           impaladCatalog_.getAuthPolicy()));
>     }
>     return response;
>   }
> {code}
> We create a new catalog instance whenever is_delta=false, which means statestore sends full update. This can happen for various reason, i.e. frontend oom processing update, catalogd restarts, etc.
> After creating a new catalog instance, previous instance shared with Analyzer will become "un-updatable". In some cases, i.e. a referenced table is incomplete, Analyzer will try to load that table with 
> {code:java}
> boolean requestTblLoadAndWait(Set<TableName> requestedTbls, long timeoutMs)
> {code}
> but frontend.java sees a different instance and it loads the complete version into this instance and tells Analyzer it is ready. But Analyzer cannot find it because it has a different catalog instance so it request load that table again.
> The result is a hang.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)