Details
-
Type:
Bug
-
Status: Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 1.2.0
-
Fix Version/s: None
-
Labels:
-
Environment:linux
Description
when set hbase.wal.provider to be multiwal ,then set "hbase.wal.regiongrouping.delegate" to multiwal ,it cause endless loop .
getProvider invoke init ,then init invoke getProvider.
public void init(final WALFactory factory, final Configuration conf,
final List<WALActionsListener> listeners, final String providerId) throws IOException {
super.init(factory, conf, listeners, providerId);
// no need to check for and close down old providers; our parent class will throw on re-invoke
delegates = new WALProvider[Math.max(1, conf.getInt(NUM_REGION_GROUPS,
DEFAULT_NUM_REGION_GROUPS))];
for (int i = 0; i < delegates.length; i++) {
delegates[i] = factory.getProvider(DELEGATE_PROVIDER, DEFAULT_DELEGATE_PROVIDER, listeners,
providerId + i);
LOG.info("delegates provider ="+ delegates[i]);
}
WALProvider getProvider(final String key, final String defaultValue,
final List<WALActionsListener> listeners, final String providerId) throws IOException {
Class<? extends WALProvider> clazz;
try
catch (IllegalArgumentException exception)
{ // Fall back to them specifying a class name // Note that the passed default class shouldn't actually be used, since the above only fails // when there is a config value present. clazz = conf.getClass(key, DefaultWALProvider.class, WALProvider.class); } LOG.info("Instantiating WALProvider of type " + clazz);
try {
final WALProvider result = clazz.newInstance();
result.init(this, conf, listeners, providerId);
}
LOG.info("Configured to run with " + delegates.length + " delegate WAL providers.");
}