vmarc / knooppuntnet

Route planner and quality assurance for walking and cycling networks in OpenStreetMap.
MIT License
31 stars 6 forks source link

KPN crash after loading a wrong reference file #330

Closed pyrog closed 10 months ago

pyrog commented 11 months ago

Hi,

Tried to load a geojson. KPN accept it (didn't check the file extension and/or content).

Now this is impossible to edit the monitor. Display "500 - Internal server error".

vmarc commented 11 months ago

At the moment of uploading the geojson file, the server log contains an error message indicating the parser could not interprete the geojson as a gpx file:

2023-10-21 19:48:20.225 ERROR http-nio-9005-exec-1 [] [dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.] with root cause
org.xml.sax.SAXParseException: Content is not allowed in prolog.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204) ~[?:?]
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:178) ~[?:?]
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[?:?]
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[?:?]
        at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1471) ~[?:?]
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:978) ~[?:?]
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) ~[?:?]
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534) ~[?:?]
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888) ~[?:?]
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824) ~[?:?]
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[?:?]
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216) ~[?:?]
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635) ~[?:?]
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324) ~[?:?]
        at scala.xml.factory.XMLLoader.parse(XMLLoader.scala:73) ~[scala-xml_2.13-2.1.0.jar!/:2.1.0]
        at scala.xml.factory.XMLLoader.loadXML(XMLLoader.scala:54) ~[scala-xml_2.13-2.1.0.jar!/:2.1.0]
        at scala.xml.factory.XMLLoader.loadXML$(XMLLoader.scala:53) ~[scala-xml_2.13-2.1.0.jar!/:2.1.0]
        at scala.xml.XML$.loadXML(XML.scala:62) ~[scala-xml_2.13-2.1.0.jar!/:2.1.0]
        at scala.xml.factory.XMLLoader.load(XMLLoader.scala:85) ~[scala-xml_2.13-2.1.0.jar!/:2.1.0]
        at scala.xml.factory.XMLLoader.load$(XMLLoader.scala:85) ~[scala-xml_2.13-2.1.0.jar!/:2.1.0]
        at scala.xml.XML$.load(XML.scala:62) ~[scala-xml_2.13-2.1.0.jar!/:2.1.0]
        at kpn.server.api.monitor.MonitorController.routeReferenceGpxFileUpload(MonitorController.scala:181) ~[classes!/:4.0.45]

That error should have been properly handled, and not leave an inconsistent route definition in the database, as is the case now. When trying to open the route for edit, following error is written to the server log:

2023-10-21 19:48:44.761 ERROR ttp-nio-9005-exec-10 [] [dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Could not find reference for route "92-PR11" in group "fr-PDIPR"] with root cause
java.lang.IllegalArgumentException: Could not find reference for route "92-PR11" in group "fr-PDIPR"
        at kpn.server.api.monitor.route.MonitorRouteUpdatePageBuilder.build(MonitorRouteUpdatePageBuilder.scala:32) ~[classes!/:4.0.45]
vmarc commented 10 months ago

Fixed in v4.2.2.