Elek, Marton created HDDS-1669: ---------------------------------- Summary: 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
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: hdfs-dev-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org