Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5189D17EB5 for ; Wed, 14 Jan 2015 21:24:33 +0000 (UTC) Received: (qmail 39348 invoked by uid 500); 14 Jan 2015 21:24:35 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 39298 invoked by uid 500); 14 Jan 2015 21:24:35 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 39286 invoked by uid 99); 14 Jan 2015 21:24:34 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 14 Jan 2015 21:24:34 +0000 Date: Wed, 14 Jan 2015 21:24:34 +0000 (UTC) From: "Andrew Purtell (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-12856) Revisit table coprocessor classloader caching MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-12856?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14277713#comment-14277713 ] Andrew Purtell commented on HBASE-12856: ---------------------------------------- Lars and I discussed this issue some more. Having a weak reference to the classloader in the map is fine, the values will point to CoprocessorClassLoader instances that should never be GCed because we don't unload coprocessor classes. The CoprocessorClassLoader instances will be strongly referenced by every java.lang.Class they instantiated, indefinitely. Even then, we really don't want the "classLoadersCache" map in CoprocessorClassLoader to be a cache, we want it to be an index. If/when we implement coprocessor class unloading we wouldn't want a strong reference in this map retaining the classloader. The comments around this field and even its name could be reconsidered, 'cache' -> 'index'. It seems fine to leave this as is. However I will leave this issue open for a bit in case we are mistaken in some way or there is additional comment or suggestion. > Revisit table coprocessor classloader caching > --------------------------------------------- > > Key: HBASE-12856 > URL: https://issues.apache.org/jira/browse/HBASE-12856 > Project: HBase > Issue Type: Improvement > Reporter: Andrew Purtell > Assignee: Andrew Purtell > Fix For: 2.0.0, 0.98.10, 1.1.0 > > > For table coprocessors, we create coprocessor classloaders and cache them keyed on the path to the coprocessor jar. However, we cache weak refs so it's quite possible if the refs are not being retained due to heap pressure we might create a new classloader on the next region open, i.e. after a split or relocation. If under very heavy write load, perhaps ingest with all edits skipping the WAL for example, we'd be both generating a ton of garbage and rapidly splitting at the same time. > We should revisit the notion of keeping only weak refs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)