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)