[
https://issues.apache.org/jira/browse/HDDS-1669?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Elek, Marton updated HDDS-1669:
-------------------------------
Resolution: Fixed
Status: Resolved (was: Patch Available)
> SCM startup is failing if network-topology-default.xml is part of a jar
> -----------------------------------------------------------------------
>
> Key: HDDS-1669
> URL: https://issues.apache.org/jira/browse/HDDS-1669
> Project: Hadoop Distributed Data Store
> Issue Type: Bug
> Reporter: Elek, Marton
> Assignee: Elek, Marton
> Priority: Blocker
> Labels: pull-request-available
> Time Spent: 50m
> Remaining Estimate: 0h
>
> network-topology-default.xml can be loaded from file or classpath. But the
> NodeSchemaLoader assumes that the files on the classpath can be opened as a
> file. It's true if the file is in etc/hadoop (which is part of the classpath)
> but not true if the file is packaged to a jajr file:
> {code}
> scm_1 | 2019-06-11 13:18:03 INFO NodeSchemaLoader:118 - Loading file
> from
> jar:file:/opt/hadoop/share/ozone/lib/hadoop-hdds-common-0.5.0-SNAPSHOT.jar!/network-topology-default.xml
> scm_1 | 2019-06-11 13:18:03 ERROR NodeSchemaManager:74 - Failed to
> load schema file:network-topology-default.xml, error:
> scm_1 | java.lang.IllegalArgumentException: URI is not hierarchical
> scm_1 | at java.io.File.<init>(File.java:418)
> scm_1 | at
> org.apache.hadoop.hdds.scm.net.NodeSchemaLoader.loadSchemaFromFile(NodeSchemaLoader.java:119)
> scm_1 | at
> org.apache.hadoop.hdds.scm.net.NodeSchemaManager.init(NodeSchemaManager.java:67)
> scm_1 | at
> org.apache.hadoop.hdds.scm.net.NetworkTopologyImpl.<init>(NetworkTopologyImpl.java:63)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManager.initializeSystemManagers(StorageContainerManager.java:382)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManager.<init>(StorageContainerManager.java:275)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManager.<init>(StorageContainerManager.java:208)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManager.createSCM(StorageContainerManager.java:586)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManagerStarter$SCMStarterHelper.start(StorageContainerManagerStarter.java:139)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManagerStarter.startScm(StorageContainerManagerStarter.java:115)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManagerStarter.call(StorageContainerManagerStarter.java:67)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManagerStarter.call(StorageContainerManagerStarter.java:42)
> scm_1 | at picocli.CommandLine.execute(CommandLine.java:1173)
> scm_1 | at picocli.CommandLine.access$800(CommandLine.java:141)
> scm_1 | at
> picocli.CommandLine$RunLast.handle(CommandLine.java:1367)
> scm_1 | at
> picocli.CommandLine$RunLast.handle(CommandLine.java:1335)
> scm_1 | at
> picocli.CommandLine$AbstractParseResultHandler.handleParseResult(CommandLine.java:1243)
> scm_1 | at
> picocli.CommandLine.parseWithHandlers(CommandLine.java:1526)
> scm_1 | at
> picocli.CommandLine.parseWithHandler(CommandLine.java:1465)
> scm_1 | at
> org.apache.hadoop.hdds.cli.GenericCli.execute(GenericCli.java:65)
> scm_1 | at
> org.apache.hadoop.hdds.cli.GenericCli.run(GenericCli.java:56)
> scm_1 | at
> org.apache.hadoop.hdds.scm.server.StorageContainerManagerStarter.main(StorageContainerManagerStarter.java:56)
> scm_1 | Failed to load schema file:network-topology-default.xml,
> error:
> {code}
> The quick fix is to keep the current behaviour but read the file from
> classloader.getResourceAsStream() instead of classloader.getResource().toURI()
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]