[ 
https://issues.apache.org/jira/browse/SOLR-14653?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Erick Erickson resolved SOLR-14653.
-----------------------------------
    Fix Version/s: 8.7
       Resolution: Fixed

> Replace usages of org.apache.hadoop.fs.Path that are used to construct 
> Zookeeper paths
> --------------------------------------------------------------------------------------
>
>                 Key: SOLR-14653
>                 URL: https://issues.apache.org/jira/browse/SOLR-14653
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Erick Erickson
>            Assignee: Erick Erickson
>            Priority: Major
>             Fix For: 8.7
>
>         Attachments: SOLR-14653.patch
>
>
> See SOLR-13939. We construct Zookeeper paths at least in 
> ShardLeaderElectionContextBase.java by using methods in 
> org.apache.hadoop.fs.Path e.g. "String parent = new 
> Path(leaderPath).getParent().toString()". This works becauseĀ  the Hadoop 
> method uses forward slashes even on Windows machines.
> If those calls are changed to use nio Paths.get or similar, we can't run on 
> Windows. Relying on hdfs classes to construct these paths in code unrelated 
> to HDFS is suspicious at best.
> We should examine all inclusions of org.apache.hadoop.fs.Path and replace 
> them with something else. Uwe suggests java.net.URI as one possibility.
> We should check to see what Zookeeper provides.
> There are 5 files that import org.apache.hadoop... that do _not_ have HDFS in 
> their name, and 4 of those are probably legitimate (SolrSnapshotsTool for 
> instance) so checking all of them won't take long.
> From Uwe's comment in SOLR-13939:
> {quote}"Hi,
>  Windows is happy again. So your fix helped. I responded to mailing list, 
> here again:
> In Zookeeper all paths are forward slashes (as it is a "path" inside the 
> zookeeper environment). If you replace that with a NIO Windows Path it 
> creates backslashes. This makes Zookeeper fail (of course).
> Actually using the Hadoop class is broken workaround, it may be better to use 
> the more abstract java.net.URI class for correct "path" transformations. The 
> risk with java.nio.file.Path is also that if the path exists in file system 
> it handles the resolving different. So if some user has for some reason a 
> local path exactly looking like a zookeper node path it would use different 
> behaviour.
> So my suggestion: Use java.net.URI to build the path and use URI.getPath() or 
> similar to make a String out of it. The alternative to replace all 
> backslashes in the path to forwards slashes is a bad idea for the reasons I 
> explained before.
> Now we should replace the hadoop class IMHO by java.net.URI.
> {quote}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to