[ 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)