Bug: Add unguava implementation for Joiner in hadoop.StringUtils
Status: Patch Available | Priority: Major | Resolution: 
Created: 01/Jul/20 03:39

In order to replace  {{com.google.common.base.Joiner}} with a non-guava implementation:
* Extend implementation of {{org.apache.hadoop.util.StringUtils.join()}} to support interfaces offered by guava and used throughout hadoop source code.
* {{org.apache.hadoop.util.StringUtils.join()}} should have the same behavior as {{guava.Joiner}}. For example, by default it throws NPE if any of the elements is null.
* Another Jira should to be created to do the actual call replacement in 67 source files.  
* Another Jira should be created to do the same for apache.common.stringUtils. We do not want to have different implementations of the same functionality, while each may have different behavior. Also, when we have the implementation of Join, in 1 single source code, we can use apache.commons.StringUtils internally without doing invasive code changes to the entire source code.
 
{code:java}
Targets
    Occurrences of 'com.google.common.base.Joiner' in project with mask '*.java'
Found Occurrences  (103 usages found)
    org.apache.hadoop.crypto.key.kms.server  (1 usage found)
        SimpleKMSAuditLogger.java  (1 usage found)
            26 import com.google.common.base.Joiner;
    org.apache.hadoop.fs  (1 usage found)
        TestPath.java  (1 usage found)
            37 import com.google.common.base.Joiner;
    org.apache.hadoop.fs.s3a  (1 usage found)
        StorageStatisticsTracker.java  (1 usage found)
            25 import com.google.common.base.Joiner;
    org.apache.hadoop.ha  (1 usage found)
        TestHAAdmin.java  (1 usage found)
            34 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs  (8 usages found)
        DFSClient.java  (1 usage found)
            196 import com.google.common.base.Joiner;
        DFSTestUtil.java  (1 usage found)
            76 import com.google.common.base.Joiner;
        DFSUtil.java  (1 usage found)
            108 import com.google.common.base.Joiner;
        DFSUtilClient.java  (1 usage found)
            20 import com.google.common.base.Joiner;
        HAUtil.java  (1 usage found)
            59 import com.google.common.base.Joiner;
        MiniDFSCluster.java  (1 usage found)
            145 import com.google.common.base.Joiner;
        StripedFileTestUtil.java  (1 usage found)
            20 import com.google.common.base.Joiner;
        TestDFSUpgrade.java  (1 usage found)
            53 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.protocol  (1 usage found)
        LayoutFlags.java  (1 usage found)
            26 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.protocolPB  (1 usage found)
        TestPBHelper.java  (1 usage found)
            118 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.qjournal  (1 usage found)
        MiniJournalCluster.java  (1 usage found)
            43 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.qjournal.client  (5 usages found)
        AsyncLoggerSet.java  (1 usage found)
            38 import com.google.common.base.Joiner;
        QuorumCall.java  (1 usage found)
            32 import com.google.common.base.Joiner;
        QuorumException.java  (1 usage found)
            25 import com.google.common.base.Joiner;
        QuorumJournalManager.java  (1 usage found)
            62 import com.google.common.base.Joiner;
        TestQuorumCall.java  (1 usage found)
            29 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.server.blockmanagement  (4 usages found)
        HostSet.java  (1 usage found)
            21 import com.google.common.base.Joiner;
        TestBlockManager.java  (1 usage found)
            20 import com.google.common.base.Joiner;
        TestBlockReportRateLimiting.java  (1 usage found)
            24 import com.google.common.base.Joiner;
        TestPendingDataNodeMessages.java  (1 usage found)
            41 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.server.common  (1 usage found)
        StorageInfo.java  (1 usage found)
            37 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.server.datanode  (7 usages found)
        BlockPoolManager.java  (1 usage found)
            32 import com.google.common.base.Joiner;
        BlockRecoveryWorker.java  (1 usage found)
            21 import com.google.common.base.Joiner;
        BPServiceActor.java  (1 usage found)
            75 import com.google.common.base.Joiner;
        DataNode.java  (1 usage found)
            226 import com.google.common.base.Joiner;
        ShortCircuitRegistry.java  (1 usage found)
            49 import com.google.common.base.Joiner;
        TestDataNodeHotSwapVolumes.java  (1 usage found)
            21 import com.google.common.base.Joiner;
        TestRefreshNamenodes.java  (1 usage found)
            35 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.server.datanode.fsdataset.impl  (1 usage found)
        FsVolumeImpl.java  (1 usage found)
            90 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.server.namenode  (13 usages found)
        FileJournalManager.java  (1 usage found)
            49 import com.google.common.base.Joiner;
        FSDirectory.java  (1 usage found)
            24 import com.google.common.base.Joiner;
        FSEditLogLoader.java  (1 usage found)
            120 import com.google.common.base.Joiner;
        FSEditLogOp.java  (1 usage found)
            141 import com.google.common.base.Joiner;
        FSImage.java  (1 usage found)
            78 import com.google.common.base.Joiner;
        FSImageTestUtil.java  (1 usage found)
            66 import com.google.common.base.Joiner;
        NameNode.java  (1 usage found)
            21 import com.google.common.base.Joiner;
        TestAuditLogAtDebug.java  (1 usage found)
            21 import com.google.common.base.Joiner;
        TestCheckpoint.java  (1 usage found)
            97 import com.google.common.base.Joiner;
        TestFileJournalManager.java  (1 usage found)
            52 import com.google.common.base.Joiner;
        TestNNStorageRetentionFunctional.java  (1 usage found)
            39 import com.google.common.base.Joiner;
        TestNNStorageRetentionManager.java  (1 usage found)
            53 import com.google.common.base.Joiner;
        TestProtectedDirectories.java  (1 usage found)
            21 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.server.namenode.ha  (9 usages found)
        BootstrapStandby.java  (1 usage found)
            73 import com.google.common.base.Joiner;
        HATestUtil.java  (1 usage found)
            41 import com.google.common.base.Joiner;
        TestDelegationTokensWithHA.java  (1 usage found)
            20 import com.google.common.base.Joiner;
        TestDFSUpgradeWithHA.java  (1 usage found)
            56 import com.google.common.base.Joiner;
        TestEditLogsDuringFailover.java  (1 usage found)
            47 import com.google.common.base.Joiner;
        TestFailureOfSharedDir.java  (1 usage found)
            48 import com.google.common.base.Joiner;
        TestHAConfiguration.java  (1 usage found)
            34 import com.google.common.base.Joiner;
        TestObserverReadProxyProvider.java  (1 usage found)
            20 import com.google.common.base.Joiner;
        TestStandbyInProgressTail.java  (1 usage found)
            51 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.server.protocol  (3 usages found)
        BlockECReconstructionCommand.java  (1 usage found)
            20 import com.google.common.base.Joiner;
        BlockRecoveryCommand.java  (1 usage found)
            31 import com.google.common.base.Joiner;
        RemoteEditLogManifest.java  (1 usage found)
            23 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.tools  (5 usages found)
        CacheAdmin.java  (1 usage found)
            47 import com.google.common.base.Joiner;
        DFSAdmin.java  (1 usage found)
            41 import com.google.common.base.Joiner;
        TestDFSHAAdmin.java  (1 usage found)
            52 import com.google.common.base.Joiner;
        TestDFSHAAdminMiniCluster.java  (1 usage found)
            47 import com.google.common.base.Joiner;
        TestGetConf.java  (1 usage found)
            61 import com.google.common.base.Joiner;
    org.apache.hadoop.hdfs.util  (1 usage found)
        TestAtomicFileOutputStream.java  (1 usage found)
            41 import com.google.common.base.Joiner;
    org.apache.hadoop.io.compress  (1 usage found)
        CompressDecompressTester.java  (1 usage found)
            42 import com.google.common.base.Joiner;
    org.apache.hadoop.ipc  (3 usages found)
        ProxyCombiner.java  (1 usage found)
            20 import com.google.common.base.Joiner;
        RefreshRegistry.java  (1 usage found)
            23 import com.google.common.base.Joiner;
        RPCCallBenchmark.java  (1 usage found)
            20 import com.google.common.base.Joiner;
    org.apache.hadoop.mapreduce.counters  (1 usage found)
        FileSystemCounterGroup.java  (1 usage found)
            30 import com.google.common.base.Joiner;
    org.apache.hadoop.mapreduce.jobhistory  (1 usage found)
        JobUnsuccessfulCompletionEvent.java  (1 usage found)
            32 import com.google.common.base.Joiner;
    org.apache.hadoop.mapreduce.v2.app.webapp  (1 usage found)
        AppController.java  (1 usage found)
            44 import com.google.common.base.Joiner;
    org.apache.hadoop.mapreduce.v2.util  (1 usage found)
        MRWebAppUtil.java  (1 usage found)
            20 import com.google.common.base.Joiner;
    org.apache.hadoop.metrics2.impl  (1 usage found)
        MetricsConfig.java  (1 usage found)
            32 import com.google.common.base.Joiner;
    org.apache.hadoop.metrics2.lib  (1 usage found)
        UniqueNames.java  (1 usage found)
            23 import com.google.common.base.Joiner;
    org.apache.hadoop.metrics2.util  (1 usage found)
        SampleQuantiles.java  (1 usage found)
            30 import com.google.common.base.Joiner;
    org.apache.hadoop.security  (1 usage found)
        ShellBasedUnixGroupsMapping.java  (1 usage found)
            27 import com.google.common.base.Joiner;
    org.apache.hadoop.test  (1 usage found)
        GenericTestUtils.java  (1 usage found)
            63 import com.google.common.base.Joiner;
    org.apache.hadoop.tools.dynamometer  (3 usages found)
        ApplicationMaster.java  (1 usage found)
            20 import com.google.common.base.Joiner;
        Client.java  (1 usage found)
            21 import com.google.common.base.Joiner;
        DynoInfraUtils.java  (1 usage found)
            20 import com.google.common.base.Joiner;
    org.apache.hadoop.util  (1 usage found)
        JvmPauseMonitor.java  (1 usage found)
            31 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.applications.distributedshell  (1 usage found)
        Client.java  (1 usage found)
            36 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.client  (1 usage found)
        ClientRMProxy.java  (1 usage found)
            44 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.client.api.impl  (2 usages found)
        AMRMClientImpl.java  (1 usage found)
            83 import com.google.common.base.Joiner;
        TimelineConnector.java  (1 usage found)
            56 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.client.cli  (1 usage found)
        TestNodeAttributesCLI.java  (1 usage found)
            64 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.nodemanager.amrmproxy  (1 usage found)
        DefaultRequestInterceptor.java  (1 usage found)
            25 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources  (1 usage found)
        CGroupsHandlerImpl.java  (1 usage found)
            24 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.nodemanager.health  (2 usages found)
        NodeHealthCheckerService.java  (1 usage found)
            22 import com.google.common.base.Joiner;
        TestNodeHealthCheckerService.java  (1 usage found)
            31 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.resourcemanager.recovery  (1 usage found)
        TestZKRMStateStore.java  (1 usage found)
            74 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.conf  (1 usage found)
        MutableCSConfigurationProvider.java  (1 usage found)
            22 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies  (1 usage found)
        TestDominantResourceFairnessPolicy.java  (1 usage found)
            32 import org.apache.curator.shaded.com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.resourcemanager.webapp  (1 usage found)
        TestRMWebServicesNodes.java  (1 usage found)
            100 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.resourcemanager.webapp.dao  (1 usage found)
        AppInfo.java  (1 usage found)
            54 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.server.webapp  (3 usages found)
        LogServlet.java  (1 usage found)
            22 import com.google.common.base.Joiner;
        LogWebService.java  (1 usage found)
            22 import com.google.common.base.Joiner;
        LogWebServiceUtils.java  (1 usage found)
            21 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.service.webapp  (1 usage found)
        ApiServer.java  (1 usage found)
            20 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.util  (1 usage found)
        StringHelper.java  (1 usage found)
            21 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.webapp.hamlet  (1 usage found)
        HamletImpl.java  (1 usage found)
            21 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.webapp.hamlet2  (1 usage found)
        HamletImpl.java  (1 usage found)
            21 import com.google.common.base.Joiner;
    org.apache.hadoop.yarn.webapp.view  (1 usage found)
        DefaultPage.java  (1 usage found)
            21 import com.google.common.base.Joiner;

{code}