hbase-2.1.1 balancer 抛出数组越界异常

在shell中执行balancer时抛出如下异常:

1560248662(1).png


1560248860(1).jpg

 
已邀请:

acfun - 90后

赞同来自:

看了hbase的BaseLoadBalancer代码:
int[] removeRegion(int[] regions, int regionIndex) {
int[] newRegions = new int[regions.length - 1];
int i = false;

int i;
for(i = 0; i < regions.length && regions[i] != regionIndex; ++i) {
newRegions[i] = regions[i];
}

System.arraycopy(regions, i + 1, newRegions, i, newRegions.length - i);
return newRegions;
}
这个代码是为了删除region中regionIndex位置的region,但是如果regionIndex > regions.length,这个地方就会报数组越界。
 
这个应该在方法前添加 
if (regionIndex < 0 || regionIndex >= regions.length) {
return regions;
}

 

要回复问题请先登录注册


中国HBase技术社区微信公众号:
hbasegroup

欢迎加入HBase生态+Spark社区钉钉大群