[ 
https://issues.apache.org/jira/browse/HBASE-14548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15362486#comment-15362486
 ] 

li xiang commented on HBASE-14548:
----------------------------------

Hi Jerry, thanks for the review.

1. I tested FileSytem.isDirectory() by a separate program, against the path 
with wildcard. It works as expected for the following inputs, for example, 
"/user/hbase/*.jar" or "/user/hbase/coprocessor.*", isDirectory() returns false.
The condition I found which will fail is that suppose the jar file is put as 
/user/hbase/coprocessor.jar and "/user/h*" is used as the input. As 
isDirectory() returns false, the code does not append "*.jar". 
FileSystem.globStatus() returns all directories and files starting with "h" 
under /user, such as hbase, hive...(if there are). But JarFile followed can not 
handle a directory.

So I add the logic : For each item globStatus() returned, process file only and 
skip for directory. And if all items are directories, throw 
FileNotFoundException: No file found matching hdfs://xxxx/xxx*

I uploaded v2 for branch 1.2.0 and master to include those changes.

2. Regarding the enhancement on ClassLoaderTestHelper, I opened a new JIRA as 
https://issues.apache.org/jira/browse/HBASE-16173

> Expand how table coprocessor jar and dependency path can be specified
> ---------------------------------------------------------------------
>
>                 Key: HBASE-14548
>                 URL: https://issues.apache.org/jira/browse/HBASE-14548
>             Project: HBase
>          Issue Type: Improvement
>          Components: Coprocessors
>    Affects Versions: 1.2.0
>            Reporter: Jerry He
>            Assignee: li xiang
>             Fix For: 2.0.0
>
>         Attachments: HBASE-14548-1.2.0-v0.patch, HBASE-14548-1.2.0-v1.patch, 
> HBASE-14548-1.2.0-v2.patch, HBASE-14548-master-v1.patch
>
>
> Currently you can specify the location of the coprocessor jar in the table 
> coprocessor attribute.
> The problem is that it only allows you to specify one jar that implements the 
> coprocessor.  You will need to either bundle all the dependencies into this 
> jar, or you will need to copy the dependencies into HBase lib dir.
> The first option may not be ideal sometimes.  The second choice can be 
> troublesome too, particularly when the hbase region sever node and dirs are 
> dynamically added/created.
> There are a couple things we can expand here.  We can allow the coprocessor 
> attribute to specify a directory location, probably on hdfs.
> We may even allow some wildcard in there.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to