Description
Some users have been complaining about this message:
ERROR org.apache.hadoop.hbase.regionserver.metrics.SchemaMetrics: Inconsistent configuration. Previous configuration for using table name in metrics: true, new configuration: false
The interesting thing is that we see it with default configurations, which made me think that some code path must have been passing the wrong thing. I found that if SchemaConfigured is passed a null Configuration in its constructor that it will then pass null to SchemaMetrics#configureGlobally which will interpret useTableName as being false:
public static void configureGlobally(Configuration conf) { if (conf != null) { final boolean useTableNameNew = conf.getBoolean(SHOW_TABLE_NAME_CONF_KEY, false); setUseTableName(useTableNameNew); } else { setUseTableName(false); } }
It should be set to true since that's the new default, meaning we missed it in HBASE-5671.
I found one code path that passes a null configuration, StoreFile.Reader extends SchemaConfigured and uses the constructor that only passes a Path, so the Configuration is set to null.
I'm planning on just passing true instead of false, fixing the problem for almost everyone (those that disable this feature will get the error message). IMO it's not worth more efforts since it's a 0.94-only problem and it's not actually doing anything bad.
I'm closing both HBASE-10990 and HBASE-10946 as duplicates.