[ https://issues.apache.org/jira/browse/HBASE-21246?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16659867#comment-16659867 ]
Ted Yu edited comment on HBASE-21246 at 10/23/18 3:33 AM: ---------------------------------------------------------- bq. Why do we have a String constructor anyways? One example usage for the ctor taking String is in {{refreshSources}} method of hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.java : {code} for (SortedSet<String> walsByGroup : walsByIdRecoveredQueues.get(queueId).values()) { walsByGroup.forEach(wal -> src.enqueueLog(this.walProvider.createWALIdentity(wal))); {code} The {{wal}} variable above is the String representation of WAL. In handling failed replication queue(s), for each queue Id, there are Set of WALs represented using String (persisted form on zookeeper). So {{walProvider.createWALIdentity}} call is deserialization from String form of WAL name to WALIdentity. Here is corresponding code from current master branch: {code} walsByGroup.forEach(wal -> src.enqueueLog(new Path(wal))); {code} createWALIdentity() ends up calling FSWALIdentity ctor accepting String when WAL is backed by hdfs. For other WAL provider, different WALIdentity instance would be created. was (Author: yuzhih...@gmail.com): bq. Why do we have a String constructor anyways? One example usage for the ctor taking String is in refreshSources of hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.java : {code} for (SortedSet<String> walsByGroup : walsByIdRecoveredQueues.get(queueId).values()) { walsByGroup.forEach(wal -> src.enqueueLog(this.walProvider.createWALIdentity(wal))); {code} createWALIdentity() ends up calling FSWALIdentity ctor accepting String (when WAL is backed by hdfs). > Introduce WALIdentity interface > ------------------------------- > > Key: HBASE-21246 > URL: https://issues.apache.org/jira/browse/HBASE-21246 > Project: HBase > Issue Type: Sub-task > Reporter: Ted Yu > Assignee: Ted Yu > Priority: Major > Fix For: HBASE-20952 > > Attachments: 21246.003.patch, 21246.HBASE-20952.001.patch, > 21246.HBASE-20952.002.patch, 21246.HBASE-20952.004.patch, > 21246.HBASE-20952.005.patch, 21246.HBASE-20952.007.patch, > 21246.HBASE-20952.008.patch > > > We are introducing WALIdentity interface so that the WAL representation can > be decoupled from distributed filesystem. > The interface provides getName method whose return value can represent > filename in distributed filesystem environment or, the name of the stream > when the WAL is backed by log stream. -- This message was sent by Atlassian JIRA (v7.6.3#76005)