Apache9 commented on a change in pull request #2317:
URL: https://github.com/apache/hbase/pull/2317#discussion_r478162122
##########
File path:
hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java
##########
@@ -290,35 +272,43 @@ public TableDescriptor get(final TableName tablename)
* @see #get(org.apache.hadoop.hbase.TableName)
*/
@Override
- public Map<String, TableDescriptor> getByNamespace(String name)
- throws IOException {
+ public Map<String, TableDescriptor> getByNamespace(String name) throws
IOException {
Map<String, TableDescriptor> htds = new TreeMap<>();
List<Path> tableDirs =
- FSUtils.getLocalTableDirs(fs, CommonFSUtils.getNamespaceDir(rootdir,
name));
- for (Path d: tableDirs) {
- TableDescriptor htd = null;
- try {
- htd = get(CommonFSUtils.getTableName(d));
- } catch (FileNotFoundException fnfe) {
- // inability of retrieving one HTD shouldn't stop getting the remaining
- LOG.warn("Trouble retrieving htd", fnfe);
+ FSUtils.getLocalTableDirs(fs, CommonFSUtils.getNamespaceDir(rootdir,
name));
+ for (Path d : tableDirs) {
+ TableDescriptor htd = get(CommonFSUtils.getTableName(d));
+ if (htd == null) {
+ continue;
}
- if (htd == null) continue;
htds.put(CommonFSUtils.getTableName(d).getNameAsString(), htd);
}
return htds;
}
- /**
- * Adds (or updates) the table descriptor to the FileSystem
- * and updates the local cache with it.
- */
@Override
- public void update(TableDescriptor htd) throws IOException {
+ public void update(TableDescriptor td, boolean cacheOnly) throws IOException
{
Review comment:
In fact this will only be called on master so usecache will always be
true.
I think the root problem here is that, HMaster extends HRegionServer, and
they both uses TableDescriptors, but on HRegionServer it is read only and no
cache. In general, we should make HMaster not extend HRegionServer in the
future, then we could introduce a new ReadOnlyTableDescriptors to be used by
HRegionServer and then a normal FSTableDescriptor for HMaster.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]