You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by 15810705424 <15...@163.com> on 2015/02/02 08:13:58 UTC
the Exception of "VisibilityLabelsCache not yet instantiated"
happen when I set the class "ExpAsStringVisibilityLabelServiceImpl" as
Implement of "VisibilityLabelService".
Hi, all:
Not long ago, I wanted to test Cell-Level ACLs by using tags and use the class "ExpAsStringVisibilityLabelServiceImpl" instead of the default class "DefaultVisibilityLabelServiceImpl". set as fllows in hbase-site.xml. My HBase version is 0.99.2.
But when I restarted my cluster, the exception happened:
2015-01-29 00:32:50,455 ERROR [RS_OPEN_META-asiaB:60030-0] coprocessor.CoprocessorHost: The coprocessor org.apache.hadoop.hbase.security.visibility.VisibilityController threw java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
at org.apache.hadoop.hbase.security.visibility.VisibilityUtils.getScanLabelGenerators(VisibilityUtils.java:200)
at org.apache.hadoop.hbase.security.visibility.ExpAsStringVisibilityLabelServiceImpl.init(ExpAsStringVisibilityLabelServiceImpl.java:335)
at org.apache.hadoop.hbase.security.visibility.VisibilityController.initVisibilityLabelService(VisibilityController.java:260)
at org.apache.hadoop.hbase.security.visibility.VisibilityController.postOpen(VisibilityController.java:246)
at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$2.call(RegionCoprocessorHost.java:346)
at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1575)
at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1650)
at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1607)
at org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.postOpen(RegionCoprocessorHost.java:342)
at org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:797)
at org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:725)
at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4797)
at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4768)
at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4739)
at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4695)
at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4646)
at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:356)
at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:126)
at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:129)
... 22 more
Caused by: java.lang.IllegalStateException: VisibilityLabelsCache not yet instantiated
at org.apache.hadoop.hbase.security.visibility.VisibilityLabelsCache.get(VisibilityLabelsCache.java:106)
at org.apache.hadoop.hbase.security.visibility.FeedUserAuthScanLabelGenerator.<init>(FeedUserAuthScanLabelGenerator.java:47)
... 27 more
then all regionservers exit as the exception.
so I start to check code to find the cause:
At first , I found the place where the exception of "java.lang.IllegalStateException: VisibilityLabelsCache not yet instantiated" exist.
by this, It turn out to be that the instance of "VisibilityLabelsCache" had not yet instantiated when I used it .
Secondly, I continue to find the serial called process:
1: class: ExpAsStringVisibilityLabelServiceImpl.java method: init() .
public void init(RegionCoprocessorEnvironment e) throws IOException {
this.scanLabelGenerators = VisibilityUtils.getScanLabelGenerators(this.conf);
......
}
}
2: class: VisibilityUtils method: getScanLabelGenerators()
public static List<ScanLabelGenerator> getScanLabelGenerators(Configuration conf) {
String slgClassesCommaSeparated = conf.get(VISIBILITY_LABEL_GENERATOR_CLASS);
List<ScanLabelGenerator> slgs = new ArrayList<ScanLabelGenerator>();
if (StringUtils.isNotEmpty(slgClassesCommaSeparated)) {
.......
}
// If no SLG is specified in conf, by default we'll add two SLGs
if (slgs.isEmpty()) {
slgs.add(ReflectionUtils.newInstance(FeedUserAuthScanLabelGenerator.class, conf));
slgs.add(ReflectionUtils.newInstance(DefinedSetFilterScanLabelGenerator.class, conf));
}
}
3:class : FeedUserAuthScanLabelGenerator.java constructer method: FeedUserAuthScanLabelGenerator()
public FeedUserAuthScanLabelGenerator() {
this.labelsCache = VisibilityLabelsCache.get();
}
finally , I have found that the instance of "VisibilityLabelsCache" had never not been inited.
But the default set "DefaultVisibilityLabelServiceImpl" is ok, then I compare ExpAsStringVisibilityLabelServiceImpl with DefaultVisibilityLabelServiceImpl , I found the default class of "DefaultVisibilityLabelServiceImpl " called the method of "createAndGet" to instance:
public void init(RegionCoprocessorEnvironment e) throws IOException {
ZooKeeperWatcher zk = e.getRegionServerServices().getZooKeeper();
try {
labelsCache = VisibilityLabelsCache.createAndGet(zk, this.conf);
} catch (IOException ioe) {
LOG.error("Error creating VisibilityLabelsCache", ioe);
throw ioe;
}
this.scanLabelGenerators = VisibilityUtils.getScanLabelGenerators(this.conf);
.........
}
So I think the class of "ExpAsStringVisibilityLabelServiceImpl" also lack of these codes, then add the method "createAndGet" to the class "ExpAsStringVisibilityLabelServiceImpl" and rebuilt it, replace it to the my cluster, At last , My cluster is ok .
Next days, I fount this problem exists in 0.98.9. But I found the class ExpAsStringVisibilityLabelServiceImpl is always located in maven project: src/test, So I think it may be in test moment.
Is this a bug ? Any comments/suggestions for work around?
Thanks all.
Re: the Exception of "VisibilityLabelsCache not yet instantiated"
happen when I set the class "ExpAsStringVisibilityLabelServiceImpl" as
Implement of "VisibilityLabelService".
Posted by Jerry He <je...@gmail.com>.
Hi,
There is a SimpleScanLabelGenerator in the package. This is works with
ExpAsStringVisibilityLabelServiceImpl. And it is used in the unit test for
ExpAsStringVisibilityLabelServiceImpl.
Jerry
On Mon, Feb 2, 2015 at 10:54 AM, Jerry He <je...@gmail.com> wrote:
> Hi,
>
> All the default scan label generators uses the VisibilityLabelCache to get
> user labels somewhere. But the VisibilityLableCache implementation is for
> the DefaultVisibilityLabelServiceImpl mostly.
> Even if we add the method createAndGet() for the VisibilityLableCache to ExpAsStringVisibilityLabelServiceImpl,
> it will not work -- the cache is always empty because
> ExpAsStringVisibilityLabelServiceImpl does not use it.
> We probably need a test SLG like ExpAsStringVisibilitySLG for
> ExpAsStringVisibilityLabelServiceImpl?
>
> Jerry
>
> On Mon, Feb 2, 2015 at 9:20 AM, ramkrishna vasudevan <
> ramkrishna.s.vasudevan@gmail.com> wrote:
>
>> Hi
>>
>> Just for confirmation - you are trying to use cell level visibility tags -
>> correct? Cell Level ACLs are different from visibility tags.
>>
>> Coming to ExpAsStringVisibilityLabelServiceImpl - it is currently a test
>> implementation and not a real src implementation. The idea for this class
>> is to show how the visibility labels can be used without representing them
>> as ordinals - which is internally stored in Zookeeper.
>>
>> Please file a JIRA for the issue that you had specified related to the
>> init() API but the reason for this class to be in 'test' is that it is
>> purely an example implementation. Also what is your use case? Do you
>> want
>> the visibility labels to be stored as Strings rather than ordinals?
>>
>> The reason why you may need to store as strings rather than ordinals is
>> for
>> cases where you two have clusters with replication and you cannot have
>> the
>> same set of labels defined in both the clusters.
>>
>> BTW thanks a lot for reporting this bug/issue.
>>
>> Regards
>> Ram
>>
>> On Mon, Feb 2, 2015 at 10:21 PM, Ted Yu <yu...@gmail.com> wrote:
>>
>> > This looks like a bug.
>> >
>> > Mind filing an issue and attach your patch ?
>> >
>> > Thanks
>> >
>> > On Sun, Feb 1, 2015 at 11:13 PM, 15810705424 <15...@163.com>
>> wrote:
>> >
>> > > Hi, all:
>> > > Not long ago, I wanted to test Cell-Level ACLs by using tags and
>> use
>> > > the class "ExpAsStringVisibilityLabelServiceImpl" instead of the
>> default
>> > > class "DefaultVisibilityLabelServiceImpl". set as fllows in
>> > hbase-site.xml.
>> > > My HBase version is 0.99.2.
>> > > But when I restarted my cluster, the exception happened:
>> > >
>> > > 2015-01-29 00:32:50,455 ERROR [RS_OPEN_META-asiaB:60030-0]
>> > > coprocessor.CoprocessorHost: The coprocessor
>> > > org.apache.hadoop.hbase.security.visibility.VisibilityController threw
>> > > java.lang.RuntimeException:
>> java.lang.reflect.InvocationTargetException
>> > >
>> > > java.lang.RuntimeException:
>> java.lang.reflect.InvocationTargetException
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.security.visibility.VisibilityUtils.getScanLabelGenerators(VisibilityUtils.java:200)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.security.visibility.ExpAsStringVisibilityLabelServiceImpl.init(ExpAsStringVisibilityLabelServiceImpl.java:335)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.security.visibility.VisibilityController.initVisibilityLabelService(VisibilityController.java:260)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.security.visibility.VisibilityController.postOpen(VisibilityController.java:246)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$2.call(RegionCoprocessorHost.java:346)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1575)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1650)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1607)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.postOpen(RegionCoprocessorHost.java:342)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:797)
>> > >
>> > > at
>> > >
>> org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:725)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4797)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4768)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4739)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4695)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4646)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:356)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:126)
>> > >
>> > > at
>> > >
>> org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128)
>> > >
>> > > at
>> > >
>> >
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> > >
>> > > at
>> > >
>> >
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> > >
>> > > at java.lang.Thread.run(Thread.java:745)
>> > >
>> > > Caused by: java.lang.reflect.InvocationTargetException
>> > >
>> > > at
>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>> > > Method)
>> > >
>> > > at
>> > >
>> >
>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>> > >
>> > > at
>> > >
>> >
>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>> > >
>> > > at
>> > java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:129)
>> > >
>> > > ... 22 more
>> > >
>> > > Caused by: java.lang.IllegalStateException: VisibilityLabelsCache not
>> yet
>> > > instantiated
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.security.visibility.VisibilityLabelsCache.get(VisibilityLabelsCache.java:106)
>> > >
>> > > at
>> > >
>> >
>> org.apache.hadoop.hbase.security.visibility.FeedUserAuthScanLabelGenerator.<init>(FeedUserAuthScanLabelGenerator.java:47)
>> > >
>> > > ... 27 more
>> > >
>> > > then all regionservers exit as the exception.
>> > >
>> > > so I start to check code to find the cause:
>> > >
>> > > At first , I found the place where the exception of "
>> > > java.lang.IllegalStateException: VisibilityLabelsCache not yet
>> > > instantiated" exist.
>> > >
>> > > by this, It turn out to be that the instance of
>> "VisibilityLabelsCache"
>> > > had not yet instantiated when I used it .
>> > >
>> > > Secondly, I continue to find the serial called process:
>> > >
>> > > 1: class: ExpAsStringVisibilityLabelServiceImpl.java method: init()
>> .
>> > >
>> > > public void init(RegionCoprocessorEnvironment e) throws IOException {
>> > >
>> > > this.scanLabelGenerators =
>> > > VisibilityUtils.getScanLabelGenerators(this.conf);
>> > >
>> > > ......
>> > >
>> > > }
>> > >
>> > > }
>> > >
>> > > 2: class: VisibilityUtils method: getScanLabelGenerators()
>> > >
>> > > public static List<ScanLabelGenerator>
>> > > getScanLabelGenerators(Configuration conf) {
>> > >
>> > > String slgClassesCommaSeparated =
>> > > conf.get(VISIBILITY_LABEL_GENERATOR_CLASS);
>> > >
>> > > List<ScanLabelGenerator> slgs = new
>> ArrayList<ScanLabelGenerator>();
>> > >
>> > > if (StringUtils.isNotEmpty(slgClassesCommaSeparated)) {
>> > >
>> > > .......
>> > >
>> > > }
>> > >
>> > > // If no SLG is specified in conf, by default we'll add two SLGs
>> > >
>> > > if (slgs.isEmpty()) {
>> > >
>> > >
>> > >
>> >
>> slgs.add(ReflectionUtils.newInstance(FeedUserAuthScanLabelGenerator.class,
>> > > conf));
>> > >
>> > >
>> > >
>> >
>> slgs.add(ReflectionUtils.newInstance(DefinedSetFilterScanLabelGenerator.class,
>> > > conf));
>> > >
>> > > }
>> > >
>> > > }
>> > >
>> > > 3:class : FeedUserAuthScanLabelGenerator.java constructer
>> > > method: FeedUserAuthScanLabelGenerator()
>> > >
>> > > public FeedUserAuthScanLabelGenerator() {
>> > >
>> > > this.labelsCache = VisibilityLabelsCache.get();
>> > >
>> > > }
>> > >
>> > > finally , I have found that the instance of "VisibilityLabelsCache"
>> had
>> > > never not been inited.
>> > >
>> > > But the default set "DefaultVisibilityLabelServiceImpl" is ok, then I
>> > > compare ExpAsStringVisibilityLabelServiceImpl with
>> > > DefaultVisibilityLabelServiceImpl , I found the default class of "
>> > > DefaultVisibilityLabelServiceImpl " called the method of
>> "createAndGet"
>> > > to instance:
>> > >
>> > > public void init(RegionCoprocessorEnvironment e) throws IOException
>> {
>> > >
>> > > ZooKeeperWatcher zk = e.getRegionServerServices().getZooKeeper();
>> > >
>> > > try {
>> > >
>> > > labelsCache = VisibilityLabelsCache.createAndGet(zk, this.conf);
>> > >
>> > > } catch (IOException ioe) {
>> > >
>> > > LOG.error("Error creating VisibilityLabelsCache", ioe);
>> > >
>> > > throw ioe;
>> > >
>> > > }
>> > >
>> > > this.scanLabelGenerators =
>> > > VisibilityUtils.getScanLabelGenerators(this.conf);
>> > >
>> > > .........
>> > >
>> > > }
>> > >
>> > > So I think the class of "ExpAsStringVisibilityLabelServiceImpl" also
>> lack
>> > > of these codes, then add the method "createAndGet" to the class "
>> > > ExpAsStringVisibilityLabelServiceImpl" and rebuilt it, replace it to
>> the
>> > > my cluster, At last , My cluster is ok .
>> > >
>> > > Next days, I fount this problem exists in 0.98.9. But I found the
>> class
>> > ExpAsStringVisibilityLabelServiceImpl
>> > > is always located in maven project: src/test, So I think it may be
>> in
>> > > test moment.
>> > >
>> > > Is this a bug ? Any comments/suggestions for work around?
>> > >
>> > >
>> > > Thanks all.
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > 来自网易手机号码邮箱了解更多 <http://shouji.163.com>
>> > >
>> >
>>
>
>
Re: the Exception of "VisibilityLabelsCache not yet instantiated"
happen when I set the class "ExpAsStringVisibilityLabelServiceImpl" as
Implement of "VisibilityLabelService".
Posted by Jerry He <je...@gmail.com>.
Hi,
All the default scan label generators uses the VisibilityLabelCache to get
user labels somewhere. But the VisibilityLableCache implementation is for
the DefaultVisibilityLabelServiceImpl mostly.
Even if we add the method createAndGet() for the VisibilityLableCache
to ExpAsStringVisibilityLabelServiceImpl,
it will not work -- the cache is always empty because
ExpAsStringVisibilityLabelServiceImpl does not use it.
We probably need a test SLG like ExpAsStringVisibilitySLG for
ExpAsStringVisibilityLabelServiceImpl?
Jerry
On Mon, Feb 2, 2015 at 9:20 AM, ramkrishna vasudevan <
ramkrishna.s.vasudevan@gmail.com> wrote:
> Hi
>
> Just for confirmation - you are trying to use cell level visibility tags -
> correct? Cell Level ACLs are different from visibility tags.
>
> Coming to ExpAsStringVisibilityLabelServiceImpl - it is currently a test
> implementation and not a real src implementation. The idea for this class
> is to show how the visibility labels can be used without representing them
> as ordinals - which is internally stored in Zookeeper.
>
> Please file a JIRA for the issue that you had specified related to the
> init() API but the reason for this class to be in 'test' is that it is
> purely an example implementation. Also what is your use case? Do you want
> the visibility labels to be stored as Strings rather than ordinals?
>
> The reason why you may need to store as strings rather than ordinals is for
> cases where you two have clusters with replication and you cannot have the
> same set of labels defined in both the clusters.
>
> BTW thanks a lot for reporting this bug/issue.
>
> Regards
> Ram
>
> On Mon, Feb 2, 2015 at 10:21 PM, Ted Yu <yu...@gmail.com> wrote:
>
> > This looks like a bug.
> >
> > Mind filing an issue and attach your patch ?
> >
> > Thanks
> >
> > On Sun, Feb 1, 2015 at 11:13 PM, 15810705424 <15...@163.com>
> wrote:
> >
> > > Hi, all:
> > > Not long ago, I wanted to test Cell-Level ACLs by using tags and
> use
> > > the class "ExpAsStringVisibilityLabelServiceImpl" instead of the
> default
> > > class "DefaultVisibilityLabelServiceImpl". set as fllows in
> > hbase-site.xml.
> > > My HBase version is 0.99.2.
> > > But when I restarted my cluster, the exception happened:
> > >
> > > 2015-01-29 00:32:50,455 ERROR [RS_OPEN_META-asiaB:60030-0]
> > > coprocessor.CoprocessorHost: The coprocessor
> > > org.apache.hadoop.hbase.security.visibility.VisibilityController threw
> > > java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
> > >
> > > java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
> > >
> > > at
> > >
> >
> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.security.visibility.VisibilityUtils.getScanLabelGenerators(VisibilityUtils.java:200)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.security.visibility.ExpAsStringVisibilityLabelServiceImpl.init(ExpAsStringVisibilityLabelServiceImpl.java:335)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.security.visibility.VisibilityController.initVisibilityLabelService(VisibilityController.java:260)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.security.visibility.VisibilityController.postOpen(VisibilityController.java:246)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$2.call(RegionCoprocessorHost.java:346)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1575)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1650)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1607)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.postOpen(RegionCoprocessorHost.java:342)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:797)
> > >
> > > at
> > >
> org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:725)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4797)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4768)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4739)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4695)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4646)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:356)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:126)
> > >
> > > at
> > >
> org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128)
> > >
> > > at
> > >
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > >
> > > at
> > >
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > >
> > > at java.lang.Thread.run(Thread.java:745)
> > >
> > > Caused by: java.lang.reflect.InvocationTargetException
> > >
> > > at
> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > > Method)
> > >
> > > at
> > >
> >
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> > >
> > > at
> > >
> >
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> > >
> > > at
> > java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> > >
> > > at
> > >
> >
> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:129)
> > >
> > > ... 22 more
> > >
> > > Caused by: java.lang.IllegalStateException: VisibilityLabelsCache not
> yet
> > > instantiated
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.security.visibility.VisibilityLabelsCache.get(VisibilityLabelsCache.java:106)
> > >
> > > at
> > >
> >
> org.apache.hadoop.hbase.security.visibility.FeedUserAuthScanLabelGenerator.<init>(FeedUserAuthScanLabelGenerator.java:47)
> > >
> > > ... 27 more
> > >
> > > then all regionservers exit as the exception.
> > >
> > > so I start to check code to find the cause:
> > >
> > > At first , I found the place where the exception of "
> > > java.lang.IllegalStateException: VisibilityLabelsCache not yet
> > > instantiated" exist.
> > >
> > > by this, It turn out to be that the instance of
> "VisibilityLabelsCache"
> > > had not yet instantiated when I used it .
> > >
> > > Secondly, I continue to find the serial called process:
> > >
> > > 1: class: ExpAsStringVisibilityLabelServiceImpl.java method: init() .
> > >
> > > public void init(RegionCoprocessorEnvironment e) throws IOException {
> > >
> > > this.scanLabelGenerators =
> > > VisibilityUtils.getScanLabelGenerators(this.conf);
> > >
> > > ......
> > >
> > > }
> > >
> > > }
> > >
> > > 2: class: VisibilityUtils method: getScanLabelGenerators()
> > >
> > > public static List<ScanLabelGenerator>
> > > getScanLabelGenerators(Configuration conf) {
> > >
> > > String slgClassesCommaSeparated =
> > > conf.get(VISIBILITY_LABEL_GENERATOR_CLASS);
> > >
> > > List<ScanLabelGenerator> slgs = new
> ArrayList<ScanLabelGenerator>();
> > >
> > > if (StringUtils.isNotEmpty(slgClassesCommaSeparated)) {
> > >
> > > .......
> > >
> > > }
> > >
> > > // If no SLG is specified in conf, by default we'll add two SLGs
> > >
> > > if (slgs.isEmpty()) {
> > >
> > >
> > >
> >
> slgs.add(ReflectionUtils.newInstance(FeedUserAuthScanLabelGenerator.class,
> > > conf));
> > >
> > >
> > >
> >
> slgs.add(ReflectionUtils.newInstance(DefinedSetFilterScanLabelGenerator.class,
> > > conf));
> > >
> > > }
> > >
> > > }
> > >
> > > 3:class : FeedUserAuthScanLabelGenerator.java constructer
> > > method: FeedUserAuthScanLabelGenerator()
> > >
> > > public FeedUserAuthScanLabelGenerator() {
> > >
> > > this.labelsCache = VisibilityLabelsCache.get();
> > >
> > > }
> > >
> > > finally , I have found that the instance of "VisibilityLabelsCache"
> had
> > > never not been inited.
> > >
> > > But the default set "DefaultVisibilityLabelServiceImpl" is ok, then I
> > > compare ExpAsStringVisibilityLabelServiceImpl with
> > > DefaultVisibilityLabelServiceImpl , I found the default class of "
> > > DefaultVisibilityLabelServiceImpl " called the method of
> "createAndGet"
> > > to instance:
> > >
> > > public void init(RegionCoprocessorEnvironment e) throws IOException {
> > >
> > > ZooKeeperWatcher zk = e.getRegionServerServices().getZooKeeper();
> > >
> > > try {
> > >
> > > labelsCache = VisibilityLabelsCache.createAndGet(zk, this.conf);
> > >
> > > } catch (IOException ioe) {
> > >
> > > LOG.error("Error creating VisibilityLabelsCache", ioe);
> > >
> > > throw ioe;
> > >
> > > }
> > >
> > > this.scanLabelGenerators =
> > > VisibilityUtils.getScanLabelGenerators(this.conf);
> > >
> > > .........
> > >
> > > }
> > >
> > > So I think the class of "ExpAsStringVisibilityLabelServiceImpl" also
> lack
> > > of these codes, then add the method "createAndGet" to the class "
> > > ExpAsStringVisibilityLabelServiceImpl" and rebuilt it, replace it to
> the
> > > my cluster, At last , My cluster is ok .
> > >
> > > Next days, I fount this problem exists in 0.98.9. But I found the
> class
> > ExpAsStringVisibilityLabelServiceImpl
> > > is always located in maven project: src/test, So I think it may be in
> > > test moment.
> > >
> > > Is this a bug ? Any comments/suggestions for work around?
> > >
> > >
> > > Thanks all.
> > >
> > >
> > >
> > >
> > >
> > > 来自网易手机号码邮箱了解更多 <http://shouji.163.com>
> > >
> >
>
Re: the Exception of "VisibilityLabelsCache not yet instantiated"
happen when I set the class "ExpAsStringVisibilityLabelServiceImpl" as
Implement of "VisibilityLabelService".
Posted by ramkrishna vasudevan <ra...@gmail.com>.
Hi
Just for confirmation - you are trying to use cell level visibility tags -
correct? Cell Level ACLs are different from visibility tags.
Coming to ExpAsStringVisibilityLabelServiceImpl - it is currently a test
implementation and not a real src implementation. The idea for this class
is to show how the visibility labels can be used without representing them
as ordinals - which is internally stored in Zookeeper.
Please file a JIRA for the issue that you had specified related to the
init() API but the reason for this class to be in 'test' is that it is
purely an example implementation. Also what is your use case? Do you want
the visibility labels to be stored as Strings rather than ordinals?
The reason why you may need to store as strings rather than ordinals is for
cases where you two have clusters with replication and you cannot have the
same set of labels defined in both the clusters.
BTW thanks a lot for reporting this bug/issue.
Regards
Ram
On Mon, Feb 2, 2015 at 10:21 PM, Ted Yu <yu...@gmail.com> wrote:
> This looks like a bug.
>
> Mind filing an issue and attach your patch ?
>
> Thanks
>
> On Sun, Feb 1, 2015 at 11:13 PM, 15810705424 <15...@163.com> wrote:
>
> > Hi, all:
> > Not long ago, I wanted to test Cell-Level ACLs by using tags and use
> > the class "ExpAsStringVisibilityLabelServiceImpl" instead of the default
> > class "DefaultVisibilityLabelServiceImpl". set as fllows in
> hbase-site.xml.
> > My HBase version is 0.99.2.
> > But when I restarted my cluster, the exception happened:
> >
> > 2015-01-29 00:32:50,455 ERROR [RS_OPEN_META-asiaB:60030-0]
> > coprocessor.CoprocessorHost: The coprocessor
> > org.apache.hadoop.hbase.security.visibility.VisibilityController threw
> > java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
> >
> > java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
> >
> > at
> >
> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
> >
> > at
> >
> org.apache.hadoop.hbase.security.visibility.VisibilityUtils.getScanLabelGenerators(VisibilityUtils.java:200)
> >
> > at
> >
> org.apache.hadoop.hbase.security.visibility.ExpAsStringVisibilityLabelServiceImpl.init(ExpAsStringVisibilityLabelServiceImpl.java:335)
> >
> > at
> >
> org.apache.hadoop.hbase.security.visibility.VisibilityController.initVisibilityLabelService(VisibilityController.java:260)
> >
> > at
> >
> org.apache.hadoop.hbase.security.visibility.VisibilityController.postOpen(VisibilityController.java:246)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$2.call(RegionCoprocessorHost.java:346)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1575)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1650)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1607)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.postOpen(RegionCoprocessorHost.java:342)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:797)
> >
> > at
> > org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:725)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4797)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4768)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4739)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4695)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4646)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:356)
> >
> > at
> >
> org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:126)
> >
> > at
> > org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128)
> >
> > at
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> >
> > at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> >
> > at java.lang.Thread.run(Thread.java:745)
> >
> > Caused by: java.lang.reflect.InvocationTargetException
> >
> > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > Method)
> >
> > at
> >
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> >
> > at
> >
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> >
> > at
> java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> >
> > at
> >
> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:129)
> >
> > ... 22 more
> >
> > Caused by: java.lang.IllegalStateException: VisibilityLabelsCache not yet
> > instantiated
> >
> > at
> >
> org.apache.hadoop.hbase.security.visibility.VisibilityLabelsCache.get(VisibilityLabelsCache.java:106)
> >
> > at
> >
> org.apache.hadoop.hbase.security.visibility.FeedUserAuthScanLabelGenerator.<init>(FeedUserAuthScanLabelGenerator.java:47)
> >
> > ... 27 more
> >
> > then all regionservers exit as the exception.
> >
> > so I start to check code to find the cause:
> >
> > At first , I found the place where the exception of "
> > java.lang.IllegalStateException: VisibilityLabelsCache not yet
> > instantiated" exist.
> >
> > by this, It turn out to be that the instance of "VisibilityLabelsCache"
> > had not yet instantiated when I used it .
> >
> > Secondly, I continue to find the serial called process:
> >
> > 1: class: ExpAsStringVisibilityLabelServiceImpl.java method: init() .
> >
> > public void init(RegionCoprocessorEnvironment e) throws IOException {
> >
> > this.scanLabelGenerators =
> > VisibilityUtils.getScanLabelGenerators(this.conf);
> >
> > ......
> >
> > }
> >
> > }
> >
> > 2: class: VisibilityUtils method: getScanLabelGenerators()
> >
> > public static List<ScanLabelGenerator>
> > getScanLabelGenerators(Configuration conf) {
> >
> > String slgClassesCommaSeparated =
> > conf.get(VISIBILITY_LABEL_GENERATOR_CLASS);
> >
> > List<ScanLabelGenerator> slgs = new ArrayList<ScanLabelGenerator>();
> >
> > if (StringUtils.isNotEmpty(slgClassesCommaSeparated)) {
> >
> > .......
> >
> > }
> >
> > // If no SLG is specified in conf, by default we'll add two SLGs
> >
> > if (slgs.isEmpty()) {
> >
> >
> >
> slgs.add(ReflectionUtils.newInstance(FeedUserAuthScanLabelGenerator.class,
> > conf));
> >
> >
> >
> slgs.add(ReflectionUtils.newInstance(DefinedSetFilterScanLabelGenerator.class,
> > conf));
> >
> > }
> >
> > }
> >
> > 3:class : FeedUserAuthScanLabelGenerator.java constructer
> > method: FeedUserAuthScanLabelGenerator()
> >
> > public FeedUserAuthScanLabelGenerator() {
> >
> > this.labelsCache = VisibilityLabelsCache.get();
> >
> > }
> >
> > finally , I have found that the instance of "VisibilityLabelsCache" had
> > never not been inited.
> >
> > But the default set "DefaultVisibilityLabelServiceImpl" is ok, then I
> > compare ExpAsStringVisibilityLabelServiceImpl with
> > DefaultVisibilityLabelServiceImpl , I found the default class of "
> > DefaultVisibilityLabelServiceImpl " called the method of "createAndGet"
> > to instance:
> >
> > public void init(RegionCoprocessorEnvironment e) throws IOException {
> >
> > ZooKeeperWatcher zk = e.getRegionServerServices().getZooKeeper();
> >
> > try {
> >
> > labelsCache = VisibilityLabelsCache.createAndGet(zk, this.conf);
> >
> > } catch (IOException ioe) {
> >
> > LOG.error("Error creating VisibilityLabelsCache", ioe);
> >
> > throw ioe;
> >
> > }
> >
> > this.scanLabelGenerators =
> > VisibilityUtils.getScanLabelGenerators(this.conf);
> >
> > .........
> >
> > }
> >
> > So I think the class of "ExpAsStringVisibilityLabelServiceImpl" also lack
> > of these codes, then add the method "createAndGet" to the class "
> > ExpAsStringVisibilityLabelServiceImpl" and rebuilt it, replace it to the
> > my cluster, At last , My cluster is ok .
> >
> > Next days, I fount this problem exists in 0.98.9. But I found the class
> ExpAsStringVisibilityLabelServiceImpl
> > is always located in maven project: src/test, So I think it may be in
> > test moment.
> >
> > Is this a bug ? Any comments/suggestions for work around?
> >
> >
> > Thanks all.
> >
> >
> >
> >
> >
> > 来自网易手机号码邮箱了解更多 <http://shouji.163.com>
> >
>
Re: the Exception of "VisibilityLabelsCache not yet instantiated"
happen when I set the class "ExpAsStringVisibilityLabelServiceImpl" as
Implement of "VisibilityLabelService".
Posted by Ted Yu <yu...@gmail.com>.
This looks like a bug.
Mind filing an issue and attach your patch ?
Thanks
On Sun, Feb 1, 2015 at 11:13 PM, 15810705424 <15...@163.com> wrote:
> Hi, all:
> Not long ago, I wanted to test Cell-Level ACLs by using tags and use
> the class "ExpAsStringVisibilityLabelServiceImpl" instead of the default
> class "DefaultVisibilityLabelServiceImpl". set as fllows in hbase-site.xml.
> My HBase version is 0.99.2.
> But when I restarted my cluster, the exception happened:
>
> 2015-01-29 00:32:50,455 ERROR [RS_OPEN_META-asiaB:60030-0]
> coprocessor.CoprocessorHost: The coprocessor
> org.apache.hadoop.hbase.security.visibility.VisibilityController threw
> java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
>
> java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
>
> at
> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)
>
> at
> org.apache.hadoop.hbase.security.visibility.VisibilityUtils.getScanLabelGenerators(VisibilityUtils.java:200)
>
> at
> org.apache.hadoop.hbase.security.visibility.ExpAsStringVisibilityLabelServiceImpl.init(ExpAsStringVisibilityLabelServiceImpl.java:335)
>
> at
> org.apache.hadoop.hbase.security.visibility.VisibilityController.initVisibilityLabelService(VisibilityController.java:260)
>
> at
> org.apache.hadoop.hbase.security.visibility.VisibilityController.postOpen(VisibilityController.java:246)
>
> at
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$2.call(RegionCoprocessorHost.java:346)
>
> at
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost$RegionOperation.call(RegionCoprocessorHost.java:1575)
>
> at
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1650)
>
> at
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.execOperation(RegionCoprocessorHost.java:1607)
>
> at
> org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost.postOpen(RegionCoprocessorHost.java:342)
>
> at
> org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:797)
>
> at
> org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:725)
>
> at
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4797)
>
> at
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4768)
>
> at
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4739)
>
> at
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4695)
>
> at
> org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:4646)
>
> at
> org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:356)
>
> at
> org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:126)
>
> at
> org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:128)
>
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>
> at java.lang.Thread.run(Thread.java:745)
>
> Caused by: java.lang.reflect.InvocationTargetException
>
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
>
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>
> at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>
> at
> org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:129)
>
> ... 22 more
>
> Caused by: java.lang.IllegalStateException: VisibilityLabelsCache not yet
> instantiated
>
> at
> org.apache.hadoop.hbase.security.visibility.VisibilityLabelsCache.get(VisibilityLabelsCache.java:106)
>
> at
> org.apache.hadoop.hbase.security.visibility.FeedUserAuthScanLabelGenerator.<init>(FeedUserAuthScanLabelGenerator.java:47)
>
> ... 27 more
>
> then all regionservers exit as the exception.
>
> so I start to check code to find the cause:
>
> At first , I found the place where the exception of "
> java.lang.IllegalStateException: VisibilityLabelsCache not yet
> instantiated" exist.
>
> by this, It turn out to be that the instance of "VisibilityLabelsCache"
> had not yet instantiated when I used it .
>
> Secondly, I continue to find the serial called process:
>
> 1: class: ExpAsStringVisibilityLabelServiceImpl.java method: init() .
>
> public void init(RegionCoprocessorEnvironment e) throws IOException {
>
> this.scanLabelGenerators =
> VisibilityUtils.getScanLabelGenerators(this.conf);
>
> ......
>
> }
>
> }
>
> 2: class: VisibilityUtils method: getScanLabelGenerators()
>
> public static List<ScanLabelGenerator>
> getScanLabelGenerators(Configuration conf) {
>
> String slgClassesCommaSeparated =
> conf.get(VISIBILITY_LABEL_GENERATOR_CLASS);
>
> List<ScanLabelGenerator> slgs = new ArrayList<ScanLabelGenerator>();
>
> if (StringUtils.isNotEmpty(slgClassesCommaSeparated)) {
>
> .......
>
> }
>
> // If no SLG is specified in conf, by default we'll add two SLGs
>
> if (slgs.isEmpty()) {
>
>
> slgs.add(ReflectionUtils.newInstance(FeedUserAuthScanLabelGenerator.class,
> conf));
>
>
> slgs.add(ReflectionUtils.newInstance(DefinedSetFilterScanLabelGenerator.class,
> conf));
>
> }
>
> }
>
> 3:class : FeedUserAuthScanLabelGenerator.java constructer
> method: FeedUserAuthScanLabelGenerator()
>
> public FeedUserAuthScanLabelGenerator() {
>
> this.labelsCache = VisibilityLabelsCache.get();
>
> }
>
> finally , I have found that the instance of "VisibilityLabelsCache" had
> never not been inited.
>
> But the default set "DefaultVisibilityLabelServiceImpl" is ok, then I
> compare ExpAsStringVisibilityLabelServiceImpl with
> DefaultVisibilityLabelServiceImpl , I found the default class of "
> DefaultVisibilityLabelServiceImpl " called the method of "createAndGet"
> to instance:
>
> public void init(RegionCoprocessorEnvironment e) throws IOException {
>
> ZooKeeperWatcher zk = e.getRegionServerServices().getZooKeeper();
>
> try {
>
> labelsCache = VisibilityLabelsCache.createAndGet(zk, this.conf);
>
> } catch (IOException ioe) {
>
> LOG.error("Error creating VisibilityLabelsCache", ioe);
>
> throw ioe;
>
> }
>
> this.scanLabelGenerators =
> VisibilityUtils.getScanLabelGenerators(this.conf);
>
> .........
>
> }
>
> So I think the class of "ExpAsStringVisibilityLabelServiceImpl" also lack
> of these codes, then add the method "createAndGet" to the class "
> ExpAsStringVisibilityLabelServiceImpl" and rebuilt it, replace it to the
> my cluster, At last , My cluster is ok .
>
> Next days, I fount this problem exists in 0.98.9. But I found the class ExpAsStringVisibilityLabelServiceImpl
> is always located in maven project: src/test, So I think it may be in
> test moment.
>
> Is this a bug ? Any comments/suggestions for work around?
>
>
> Thanks all.
>
>
>
>
>
> 来自网易手机号码邮箱了解更多 <http://shouji.163.com>
>