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

Xiang Li commented on HBASE-17997:
----------------------------------

Hi [~ted_yu], I uploaded patch 001 for master to address the error introduced 
by patch 000.

Patch 001 has the same idea as HBASE-15199: when it is in dev environment, move 
jruby-complete out of the normal process of classpath handling and deal with it 
separately. The patch 001 creates a new file named as 
"cached_classpath_jruby.txt" which contains jruby-complete jar only. When 
processing classpath in dev environment, it reads the file and adds the jar 
into classpath only when jruby is needed (currently hbase shell or hbase 
org.jruby.Main xxx).

With the patch 001, the logic to handle jruby is:
* For the commands which need jruby
** When JRUBY_HOME is specified explicitly
          CLASSPATH and HBASE_OPTS are updated according to JRUBY_HOME 
specified.
          It acts the same whenever it is in dev environment or not.
** When JRUBY_HOME is not specified explicitly
*** In dev environment, read cached_classpath_jruby.txt and add the jars in the 
file into classpath
*** In non dev environment, add all jars under $HBASE_HOME/lib/ruby to the 
classpath
* For other commands, do nothing

> jruby-complete-1.6.8.jar is in cached_classpath.txt
> ---------------------------------------------------
>
>                 Key: HBASE-17997
>                 URL: https://issues.apache.org/jira/browse/HBASE-17997
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Ted Yu
>            Assignee: Xiang Li
>         Attachments: HBASE-17997.master.000.patch, 
> HBASE-17997.master.001.patch
>
>
> HBASE-15199 moves jruby-complete-1.6.8.jar to lib/ruby directory.
> However, jruby-complete-1.6.8.jar still appears in cached_classpath.txt
> This means that user would see exception similar to the following when 
> starting hbase in  standalone mode with s3a as rootdir :
> {code}
> 2017-05-04 16:41:32,854 WARN  
> [RpcServer.FifoWFPBQ.priority.handler=18,queue=0,port=38659] 
> internal.S3MetadataResponseHandler: Unable to parse last modified date: Thu, 
> 04 May 2017 16:27:09 GMT
> java.lang.IllegalStateException: Joda-time 2.2 or later version is required, 
> but found version: null
>   at com.amazonaws.util.DateUtils.handleException(DateUtils.java:149)
>   at com.amazonaws.util.DateUtils.parseRFC822Date(DateUtils.java:195)
>   at 
> com.amazonaws.services.s3.internal.ServiceUtils.parseRfc822Date(ServiceUtils.java:78)
>   at 
> com.amazonaws.services.s3.internal.AbstractS3ResponseHandler.populateObjectMetadata(AbstractS3ResponseHandler.java:115)
>   at 
> com.amazonaws.services.s3.internal.S3ObjectResponseHandler.handle(S3ObjectResponseHandler.java:52)
>   at 
> com.amazonaws.services.s3.internal.S3ObjectResponseHandler.handle(S3ObjectResponseHandler.java:30)
>   at 
> com.amazonaws.http.AmazonHttpClient.handleResponse(AmazonHttpClient.java:1072)
>   at 
> com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:746)
>   at 
> com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489)
>   at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310)
>   at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3785)
>   at 
> com.amazonaws.services.s3.AmazonS3Client.getObject(AmazonS3Client.java:1191)
>   at org.apache.hadoop.fs.s3a.S3AInputStream.reopen(S3AInputStream.java:148)
>   at org.apache.hadoop.fs.s3a.S3AInputStream.lazySeek(S3AInputStream.java:281)
>   at org.apache.hadoop.fs.s3a.S3AInputStream.read(S3AInputStream.java:364)
>   at org.apache.hadoop.fs.FSInputStream.read(FSInputStream.java:75)
>   at org.apache.hadoop.fs.FSDataInputStream.read(FSDataInputStream.java:92)
>   at 
> org.apache.hadoop.hbase.io.hfile.HFileBlock.positionalReadWithExtra(HFileBlock.java:722)
>   at 
> org.apache.hadoop.hbase.io.hfile.HFileBlock$AbstractFSReader.readAtOffset(HFileBlock.java:1420)
>   at 
> org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockDataInternal(HFileBlock.java:1677)
>   at 
> org.apache.hadoop.hbase.io.hfile.HFileBlock$FSReaderImpl.readBlockData(HFileBlock.java:1504)
>   at 
> org.apache.hadoop.hbase.io.hfile.HFileReaderV2.readBlock(HFileReaderV2.java:439)
>   at 
> org.apache.hadoop.hbase.io.hfile.HFileReaderV2$ScannerV2.seekTo(HFileReaderV2.java:904)
>   at 
> org.apache.hadoop.hbase.regionserver.StoreFileScanner.seekAtOrAfter(StoreFileScanner.java:267)
>   at 
> org.apache.hadoop.hbase.regionserver.StoreFileScanner.seek(StoreFileScanner.java:169)
>   at 
> org.apache.hadoop.hbase.regionserver.StoreScanner.seekScanners(StoreScanner.java:363)
>   at 
> org.apache.hadoop.hbase.regionserver.StoreScanner.<init>(StoreScanner.java:217)
>   at 
> org.apache.hadoop.hbase.regionserver.HStore.createScanner(HStore.java:2132)
>   at org.apache.hadoop.hbase.regionserver.HStore.getScanner(HStore.java:2122)
>   at 
> org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.<init>(HRegion.java:5687)
>   at 
> org.apache.hadoop.hbase.regionserver.HRegion.instantiateRegionScanner(HRegion.java:2679)
>   at 
> org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:2665)
>   at 
> org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:2647)
>   at org.apache.hadoop.hbase.regionserver.HRegion.get(HRegion.java:6906)
>   at org.apache.hadoop.hbase.regionserver.HRegion.get(HRegion.java:6885)
>   at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.get(RSRpcServices.java:2007)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to